public override void BuildPacket() { PushIntoStack(_pageCount); PushIntoStack(ContextUser.GameCoin); PushIntoStack(ContextUser.GoldNum); PushIntoStack(_mallItemsInfoArray.Count); foreach (MallItemsInfo mallItems in _mallItemsInfoArray) { ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(mallItems.ItemID); int mallPrice = 0; int specilPrice = 0; if (itemInfo != null) { mallPrice = mallItems.Price; if (mallItems.MallType == ShopType.Props || mallItems.MallType == ShopType.PresendBox) { mallPrice = (FestivalHelper.StoreDiscount() * mallPrice).ToInt(); } specilPrice = mallItems.SpecialPrice; } DataStruct dsItem = new DataStruct(); dsItem.PushIntoStack(mallItems.ItemID); dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString()); dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString()); dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.MaxHeadID.ToNotNullString()); dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemDesc.ToNotNullString()); dsItem.PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : (short)itemInfo.QualityType); dsItem.PushIntoStack(mallPrice); dsItem.PushIntoStack(specilPrice); dsItem.PushIntoStack(mallItems.SeqNO); dsItem.PushIntoStack((short)_commandType); PushIntoStack(dsItem); } PushIntoStack(ContextUser.ObtainNum); }
public override bool TakeAction() { PlantType pType = (PlantType)Enum.Parse(typeof(PlantType), plantType.ToString()); UserPlantQuality userPlantQuality = new GameDataCacheSet <UserPlantQuality>().FindKey(ContextUser.UserID, generalID, pType); if (userPlantQuality != null) { plantQualityType = (short)userPlantQuality.PlantQuality; } else { UserPlantQuality plant = new UserPlantQuality() { UserID = ContextUser.UserID, GeneralID = generalID, PlantQuality = PlantQualityType.PuTong, PlantType = pType, RefreshNum = 0, RefreshDate = DateTime.Now, }; new GameDataCacheSet <UserPlantQuality>().Add(plant); plantQualityType = 1; } PlantQualityType qualityType = (PlantQualityType)Enum.Parse(typeof(PlantQualityType), plantQualityType.ToString()); short generalLv = 0; userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(ContextUser.UserID, generalID); if (userGeneral == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } if (pType == PlantType.Experience) { generalLv = ContextUser.UserLv; } else if (pType == PlantType.GameGoin) { generalLv = userGeneral.GeneralLv; } plantInfo = new ConfigCacheSet <PlantInfo>().FindKey(generalLv, plantType, qualityType); double addNum = FestivalHelper.SurplusPurchased(ContextUser.UserID, FestivalType.ManorAddition);//活动加成 rewardNum = plantInfo.GainNum; UserLand land = new GameDataCacheSet <UserLand>().FindKey(ContextUser.UserID, landPostion); if (land != null && land.IsRedLand == 1) { rewardNum = MathUtils.Addition(rewardNum, (int)(rewardNum * 0.2), int.MaxValue); } if (land != null && land.IsBlackLand == 1) { rewardNum = MathUtils.Addition(rewardNum, (int)(rewardNum * 0.4), int.MaxValue); } rewardNum = (rewardNum * addNum).ToInt(); return(true); }
public override bool TakeAction() { short currMaxLv = ConfigEnvSet.GetInt("User.CurrMaxLv").ToShort(); //NoviceHelper.CheckFestival(ContextUser); NoviceHelper.GetFunctionEnum(Uid); //默认开启金币,精力大作战功能 if (!string.IsNullOrEmpty(ContextUser.MercenariesID)) { UserHelper.ChecheDailyContribution(ContextUser.MercenariesID, ContextUser.UserID); } PaymentService.Trigger(ContextUser); if (ContextUser.UserLv > currMaxLv) { genlv = currMaxLv; } else { genlv = ContextUser.UserLv; } var cacheSetGeneralEscalate = new ConfigCacheSet <GeneralEscalateInfo>(); GeneralEscalateHelper.AddUserLv(ContextUser, 0); _honourNum = ContextUser.HonourNum; int lv = ContextUser.UserLv; lv = lv < 0 ? 1 : lv + 1; var generalEscalate = cacheSetGeneralEscalate.Find(s => s.GeneralType == GeneralType.YongHu && s.GeneralLv == lv); if (generalEscalate != null) { _nextHonourNum = generalEscalate.UpExperience; } guildID = ContextUser.MercenariesID; var userGeneralList = new GameDataCacheSet <UserGeneral>().FindAll(ContextUser.UserID); if (userGeneralList.Count == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } userGeneralInfo = userGeneralList[0]; //UserGeneral.GetMainGeneral(ContextUser.UserID); if (userGeneralInfo != null) { //wuzf 去掉刷新血量,其它改变血量接口有触发刷新 //userGeneralInfo.RefreshMaxLife(); generalID = userGeneralInfo.GeneralID; //careerInfo = new ConfigCacheSet<CareerInfo>().FindKey(userGeneralInfo.CareerID); headID = userGeneralInfo.HeadID; //ContextUser.Sex ? careerInfo.HeadID2 : careerInfo.HeadID; escalateInfo = new ConfigCacheSet <GeneralEscalateInfo>().FindKey(genlv); lifeNum = userGeneralInfo.LifeNum; careerID = userGeneralInfo.CareerID; } lifeMaxNum = UserHelper.GetMaxLife(ContextUser.UserID, generalID); maxEnergyNum = (short)ConfigEnvSet.GetInt("User.MaxEnergyNum"); sex = ContextUser.Sex ? 1 : 0; //道具图标 _blessingList = UserHelper.BlessingInfoList(ContextUser); //变身卡图标 List <UserProps> userPropsList = new GameDataCacheSet <UserProps>().FindAll(ContextUser.UserID, u => u.PropType == 3 && u.ItemID != 5200 && u.ItemID != 7003); if (userPropsList.Count > 0) { UserProps props = userPropsList[0]; int pTime = props.DoRefresh(); ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(props.ItemID); if (itemInfo != null && pTime > pictureTime) { pictureID = itemInfo.PictrueID; pictureTime = pTime; } } //兼容客户端上已版本血量图标 List <UserProps> userPropsList2 = new GameDataCacheSet <UserProps>().FindAll(ContextUser.UserID, u => u.PropType == 1); if (userPropsList2.Count > 0) { UserProps props = userPropsList2[0]; int pTime = props.DoRefresh(); ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(props.ItemID); if (itemInfo != null && pTime > pictureTime) { _itemLiveNum = props.SurplusNum; _itemLiveMaxNum = itemInfo.EffectNum; } } //加量,领土战不能加血wuzf) if (ContextUser.UserStatus != UserStatus.CountryCombat) { UserHelper.GetGeneralLife(ContextUser.UserID); } //精力恢复 List <UserQueue> energyQueueArray = new GameDataCacheSet <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.EnergyHuiFu); if (energyQueueArray.Count > 0) { UserQueue energyQueue = energyQueueArray[0]; short energyMaxNum = (short)ConfigEnvSet.GetInt("User.MaxEnergyNum"); int restorationDate = ConfigEnvSet.GetInt("UserQueue.EnergyRestorationDate"); //半小时 int restorationNum = ConfigEnvSet.GetInt("UserQueue.EnergyRestorationNum"); //恢复5点 if (energyQueue.Timing > DateTime.Now) { energyQueue.Timing = DateTime.Now; } //原因:玩家满精力时,精力恢复累加 int timeCount = (int)(DateTime.Now - energyQueue.Timing).TotalSeconds / restorationDate; if (timeCount > 0) { short energyNum = (short)(timeCount * restorationNum); if (ContextUser.EnergyNum < energyMaxNum) { ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, energyNum, energyMaxNum); } energyQueue.Timing = DateTime.Now; } else { if (energyMaxNum > ContextUser.EnergyNum) { rstore = (int)(energyQueue.Timing.AddSeconds(restorationDate) - DateTime.Now).TotalSeconds; totalRstore = (energyQueue.Timing.AddSeconds((energyMaxNum - ContextUser.EnergyNum) * restorationDate) - DateTime.Now).TotalSeconds.ToInt(); } } } else { UserQueue queue = new UserQueue() { QueueID = Guid.NewGuid().ToString(), UserID = ContextUser.UserID, QueueType = QueueType.EnergyHuiFu, QueueName = QueueType.EnergyHuiFu.ToString(), Timing = DateTime.Now, ColdTime = 0, TotalColdTime = 0, IsSuspend = false, StrengNum = 0 }; new GameDataCacheSet <UserQueue>().Add(queue, GameEnvironment.CacheUserPeriod); } VipLvInfo lvInfo = new ConfigCacheSet <VipLvInfo>().FindKey(MathUtils.Addition(ContextUser.VipLv, 1, int.MaxValue)); if (lvInfo != null) { demandGold = MathUtils.Subtraction(lvInfo.PayGold, ContextUser.PayGold, 0); demandGold = MathUtils.Subtraction(demandGold, ContextUser.ExtGold, 0); } UserHelper.GetGameUserCombat(ContextUser.UserID); if ((int)(DateTime.Now - ContextUser.DailyLoginTime).TotalSeconds <= 5 && ContextUser.UserLv > 10) { isHelper = 1; } FestivalHelper.DoFestival(ContextUser); if (ContextUser.UserExtend != null) { if ((plotstatucID > 0 || ContextUser.TempEnergyNum == 0) && !ContextUser.UserExtend.IsBoss) { ContextUser.TempEnergyNum = 1; } if ((plotstatucID == 0 && ContextUser.TempEnergyNum == 0) || ContextUser.UserExtend.IsBoss) { ContextUser.UserExtend.UpdateNotify(obj => { ContextUser.UserExtend.PlotStatusID = 0; ContextUser.UserExtend.PlotNpcID = -1; ContextUser.UserExtend.MercenarySeq = 0; ContextUser.UserExtend.IsBoss = false; return(true); }); } plotstatucID = ContextUser.UserExtend.PlotStatusID; mercenarySeq = ContextUser.UserExtend.MercenarySeq; cardUserID = ContextUser.UserExtend.CardUserID; } //公会晨练结束,退出公会晨练 int activeID = 11; GameActive active = new ShareCacheStruct <GameActive>().FindKey(activeID); if (active != null) { DateTime stratTime = active.BeginTime; DateTime endTime = active.BeginTime.AddMinutes(active.Minutes); if (ContextUser.UserLocation == Location.GuildExercise && (DateTime.Now < stratTime || DateTime.Now > endTime)) { ContextUser.UserLocation = Location.Guid; } } DateTime nextDate; FightStage stage = GuildFightCombat.GetStage(out nextDate); //公会战结束后 if (stage == FightStage.Apply && ContextUser.UserStatus == UserStatus.FightCombat) { ContextUser.UserStatus = UserStatus.Normal; } battleNum = EmbattleHelper.CurrEmbattle(ContextUser.UserID, true).Count; totalBattle = EmbattleHelper.CurrEmbattle(ContextUser.UserID, false).Count; var userEmbattleList = EmbattleHelper.CurrEmbattle(ContextUser.UserID, true); foreach (var userEmbattle in userEmbattleList) { _talPriority = MathUtils.Addition(_talPriority, PriorityHelper.GeneralTotalPriority(ContextUser.UserID, userEmbattle.GeneralID)); } functionList = new GameDataCacheSet <UserFunction>().FindAll(ContextUser.UserID); // 精灵祝福 if (ContextUser != null) { if (MathUtils.SqlMinDate == ContextUser.WizardDate) // 玩家第一次进入 { ContextUser.WizardDate = DateTime.Now; ContextUser.WizardNum = 1; } else { double diffHours = (DateTime.Now - ContextUser.WizardDate).TotalHours; if (diffHours >= 1) { ContextUser.WizardNum = MathUtils.Addition(ContextUser.WizardNum, Convert.ToInt32(diffHours), 3); ContextUser.WizardDate = DateTime.Now; } } } // 未读信件的数量 TjxMailService tjxMailService = new TjxMailService(ContextUser); tjxMailService.GetMail(out unReadCount); return(true); }
public override bool TakeAction() { minusNum = (decimal)FestivalHelper.TortoiseHare(ContextUser.UserID); petList = new ShareCacheStruct <PetInfo>().FindAll(); return(true); }
public override bool TakeAction() { int energyNum = ConfigEnvSet.GetInt("User.EnergyNum"); UserHelper.ChechDailyRestrain(ContextUser.UserID); var cacheSet = new PersonalCacheStruct <UserDailyRestrain>(); double addNum = FestivalHelper.SurplusPurchased(ContextUser.UserID, FestivalType.PurchasedEnergy);//活动加成 int payNum = FestivalHelper.SurplusEnergyNum(ContextUser.UserID); UserDailyRestrain userRestrain = cacheSet.FindKey(ContextUser.UserID); if (payNum == 0) { if (userRestrain != null && DateTime.Now.Date != userRestrain.RefreshDate.Date) { userRestrain.Funtion4 = 0; } if (userRestrain != null && userRestrain.Funtion4 >= VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.GouMaiJingLi) && DateTime.Now.Date == userRestrain.RefreshDate.Date) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St1010_JingliFull; return(false); } } int useGold = (GetPayEnergyGold(ContextUser.UserID, ContextUser.VipLv, payType) * addNum).ToInt(); if (payType == 1) { if (ops == 1) { this.ErrorCode = 1; this.ErrorInfo = string.Format(LanguageManager.GetLang().St1010_PayEnergyUseGold, useGold, energyNum); return(false); } else if (ops == 2) { if (ContextUser.GoldNum < useGold) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold, int.MaxValue); ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, GetEnergyNum(ContextUser.UserID, ContextUser.VipLv, payType), short.MaxValue); if (payNum == 0) { if (userRestrain != null) { userRestrain.Funtion4 = MathUtils.Addition(userRestrain.Funtion4, 1, int.MaxValue); } else { userRestrain = new UserDailyRestrain(); userRestrain.UserID = ContextUser.UserID; userRestrain.RefreshDate = DateTime.Now; userRestrain.Funtion4 = 1; cacheSet.Add(userRestrain); } } UserLogHelper.AppenUseGoldLog(ContextUser.UserID, 1, 0, userRestrain.Funtion4, useGold, ContextUser.GoldNum, MathUtils.Addition(ContextUser.GoldNum, useGold, int.MaxValue)); FestivalHelper.PurchasedEnergy(ContextUser.UserID); } } else if (payType == 2) { short payEnergy = GetEnergyNum(ContextUser.UserID, ContextUser.VipLv, payType); if (!VipHelper.GetVipOpenFun(ContextUser.VipLv, ExpandType.ZiDongGouMaiJingLi)) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St_VipNotEnoughNotFuntion; return(false); } if (ops == 1) { this.ErrorCode = 1; this.ErrorInfo = string.Format(LanguageManager.GetLang().St1010_PayEnergyUseGold, useGold, payEnergy); return(false); } else if (ops == 2) { if (ContextUser.GoldNum < useGold) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; this.ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold, int.MaxValue); ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, payEnergy, short.MaxValue); if (userRestrain != null) { userRestrain.Funtion4 = MathUtils.Addition(userRestrain.Funtion4, 1, int.MaxValue); } else { userRestrain = new UserDailyRestrain(); userRestrain.UserID = ContextUser.UserID; userRestrain.RefreshDate = DateTime.Now; userRestrain.Funtion4 = 1; cacheSet.Add(userRestrain); } UserLogHelper.AppenUseGoldLog(ContextUser.UserID, 1, userRestrain.Funtion4, 1, useGold, ContextUser.GoldNum, MathUtils.Addition(ContextUser.GoldNum, useGold, int.MaxValue)); } } return(true); }
public static int GetPayEnergyGold(string userID, int vipLv, int payType) { int payNum = FestivalHelper.SurplusEnergyNum(userID); int currNum = 0; int maxNum = 0; if (payNum == 0) { UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(userID); maxNum = VipHelper.GetVipUseNum(vipLv, RestrainType.GouMaiJingLi); if (DateTime.Now.Date == dailyRestrain.RefreshDate.Date) { currNum = dailyRestrain.Funtion4; } else { currNum = 0; } } int useGold = 0; if (payType == 1) { if (currNum == 0) { useGold = 20; } else if (currNum > 0 && currNum <= 5) { useGold = 20; } else if (currNum > 5 && currNum <= 20) { useGold = 80; } else if (currNum > 20 && currNum <= 45) { useGold = 200; } else if (currNum > 45 && currNum <= 80) { useGold = 400; } } else if (payType == 2) { for (int i = currNum; i < maxNum; i++) { if (currNum == 1) { useGold = 20; } else if (currNum > 1 && currNum <= 5) { useGold += 40; } else if (currNum > 5 && currNum <= 20) { useGold += 80; } else if (currNum > 20 && currNum <= 45) { useGold += 200; } else if (currNum > 45 && currNum <= 80) { useGold += 400; } } } return(useGold); }
public override bool TakeAction() { ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(_itemId); //UserItemHelper.AddUserItem(ContextUser.UserID, 1702, 1); //UserItemHelper.AddUserItem(ContextUser.UserID, 1701, 1); //UserItemHelper.AddUserItem(ContextUser.UserID, 1213, 1); if (itemInfo == null) { return(false); } //判断背包是否已满 string fullTitle = string.Empty; bool isFull = false; if (itemInfo.ItemType == ItemType.ZhuangBei) { isFull = UserPackHelper.PackIsFull(ContextUser, BackpackType.ZhuangBei, _num, out fullTitle); } else { isFull = UserPackHelper.PackIsFull(ContextUser, BackpackType.BeiBao, _num, out fullTitle); } if (isFull) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = fullTitle; //ErrorInfo = LanguageManager.GetLang().St7004_BeiBaoTimeOut; return(false); } //读取物品信息 MallItemsInfo mallItemInfo = new ConfigCacheSet <MallItemsInfo>().FindKey(_itemId, CityId, _commandType); if (mallItemInfo == null) { return(false); } //物品价格 int mallPrice = mallItemInfo.Price; if (mallItemInfo.MallType == ShopType.Props || mallItemInfo.MallType == ShopType.PresendBox) { mallPrice = (FestivalHelper.StoreDiscount() * mallPrice).ToInt(); } else if (mallItemInfo.SpecialPrice > 0) { mallPrice = mallItemInfo.SpecialPrice; } //根据物品类型进行扣钱 if (_commandType == ShopType.Props || _commandType == ShopType.PresendBox) { int useGold = mallPrice * _num; //if (mallItemInfo.MallType == ShopType.PresendBox) //{ if (ContextUser.GoldNum < useGold) { ErrorCode = 3; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold); //增加道具日志统计 var mallItemLog = new MallItemLog { Amount = useGold, CreateDate = DateTime.Now, ItemID = _itemId, ItemName = itemInfo.ItemName, ItemNum = _num, MobileType = ContextUser.MobileType, Pid = ContextUser.Pid, PropType = itemInfo.PropType, RetailID = ContextUser.RetailID, Uid = ContextUser.UserID.ToInt() }; var sender = DataSyncManager.GetDataSender(); sender.Send(mallItemLog); UserItemHelper.AddUserItem(ContextUser.UserID, _itemId, _num); UserLogHelper.AppenUseGoldLog(ContextUser.UserID, 8, 1, 1, useGold, ContextUser.GoldNum, MathUtils.Addition(ContextUser.GoldNum, useGold, int.MaxValue)); //} //预留判断消耗的是金币还是晶石 //else //{ // if (ContextUser.GameCoin <useGold) // { // ErrorCode = LanguageManager.GetLang().ErrorCode; // ErrorInfo = LanguageManager.GetLang().St_GameCoinNotEnough; // return false; // } // ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, useGold); // UserItemHelper.AddUserItem(ContextUser.UserID, _itemId, _num); //} } return(true); }
public override bool TakeAction() { short optype = 0; short plantQuality = 0; PlantType pType = (PlantType)Enum.Parse(typeof(PlantType), plantType.ToString()); if (pType == PlantType.Experience) { optype = 6; } else { optype = 7; } short generalLv = 0; UserGeneral userGeneral = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID); if (userGeneral == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().LoadDataError; return(false); } generalLv = userGeneral.GeneralLv; if (pType == PlantType.Experience) { generalLv = ContextUser.UserLv; } else if (pType == PlantType.GameGoin) { generalLv = userGeneral.GeneralLv; } int upexpNum = 0; int expeNum = 0; double addNum = FestivalHelper.SurplusPurchased(ContextUser.UserID, FestivalType.ManorAddition);//活动加成 UserLand userLand = new PersonalCacheStruct <UserLand>().FindKey(ContextUser.UserID, landPositon); if (userLand != null) { if (userLand.IsGain == 2 || userLand.GeneralID == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().LoadDataError; return(false); } plantQuality = (short)userLand.PlantQuality; PlantInfo plantInfo = new ShareCacheStruct <PlantInfo>().FindKey(generalLv, plantType, userLand.PlantQuality); if (plantInfo != null) { if (userLand.IsGain == 1) { userLand.GeneralID = 0; userLand.PlantType = PlantType.Experience; userLand.IsGain = 2; userLand.GainDate = DateTime.Now; userLand.PlantQuality = PlantQualityType.PuTong; } else { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } gainNum = plantInfo.GainNum; UserLand land = new PersonalCacheStruct <UserLand>().FindKey(ContextUser.UserID, landPositon); if (land != null && land.IsRedLand == 1) { gainNum = MathUtils.Addition(gainNum, (int)(gainNum * 0.2), int.MaxValue); } if (land != null && land.IsBlackLand == 1) { gainNum = MathUtils.Addition(gainNum, (int)(gainNum * 0.4), int.MaxValue); } gainNum = (gainNum * addNum).ToInt(); if (pType == PlantType.Experience) { expeNum = MathUtils.Addition(userGeneral.CurrExperience, gainNum, int.MaxValue); GeneralEscalateInfo generalEscalate = new ShareCacheStruct <GeneralEscalateInfo>().FindKey(userGeneral.GeneralLv); if (generalEscalate != null) { upexpNum = generalEscalate.UpExperience; } if (gainNum > 0) { userGeneral.Experience2 = MathUtils.Addition(userGeneral.Experience2, gainNum, int.MaxValue); //userGeneral.CurrExperience = MathUtils.Addition(userGeneral.CurrExperience, gainNum, int.MaxValue); UserHelper.TriggerGeneral(userGeneral, gainNum); } } else if (pType == PlantType.GameGoin) { if (gainNum > 0) { ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, gainNum, int.MaxValue); } } } UserLogHelper.AppenLandLog(ContextUser.UserID, optype, generalID, landPositon, 0, plantQuality, gainNum, 0); } if (pType == PlantType.Experience && expeNum >= upexpNum) { var chatService = new TjxChatService(); string content = string.Format(LanguageManager.GetLang().St10006_UserGeneralUpLv, userGeneral.GeneralName, userGeneral.GeneralLv); chatService.SystemSendWhisper(ContextUser, content); } return(true); }
public override bool TakeAction() { if (!string.IsNullOrEmpty(_friendId) && new PersonalCacheStruct <GameUser>().FindKey(_friendId) == null) { UserCacheGlobal.LoadOffline(_friendId); } if (ContextUser.UserExtend == null || (_petId != petMinLevel && ContextUser.UserExtend.LightPetID != _petId)) { //SaveLog(string.Format("宠物赛跑开始接口请求ID{0},当前点亮ID{1}", _petId, ContextUser.UserExtend.LightPetID)); ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St3204_PetNoEnable; return(false); } PetRunPool petRunPool = new ShareCacheStruct <PetRunPool>().FindKey(Uid); if (petRunPool != null && petRunPool.IsRunning) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St3204_PetRunning; return(false); } if (new PersonalCacheStruct <UserDailyRestrain>().FindKey(Uid) != null) { var userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(Uid); int maxNum = new ShareCacheStruct <DailyRestrainSet>().FindKey(RestrainType.PetRun).MaxNum; if (userRestrain.UserExtend != null) { if (userRestrain.UserExtend.PetRunTimes >= maxNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St3204_PetRunTimesOut; return(false); } } } if (new PersonalCacheStruct <UserDailyRestrain>().FindKey(_friendId) != null) { var userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(_friendId); int maxNum = new ShareCacheStruct <DailyRestrainSet>().FindKey(RestrainType.PetHelp).MaxNum; if (userRestrain.UserExtend != null) { if (userRestrain.UserExtend.PetHelp >= maxNum) { this.ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St3204_PetHelpeTimesOut; return(false); } } } decimal minusNum = (decimal)FestivalHelper.TortoiseHare(ContextUser.UserID); ContextUser.UserExtend.UpdateNotify(obj => { ContextUser.UserExtend.LightPetID = 0; return(true); } ); //ContextUser.Update(); var petCacheSet = new ShareCacheStruct <PetRunPool>(); var petInfo = new ShareCacheStruct <PetInfo>().FindKey(_petId) ?? new PetInfo(); if (petRunPool == null) { petRunPool = new PetRunPool(Uid); petCacheSet.Add(petRunPool); petRunPool = petCacheSet.FindKey(Uid); } petRunPool.FriendID = _friendId; petRunPool.PetID = _petId; petRunPool.StartDate = DateTime.Now; petRunPool.EndDate = DateTime.Now.AddSeconds(petInfo.ColdTime); petRunPool.GameCoin = (int)Math.Floor(petInfo.CoinRate * ContextUser.UserLv * minusNum); petRunPool.ObtainNum = (int)Math.Floor(petInfo.ObtainRate * ContextUser.UserLv * minusNum); petRunPool.InterceptUser = string.Empty; if (new PersonalCacheStruct <UserDailyRestrain>().FindKey(Uid) != null) { var userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(Uid); userRestrain.UserExtend.UpdateNotify(obj => { userRestrain.UserExtend.PetRunTimes = MathUtils.Addition(userRestrain.UserExtend.PetRunTimes, 1); return(true); }); //userRestrain.Update(); } if (new PersonalCacheStruct <UserDailyRestrain>().FindKey(petRunPool.FriendID) != null) { var userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(petRunPool.FriendID); if (userRestrain.UserExtend == null) { userRestrain.UserExtend = new DailyUserExtend(); } userRestrain.UserExtend.UpdateNotify(obj => { userRestrain.UserExtend.PetHelp = MathUtils.Addition(userRestrain.UserExtend.PetHelp, 1); return(true); }); //userRestrain.Update(); } return(true); }