/// <summary> /// 触发充值礼包 /// </summary> public static void TriggerReceivePack(string userID, int packType, int gameCoin) { PackageReceive receive = new PackageReceive(); List <RechargePacks> rechargePackseArray = new ConfigCacheSet <RechargePacks>().FindAll(m => m.PacksType == packType); foreach (RechargePacks rechargePackse in rechargePackseArray) { if (rechargePackse.RechargeNum <= gameCoin) { receive.ReceiveID = Guid.NewGuid().ToString(); receive.PacksID = rechargePackse.PacksID; receive.UserID = userID; receive.IsReceive = false; receive.ReceiveDate = DateTime.Now; new GameDataCacheSet <PackageReceive>().Add(receive); } } }
public static void TriggerMonthPack(string userID, int gameCoin) { int packType = 4; List <RechargePacks> rechargePackseArray = new ShareCacheStruct <RechargePacks>().FindAll(m => m.PacksType == packType); foreach (RechargePacks rechargePackse in rechargePackseArray) { if (rechargePackse.RechargeNum <= gameCoin) { List <PackageReceive> packageReceivess = new PersonalCacheStruct <PackageReceive>().FindAll(userID, m => m.PacksID == rechargePackse.PacksID); if (packageReceivess.Count == 0) { PackageReceive receive = new PackageReceive(); receive.ReceiveID = Guid.NewGuid().ToString(); receive.PacksID = rechargePackse.PacksID; receive.UserID = userID; receive.IsReceive = false; receive.ReceiveDate = DateTime.Now; new PersonalCacheStruct <PackageReceive>().Add(receive); } else if (!IsHaveMonth(packageReceivess)) { PackageReceive receive = packageReceivess[0]; if (receive.IsReceive) { receive.IsReceive = false; receive.ReceiveDate = DateTime.Now; //receive.Update(); } var cacheSet = new PersonalCacheStruct <PackageReceive>(); for (int i = 1; i <= packageReceivess.Count - 1; i++) { cacheSet.Delete(packageReceivess[i]); } } } } }
/// <summary> /// 触发充值礼包 /// </summary> public static void TriggerReceivePack(string userID, int packType, int gameCoin) { List <RechargePacks> rechargePackseArray = new ShareCacheStruct <RechargePacks>().FindAll(m => m.PacksType == packType); foreach (RechargePacks rechargePackse in rechargePackseArray) { List <PackageReceive> packageReceivess = new PersonalCacheStruct <PackageReceive>().FindAll(userID, m => m.PacksID == rechargePackse.PacksID); if (packageReceivess.Count == 0) { if (rechargePackse.RechargeNum <= gameCoin) { PackageReceive receive = new PackageReceive(); receive.ReceiveID = Guid.NewGuid().ToString(); receive.PacksID = rechargePackse.PacksID; receive.UserID = userID; receive.IsReceive = false; receive.ReceiveDate = DateTime.Now; new PersonalCacheStruct <PackageReceive>().Add(receive); } } } }
public static void TriggerWeekPack(string userID, int gameCoin) { int packType = 3; List <RechargePacks> rechargePackseArray = new ConfigCacheSet <RechargePacks>().FindAll(m => m.PacksType == packType); foreach (RechargePacks rechargePackse in rechargePackseArray) { if (rechargePackse.RechargeNum <= gameCoin) { var packCacheSet = new GameDataCacheSet <PackageReceive>(); List <PackageReceive> packageReceivess = packCacheSet.FindAll(userID, m => m.PacksID == rechargePackse.PacksID); if (packageReceivess.Count == 0) { PackageReceive receive = new PackageReceive(); receive.ReceiveID = Guid.NewGuid().ToString(); receive.PacksID = rechargePackse.PacksID; receive.UserID = userID; receive.IsReceive = false; receive.ReceiveDate = DateTime.Now; packCacheSet.Add(receive, GameEnvironment.CacheUserPeriod); } else if (!IsHaveWeek(packageReceivess)) { PackageReceive receive = packageReceivess[0]; if (receive.IsReceive) { receive.IsReceive = false; receive.ReceiveDate = DateTime.Now; //receive.Update(); } for (int i = 1; i <= packageReceivess.Count - 1; i++) { packCacheSet.Delete(packageReceivess[i]); } } } } }
public override bool TakeAction() { //判断充值礼包是否开启 FestivalInfo festivalInfo = new ShareCacheStruct <FestivalInfo>().FindKey(festivalID); if (festivalInfo != null && !festivalInfo.IsStop) { return(false); } UserRecharge recharges = new GameDataCacheSet <UserRecharge>().FindKey(ContextUser.UserID); RechargePacks rePacksInfo = new ConfigCacheSet <RechargePacks>().FindKey(_packsID); List <PackageReward> rewardArray = new List <PackageReward>(); if (rePacksInfo != null) { rewardArray = rePacksInfo.Reward.ToList(); var userItemArray = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao); int subPackNum = MathUtils.Subtraction(ContextUser.GridNum, userItemArray.Count, 0); if (rewardArray.Count > subPackNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1606_GridNumNotEnough; return(false); } } else { return(false); } if (!isRecevies(ContextUser.UserID, _packsID)) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St9003_AlreadyReceived; return(false); } List <PackageReceive> receiveArray = new GameDataCacheSet <PackageReceive>().FindAll(ContextUser.UserID, m => m.PacksID == _packsID); bool isRece = false; PackageReceive pReceive = null; foreach (PackageReceive receive in receiveArray) { if (!receive.IsReceive) { isRece = true; receive.IsReceive = true; pReceive = receive; break; } } if (pReceive == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St9003_AlreadyReceived; return(false); } pReceive.IsReceive = true; pReceive.ReceiveDate = DateTime.Now; //pReceive.Update(); if (pReceive.PacksType == 1 && recharges != null && isRece) { int totalPay = (int)(recharges.FirstNum * rePacksInfo.ProportionNum); if (totalPay >= 1) { ContextUser.ItemGold = MathUtils.Addition(ContextUser.ItemGold, totalPay, int.MaxValue); //ContextUser.Update(); } //ContextUser.PayGold = ContextUser.PayGold.Addition(recharges.FirstNum, int.MaxValue); foreach (PackageReward reward in rewardArray) { UserItemHelper.AddUserItem(ContextUser.UserID, reward.Num, 1); } } else if (recharges != null && isRece) { foreach (PackageReward reward in rewardArray) { if (reward.Type == 2) { ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, reward.Num, int.MaxValue); } else if (reward.Type == 3) { ContextUser.ExpNum = MathUtils.Addition(ContextUser.ExpNum, reward.Num, int.MaxValue); } else if (reward.Type == 4) { ContextUser.ObtainNum = MathUtils.Addition(ContextUser.ObtainNum, reward.Num, int.MaxValue); } else if (reward.Type == 5) { ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, reward.Num.ToShort(), short.MaxValue); } else if (reward.Type == 6) { GameUserExtend extend = ContextUser.UserExtend; extend.GainBlessing = MathUtils.Addition(extend.GainBlessing, reward.Num, int.MaxValue); //List<GuildMember> memberArray = new ShareCacheStruct<GuildMember>().FindAll(m => m.UserID == ContextUser.UserID); //if (memberArray.Length > 0) //{ // memberArray[0].GainBlessing = memberArray[0].GainBlessing.Addition(reward.Num, int.MaxValue); // memberArray[0].Update(); //} } //ContextUser.Update(); } } PackageReceiveLog receiveLog = new PackageReceiveLog() { LogID = Guid.NewGuid().ToString(), ReceiveID = receiveArray[0].ReceiveID, PacksID = _packsID, UserID = ContextUser.UserID, ReceiveDate = DateTime.Now, }; var sender = DataSyncManager.GetDataSender(); sender.Send(receiveLog); return(true); }