public static void HandleUserBuyYueKa(string userID, int roleID) { if (!GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1)) { GameClient client = GameManager.ClientMgr.FindClient(roleID); LogManager.WriteLog(LogTypes.Error, string.Format("HandleUserBuyYueKa, userid={0}, roleid={1}", userID, roleID), null, true); if (null != client) { LogManager.WriteLog(LogTypes.Error, string.Format("HandleUserBuyYueKa, 玩家在线, 在线的userid={0}, roleid={1}", userID, client.ClientData.RoleID), null, true); Global.ProcessVipLevelUp(client); lock (client.ClientData.YKDetail) { if (client.ClientData.YKDetail.HasYueKa == 0) { DateTime nowDate = TimeUtil.NowDateTime(); client.ClientData.YKDetail.HasYueKa = 1; client.ClientData.YKDetail.BegOffsetDay = Global.GetOffsetDay(nowDate); client.ClientData.YKDetail.EndOffsetDay = client.ClientData.YKDetail.BegOffsetDay + YueKaManager.DAYS_PER_YUE_KA; client.ClientData.YKDetail.CurOffsetDay = Global.GetOffsetDay(nowDate); client.ClientData.YKDetail.AwardInfo = "0"; } else { client.ClientData.YKDetail.EndOffsetDay += YueKaManager.DAYS_PER_YUE_KA; } GameManager.ClientMgr.NotifySelfParamsValueChange(client, RoleCommonUseIntParamsIndexs.YueKaRemainDay, client.ClientData.YKDetail.RemainDayOfYueKa()); YueKaManager._UpdateYKDetail2DB(client, client.ClientData.YKDetail); if (client._IconStateMgr.CheckFuLiYueKaFanLi(client)) { client._IconStateMgr.SendIconStateToClient(client); } } } else { LogManager.WriteLog(LogTypes.Error, string.Format("玩家购买了月卡,但是处理的时候找不到在线角色, UserID={0}, last roldid={1}, 转交给db处理", userID, roleID), null, true); int beginOffsetDay = Global.GetOffsetDay(TimeUtil.NowDateTime()); string strcmd = string.Format("{0}:{1}:{2}", roleID, beginOffsetDay, "YueKaInfo"); string[] dbFields = Global.ExecuteDBCmd(10181, strcmd, 0); if (dbFields == null || dbFields.Length != 1 || dbFields[0] != "0") { LogManager.WriteLog(LogTypes.Error, string.Format("玩家购买了月卡,但是处理的时候找不到在线角色, UserID={0}, last roldid={1}, 转交给db处理时失败了", userID, roleID), null, true); } } } }
public static void CheckValid(GameClient client) { if (!GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1)) { if (client != null) { lock (client.ClientData.YKDetail) { if (client.ClientData.YKDetail.HasYueKa != 0) { int todayOffset = Global.GetOffsetDay(TimeUtil.NowDateTime()); if (todayOffset >= client.ClientData.YKDetail.EndOffsetDay) { client.ClientData.YKDetail.HasYueKa = 0; } else { int curBegOffsetDay = client.ClientData.YKDetail.CurOffsetDay - client.ClientData.YKDetail.AwardInfo.Length + 1; if (todayOffset >= curBegOffsetDay + YueKaManager.DAYS_PER_YUE_KA) { client.ClientData.YKDetail.CurOffsetDay = todayOffset; client.ClientData.YKDetail.AwardInfo = ""; for (int i = curBegOffsetDay + YueKaManager.DAYS_PER_YUE_KA; i <= todayOffset; i++) { YueKaDetail ykdetail2 = client.ClientData.YKDetail; ykdetail2.AwardInfo += "0"; } } else { for (int i = client.ClientData.YKDetail.CurOffsetDay + 1; i <= todayOffset; i++) { YueKaDetail ykdetail3 = client.ClientData.YKDetail; ykdetail3.AwardInfo += "0"; } client.ClientData.YKDetail.CurOffsetDay = todayOffset; } } YueKaManager._UpdateYKDetail2DB(client, client.ClientData.YKDetail); } } } } }
private static YueKaError _GetYueKaAward(GameClient client, int day) { YueKaError result; if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot4Dot1)) { result = YueKaError.YK_CannotAward_HasNotYueKa; } else if (day <= 0 || day > YueKaManager.DAYS_PER_YUE_KA) { result = YueKaError.YK_CannotAward_ParamInvalid; } else { lock (client.ClientData.YKDetail) { if (client.ClientData.YKDetail.HasYueKa == 0) { return(YueKaError.YK_CannotAward_HasNotYueKa); } if (day < client.ClientData.YKDetail.CurDayOfPerYueKa()) { return(YueKaError.YK_CannotAward_DayHasPassed); } if (day > client.ClientData.YKDetail.CurDayOfPerYueKa()) { return(YueKaError.YK_CannotAward_TimeNotReach); } string awardInfo = client.ClientData.YKDetail.AwardInfo; if (awardInfo.Length < day || awardInfo[day - 1] == '1') { return(YueKaError.YK_CannotAward_AlreadyAward); } YueKaAward awardData = null; YueKaManager.AllGoodsDict.TryGetValue(day, out awardData); if (awardData == null) { return(YueKaError.YK_CannotAward_ConfigError); } List <GoodsData> goodsDataList = awardData.GetGoodsByOcc(Global.CalcOriginalOccupationID(client)); if (goodsDataList != null && goodsDataList.Count > 0) { if (!Global.CanAddGoodsNum(client, goodsDataList.Count)) { return(YueKaError.YK_CannotAward_BagNotEnough); } foreach (GoodsData goodsData in goodsDataList) { goodsData.Id = Global.AddGoodsDBCommand_Hook(Global._TCPManager.TcpOutPacketPool, client, goodsData.GoodsID, goodsData.GCount, goodsData.Quality, goodsData.Props, goodsData.Forge_level, goodsData.Binding, 0, goodsData.Jewellist, true, 1, string.Format("第{0}天月卡返利", awardData.Day), false, goodsData.Endtime, goodsData.AddPropIndex, goodsData.BornIndex, goodsData.Lucky, goodsData.Strong, goodsData.ExcellenceInfo, goodsData.AppendPropLev, goodsData.ChangeLifeLevForEquip, true, null, null, "1900-01-01 12:00:00", 0, true); } client.ClientData.AddAwardRecord(RoleAwardMsg.YueKaoAward, goodsDataList, false); } GameManager.ClientMgr.AddUserGold(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, awardData.BindZuanShi, string.Format("第{0}天月卡返利", awardData.Day)); client.ClientData.AddAwardRecord(RoleAwardMsg.YueKaoAward, MoneyTypes.BindYuanBao, awardData.BindZuanShi); GameManager.ClientMgr.NotifyGetAwardMsg(client, RoleAwardMsg.YueKaoAward, ""); client.ClientData.YKDetail.AwardInfo = awardInfo.Substring(0, day - 1) + "1"; YueKaManager._UpdateYKDetail2DB(client, client.ClientData.YKDetail); if (client._IconStateMgr.CheckFuLiYueKaFanLi(client)) { client._IconStateMgr.SendIconStateToClient(client); } } result = YueKaError.YK_Success; } return(result); }