public int HandleAdmireStatue(GameClient client, int toCoupleId, int admireType) { int toDay = TimeUtil.MakeYearMonthDay(TimeUtil.NowDateTime()); MoBaiData MoBaiConfig = null; int result; if (!Data.MoBaiDataInfoList.TryGetValue(2, out MoBaiConfig)) { result = -3; } else if (client.ClientData.ChangeLifeCount < MoBaiConfig.MinZhuanSheng || (client.ClientData.ChangeLifeCount == MoBaiConfig.MinZhuanSheng && client.ClientData.Level < MoBaiConfig.MinLevel)) { result = -19; } else { int maxAdmireNum = MoBaiConfig.AdrationMaxLimit; int hadAdmireCount = this.GetAdmireCount(client, toDay); if (this._Statue != null && this._Statue.IsDivorced != 1 && this._Statue.DbCoupleId > 0 && (client.ClientData.RoleID == this._Statue.Man.RoleId || client.ClientData.RoleID == this._Statue.Wife.RoleId)) { maxAdmireNum += MoBaiConfig.ExtraNumber; } int nVIPLev = client.ClientData.VipLevel; int[] nArrayVIPAdded = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPMoBaiNum", ','); if (nVIPLev > VIPEumValue.VIPENUMVALUE_MAXLEVEL || nArrayVIPAdded.Length < 1) { result = -3; } else { maxAdmireNum += nArrayVIPAdded[nVIPLev]; double awardmuti = 0.0; JieRiMultAwardActivity activity = HuodongCachingMgr.GetJieRiMultAwardActivity(); if (null != activity) { JieRiMultConfig config = activity.GetConfig(12); if (null != config) { awardmuti += config.GetMult(); } } SpecPriorityActivity spAct = HuodongCachingMgr.GetSpecPriorityActivity(); if (null != spAct) { awardmuti += spAct.GetMult(SpecPActivityBuffType.SPABT_Admire); } awardmuti = Math.Max(1.0, awardmuti); maxAdmireNum = (int)((double)maxAdmireNum * awardmuti); if (hadAdmireCount >= maxAdmireNum) { result = -16; } else if (admireType == 1 && Global.GetTotalBindTongQianAndTongQianVal(client) < MoBaiConfig.NeedJinBi) { result = -9; } else if (admireType == 2 && client.ClientData.UserMoney < MoBaiConfig.NeedZuanShi) { result = -10; } else { int ec = TianTiClient.getInstance().CoupleWishAdmire(client.ClientData.RoleID, client.ClientData.ZoneID, admireType, toCoupleId); double nRate = (client.ClientData.ChangeLifeCount == 0) ? 1.0 : Data.ChangeLifeEverydayExpRate[client.ClientData.ChangeLifeCount]; if (admireType == 1) { Global.SubBindTongQianAndTongQian(client, MoBaiConfig.NeedJinBi, "膜拜情侣祝福"); long nExp = (long)(nRate * (double)MoBaiConfig.JinBiExpAward); if (nExp > 0L) { GameManager.ClientMgr.ProcessRoleExperience(client, nExp, true, true, false, "none"); } if (MoBaiConfig.JinBiZhanGongAward > 0) { GameManager.ClientMgr.AddBangGong(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, ref MoBaiConfig.JinBiZhanGongAward, AddBangGongTypes.CoupleWishMoBai, 0); } if (MoBaiConfig.LingJingAwardByJinBi > 0) { GameManager.ClientMgr.ModifyMUMoHeValue(client, MoBaiConfig.LingJingAwardByJinBi, "膜拜情侣祝福", true, true, false); } } if (admireType == 2) { GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, MoBaiConfig.NeedZuanShi, "膜拜情侣祝福", true, true, false, DaiBiSySType.None); int nExp2 = (int)(nRate * (double)MoBaiConfig.ZuanShiExpAward); if (nExp2 > 0) { GameManager.ClientMgr.ProcessRoleExperience(client, (long)nExp2, true, true, false, "none"); } if (MoBaiConfig.ZuanShiZhanGongAward > 0) { GameManager.ClientMgr.AddBangGong(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, ref MoBaiConfig.ZuanShiZhanGongAward, AddBangGongTypes.CoupleWishMoBai, 0); } if (MoBaiConfig.LingJingAwardByZuanShi > 0) { GameManager.ClientMgr.ModifyMUMoHeValue(client, MoBaiConfig.LingJingAwardByZuanShi, "膜拜情侣祝福", true, true, false); } } this.AddAdmireCount(client, toDay, toCoupleId, 1); if (this._Statue != null && this._Statue.DbCoupleId > 0 && this._Statue.DbCoupleId == toCoupleId) { this._Statue.BeAdmireCount++; } result = 1; } } } return(result); }
/// <summary> /// 膜拜雕像 /// </summary> /// <param name="client"></param> /// <param name="toCoupleId"></param> /// <param name="admireType"></param> /// <returns></returns> public int HandleAdmireStatue(GameClient client, int toCoupleId, int admireType) { int toDay = TimeUtil.MakeYearMonthDay(TimeUtil.NowDateTime()); string strcmd = ""; MoBaiData MoBaiConfig = null; if (!Data.MoBaiDataInfoList.TryGetValue((int)MoBaiTypes.CoupleWish, out MoBaiConfig)) { return(StdErrorCode.Error_Config_Fault); } if (client.ClientData.ChangeLifeCount < MoBaiConfig.MinZhuanSheng || (client.ClientData.ChangeLifeCount == MoBaiConfig.MinZhuanSheng && client.ClientData.Level < MoBaiConfig.MinLevel)) { return(StdErrorCode.Error_Level_Limit); } // 不管有没有雕像都可以膜拜 // if (this._Statue == null || this._Statue.DbCoupleId != toCoupleId // || this._Statue.ManRoleDataEx == null || this._Statue.WifeRoleDataEx == null) // return StdErrorCode.Error_Operation_Denied; int maxAdmireNum = MoBaiConfig.AdrationMaxLimit; int hadAdmireCount = GetAdmireCount(client, toDay); if (this._Statue != null && this._Statue.IsDivorced != 1 && this._Statue.DbCoupleId > 0 && (client.ClientData.RoleID == this._Statue.Man.RoleId || client.ClientData.RoleID == this._Statue.Wife.RoleId)) { // 玩家未离婚,且是雕像情侣有额外次数 maxAdmireNum += MoBaiConfig.ExtraNumber; } // 玩家是VIP 有额外的次数 int nVIPLev = client.ClientData.VipLevel; int[] nArrayVIPAdded = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPMoBaiNum"); if (nVIPLev > (int)VIPEumValue.VIPENUMVALUE_MAXLEVEL || (nArrayVIPAdded.Length > 13 || nArrayVIPAdded.Length < 1)) { return(StdErrorCode.Error_Config_Fault); } maxAdmireNum += nArrayVIPAdded[nVIPLev]; // 节日活动多倍 JieRiMultAwardActivity activity = HuodongCachingMgr.GetJieRiMultAwardActivity(); JieRiMultConfig config = activity != null?activity.GetConfig((int)MultActivityType.DiaoXiangCount) : null; if (null != config) { maxAdmireNum = maxAdmireNum * ((int)config.GetMult() + 1) /*做倍数处理的时候减了1*/; } // 膜拜次数达到上限 if (hadAdmireCount >= maxAdmireNum) { return(StdErrorCode.Error_No_Residue_Degree); } // 金币膜拜 if (admireType == 1 && Global.GetTotalBindTongQianAndTongQianVal(client) < MoBaiConfig.NeedJinBi) { return(StdErrorCode.Error_JinBi_Not_Enough); } // 钻石膜拜 if (admireType == 2 && client.ClientData.UserMoney < MoBaiConfig.NeedZuanShi) { return(StdErrorCode.Error_ZuanShi_Not_Enough); } int ec = TianTiClient.getInstance().CoupleWishAdmire(client.ClientData.RoleID, client.ClientData.ZoneID, admireType, toCoupleId); //if (ec < 0) return ec; double nRate = client.ClientData.ChangeLifeCount == 0 ? 1 : Data.ChangeLifeEverydayExpRate[client.ClientData.ChangeLifeCount]; if (admireType == 1) { Global.SubBindTongQianAndTongQian(client, MoBaiConfig.NeedJinBi, "膜拜情侣祝福"); // 配置值*转生倍率 int nExp = (int)(nRate * MoBaiConfig.JinBiExpAward); if (nExp > 0) { GameManager.ClientMgr.ProcessRoleExperience(client, nExp, true); } // 战功 if (MoBaiConfig.JinBiZhanGongAward > 0) { GameManager.ClientMgr.AddBangGong(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, ref MoBaiConfig.JinBiZhanGongAward, AddBangGongTypes.CoupleWishMoBai); } if (MoBaiConfig.LingJingAwardByJinBi > 0) { GameManager.ClientMgr.ModifyMUMoHeValue(client, MoBaiConfig.LingJingAwardByJinBi, "膜拜情侣祝福", true, true); } } if (admireType == 2) { GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, MoBaiConfig.NeedZuanShi, "膜拜情侣祝福"); // 配置值*转生倍率 int nExp = (int)(nRate * MoBaiConfig.ZuanShiExpAward); if (nExp > 0) { GameManager.ClientMgr.ProcessRoleExperience(client, nExp, true); } // 战功 if (MoBaiConfig.ZuanShiZhanGongAward > 0) { GameManager.ClientMgr.AddBangGong(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, ref MoBaiConfig.ZuanShiZhanGongAward, AddBangGongTypes.CoupleWishMoBai); } if (MoBaiConfig.LingJingAwardByZuanShi > 0) { GameManager.ClientMgr.ModifyMUMoHeValue(client, MoBaiConfig.LingJingAwardByZuanShi, "膜拜情侣祝福", true, true); } } AddAdmireCount(client, toDay, toCoupleId); if (this._Statue != null && this._Statue.DbCoupleId > 0 && this._Statue.DbCoupleId == toCoupleId) { this._Statue.BeAdmireCount++; // 先手工临时加1次,让本服膜拜的人立即看到, 等一会会自动从中心同步过来 } return(StdErrorCode.Error_Success); }