public override void TakeActionAffter(bool state) { // 成就检测 UserHelper.AchievementProcess(Current.UserId, type); base.TakeActionAffter(state); }
public override bool TakeAction() { EquipData equip = GetEquips.FindEquipData(equipID); if (GetBasis.UserLv <= equip.Lv) { return(false); } if (equip.Lv - GetEquips.Weapon.Lv >= 3 || equip.Lv - GetEquips.Coat.Lv >= 3 || equip.Lv - GetEquips.Ring.Lv >= 3 || equip.Lv - GetEquips.Shoe.Lv >= 3 || equip.Lv - GetEquips.Accessory.Lv >= 3) { return(false); } var equipcfg = new ShareCacheStruct <Config_Equip>().Find(t => (t.EquipID == equip.ID && t.Grade == (equip.Lv + 1))); if (equipcfg == null) { return(false); } BigInteger gradeConsumeGold = BigInteger.Parse(equipcfg.GradeConsumeGold); if (GetBasis.GoldNum < gradeConsumeGold || GetBasis.DiamondNum < equipcfg.GradeConsumediamond) { return(false); } //var nextEquipcfg = new ShareCacheStruct<Config_Equip>().Find(t => (t.EquipID == equip.ID && t.Grade == equip.Lv+1)); //if (nextEquipcfg == null) //{ // return false; //} if (gradeConsumeGold > 0) { UserHelper.ConsumeGold(Current.UserId, equipcfg.GradeConsumeGold); } if (equipcfg.GradeConsumediamond > 0) { UserHelper.ConsumeDiamond(Current.UserId, equipcfg.GradeConsumediamond); } equip.Lv++; UserHelper.RefreshUserFightValue(Current.UserId); // 每日 UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.UpgradeEquip, 1); // 成就 UserHelper.AchievementProcess(Current.UserId, AchievementType.UpgradeEquip); receipt = true; return(true); }
public override bool TakeAction() { var elf = GetElf.FindElf(elfId); if (elf == null) { return(false); } var elfSet = new ShareCacheStruct <Config_Elves>(); var elfcfg = elfSet.Find(t => (t.ElvesID == elf.ID && t.ElvesGrade == elf.Lv)); if (elfcfg == null) { return(false); } var elfNextCfg = elfSet.Find(t => (t.ElvesID == elf.ID && t.ElvesGrade == elf.Lv + 1)); if (elfNextCfg == null) { return(false); } BigInteger consumeNumber = BigInteger.Parse(elfNextCfg.GradeConsume); if (GetBasis.GoldNum < consumeNumber) { return(false); } else { UserHelper.ConsumeGold(Current.UserId, consumeNumber); } elf.Lv = elfNextCfg.ElvesGrade; if (GetElf.SelectID == elfId) { GetElf.SelectElfType = elfNextCfg.ElvesType; GetElf.SelectElfValue = elfNextCfg.ElvesNum; } UserHelper.RefreshUserFightValue(Current.UserId); // 每日 UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.UpgradeElf, 1); // 成就 UserHelper.AchievementProcess(Current.UserId, AchievementType.UpgradeElf); receipt = true; return(true); }
public override bool TakeAction() { receipt = new CombatMachEndReceipt(); int addv = 0; if (result == EventStatus.Good) { addv = ConfigEnvSet.GetInt("Combat.MatchWinAwardCombatCoin"); } else { addv = ConfigEnvSet.GetInt("Combat.MatchFailedAwardCombatCoin"); GetCombat.LastMatchFightFailedDate = DateTime.Now; } //GetCombat.CombatCoin = MathUtils.Addition(GetCombat.CombatCoin, addv, int.MaxValue); UserHelper.RewardsCombatCoin(Current.UserId, addv); receipt.AwardCombatCoin = addv; BigInteger gold = ConfigEnvSet.GetInt("Combat.MatchWinAwardGold"); BigInteger awardValue = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * gold; if (result == EventStatus.Good) { receipt.AwardGold = awardValue.ToString(); UserHelper.RewardsGold(Current.UserId, awardValue, UpdateCoinOperate.NormalReward, true); } else { awardValue /= 4; receipt.AwardGold = awardValue.ToString(); UserHelper.RewardsGold(Current.UserId, awardValue, UpdateCoinOperate.NormalReward, true); } // 每日 UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.CombatMatch, 1); // 成就 UserHelper.AchievementProcess(Current.UserId, AchievementType.CombatMatch, "1"); return(true); }
public override bool TakeAction() { UserRank rankinfo = null; UserRank rivalrankinfo = null; rankinfo = UserHelper.FindRankUser(Current.UserId, RankType.Combat); if (rankinfo == null) { new BaseLog("Action1403").SaveLog(string.Format("Not found user combat rank. UserId={0}", Current.UserId)); ErrorInfo = Language.Instance.CombatRankDataException; return(true); } UserBasisCache rival = UserHelper.FindUserBasis(rankinfo.FightDestUid); if (rival == null) { ErrorInfo = Language.Instance.CombatRankDataException; return(true); } rivalrankinfo = UserHelper.FindRankUser(rankinfo.FightDestUid, RankType.Combat); if (rivalrankinfo == null) { new BaseLog("Action1403").SaveLog(string.Format("Not found user combat rank. UserId={0}", rankinfo.FightDestUid)); ErrorInfo = Language.Instance.CombatRankDataException; return(true); } //if (GetBasis.CombatRankID <= rival.CombatRankID) //{ // ErrorInfo = Language.Instance.CombatRankDataException; // return true; //} if (!rankinfo.IsFighting || !rivalrankinfo.IsFighting) { ErrorInfo = Language.Instance.CombatRankDataException; return(true); } int fromRankId = GetBasis.CombatRankID; int toRankId = rival.CombatRankID; //TraceLog.WriteLine(string.Format("#BEGIN srcId:[{0}] destId:[{1}]", fromid, toid)); GetBasis.UserStatus = UserStatus.MainUi; if (result == EventStatus.Good) { if (GetBasis.CombatRankID > rival.CombatRankID) { var ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey); ranking.TryMove(fromRankId, toRankId); GetBasis.CombatRankID = toRankId; rival.CombatRankID = fromRankId; if (GetBasis.CombatRankID <= 10) { string context = string.Format("恭喜 {0} 挑战 {1} 成功,成为通天塔第{2}名!", GetBasis.NickName, rival.NickName, rankinfo.RankId); //GlobalRemoteService.SendNotice(NoticeMode.World, context); //PushMessageHelper.SendNoticeToOnlineUser(NoticeMode.Game, context); //var chatService = new TryXChatService(); //chatService.SystemSend(context); //PushMessageHelper.SendSystemChatToOnlineUser(); } } } else { if (GetBasis.CombatRankID <= rival.CombatRankID) { var ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey); ranking.TryMove(fromRankId, toRankId); GetBasis.CombatRankID = toRankId; rival.CombatRankID = fromRankId; } GetCombat.LastFailedDate = DateTime.Now; } int rankrise = result == EventStatus.Good ? MathUtils.Subtraction(fromRankId, toRankId, 0) : 0; //TraceLog.WriteLine(string.Format("###END srcId:[{0}] destId:[{1}]", GetBasis.CombatData.RankID, rival.CombatData.RankID)); // 日志 CombatLogData log = new CombatLogData(); log.RivalUid = rankinfo.FightDestUid; log.RivalName = rival.NickName; log.RivalAvatarUrl = rival.AvatarUrl; log.LogTime = DateTime.Now; log.Type = EventType.Challenge; log.Status = result; log.RankIdDiff = rankrise; log.RankId = GetBasis.CombatRankID; GetCombat.PushCombatLog(log); string content = UserHelper.FormatCombatLog(log); GlobalRemoteService.SendSystemChat(Current.UserId, content); CombatLogData rivallog = new CombatLogData(); rivallog.RivalUid = Current.UserId; rivallog.RivalName = GetBasis.NickName; rivallog.RivalAvatarUrl = GetBasis.AvatarUrl; rivallog.LogTime = DateTime.Now; rivallog.Type = EventType.PassiveChallenge; rivallog.Status = result; rivallog.RankIdDiff = rankrise; rivallog.RankId = rival.CombatRankID; UserHelper.FindUserCombat(rival.UserID).PushCombatLog(rivallog); content = UserHelper.FormatCombatLog(rivallog); GlobalRemoteService.SendSystemChat(rival.UserID, content); rankinfo.IsFighting = false; rankinfo.FightDestUid = 0; rivalrankinfo.IsFighting = false; receipt = new CombatFightEndData(); receipt.Result = result; receipt.CurrRankId = GetBasis.CombatRankID; receipt.RankRise = rankrise; receipt.LastFailedTime = Util.ConvertDateTimeStamp(GetCombat.LastFailedDate); receipt.AwardGold = "0"; BigInteger gold = ConfigEnvSet.GetInt("User.CombatWinAwardGold"); BigInteger awardValue = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * gold; if (result == EventStatus.Good) { receipt.AwardGold = awardValue.ToString(); UserHelper.RewardsGold(Current.UserId, awardValue, UpdateCoinOperate.NormalReward, true); } else { awardValue /= 4; receipt.AwardGold = awardValue.ToString(); UserHelper.RewardsGold(Current.UserId, awardValue, UpdateCoinOperate.NormalReward, true); } // 每日 UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.Combat, 1); // 成就 UserHelper.AchievementProcess(Current.UserId, AchievementType.CombatRandID, "1"); PushMessageHelper.NewCombatLogNotification(Current); PushMessageHelper.NewCombatLogNotification(GameSession.Get(rival.UserID)); return(true); }
public override bool TakeAction() { var skillSet = new ShareCacheStruct <Config_Skill>(); var skillGradeSet = new ShareCacheStruct <Config_SkillGrade>(); var skillcfg = skillSet.FindKey(skillId); if (skillcfg == null) { return(false); } var skill = GetSkill.SkillList.Find(t => t.ID == skillId); if (skill == null) { return(false); } var skillGradeCfg = skillGradeSet.Find(t => (t.SkillId == skillId && t.SkillGrade == skill.Lv + 1)); if (skillGradeCfg == null) { return(false); } switch (skillGradeCfg.ConsumeType) { case CoinType.Gold: { BigInteger consumeNumber = BigInteger.Parse(skillGradeCfg.ConsumeNumber); if (GetBasis.GoldNum < consumeNumber) { return(false); } else { UserHelper.ConsumeGold(Current.UserId, consumeNumber); } } break; case CoinType.Diamond: { if (GetBasis.DiamondNum < Convert.ToInt32(skillGradeCfg.ConsumeNumber)) { return(false); } else { UserHelper.ConsumeDiamond(Current.UserId, Convert.ToInt32(skillGradeCfg.ConsumeNumber)); } } break; } skill.Lv = skillGradeCfg.SkillGrade; // 每日 UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.UpgradeSkill, 1); // 成就 UserHelper.AchievementProcess(Current.UserId, AchievementType.UpgradeSkill); receipt = true; return(true); }
public override bool TakeAction() { if (GetBasis.BackLevelNum > 0) { int levelDown = GetBasis.BackLevelNum; GetBasis.UserLv = Math.Max(GetBasis.UserLv - levelDown, 10); UserHelper.UserLvChange(Current.UserId); GetBasis.BackLevelNum = 0; } receipt = new JPUserDetailsData() { UserId = Current.UserId, NickName = GetBasis.NickName, Profession = GetBasis.Profession, UserLv = GetBasis.UserLv, Diamond = GetBasis.DiamondNum, BuyDiamond = GetBasis.BuyDiamond, UsedDiamond = GetBasis.UsedDiamond, VipLv = GetBasis.VipLv, AvatarUrl = GetBasis.AvatarUrl, Gold = GetBasis.Gold, CombatRankID = GetBasis.CombatRankID, LevelRankID = GetBasis.LevelRankID, LotteryTimes = GetLottery.LotteryTimes, SignStartID = DataHelper.SignStartID, ShareCount = GetBasis.ShareCount, ShareDate = GetBasis.ShareDate, InviteCount = GetBasis.InviteCount, ReceiveInviteList = GetBasis.ReceiveInviteList.ToList(), ReceiveLevelAwardList = GetBasis.ReceiveLevelAwardList.ToList(), ReceiveRankingAwardList = GetBasis.ReceiveRankingAwardList.ToList(), LastMatchFightFailedDate = Util.ConvertDateTimeStamp(GetCombat.LastMatchFightFailedDate), ComboNum = GetBasis.ComboNum, OpenServiceDateSec = Util.ConvertDateTimeStamp(DataHelper.OpenServiceDate) }; receipt.Attribute = GetAttribute; receipt.Equips = GetEquips; receipt.Package = GetPackage; receipt.Soul = GetSoul; receipt.Skill = GetSkill; receipt.Task = GetTask; receipt.Achievement = GetAchievement; receipt.Guild = GetGuild; receipt.MailBox = GetMailBox; receipt.EventAward = GetEventAward; UserHelper.FundCfgCheck(Current.UserId); receipt.Pay = GetPay; receipt.Combat = GetCombat; receipt.Lottery = GetLottery; receipt.VitData.RemainTimeSec = GetBasis.RestoreVitRemainTimeSec(); receipt.VitData.Vit = GetBasis.Vit; UserHelper.ElfExperienceExpireCheck(Current.UserId); receipt.Elf = GetElf; UserHelper.TransferExpireCheck(Current.UserId); receipt.Transfer = GetTransfer; /// 好友/仇人 { receipt.Friends.GiveAwayCount = GetFriends.GiveAwayCount; //receipt.Friends.TodayRobList = GetFriends.TodayRobList.ToList(); foreach (var v in GetFriends.FriendsList) { var basis = UserHelper.FindUserBasis(v.UserId); JPFriendData friend = new JPFriendData() { UserId = v.UserId, NickName = basis.NickName, Profession = basis.Profession, AvatarUrl = basis.AvatarUrl, UserLv = basis.UserLv, VipLv = basis.VipLv, IsGiveAway = v.IsGiveAway, IsByGiveAway = v.IsByGiveAway, IsReceiveGiveAway = v.IsReceiveGiveAway, RobGold = v.RobGold, }; var gameSession = GameSession.Get(v.UserId); friend.IsOnline = gameSession != null && gameSession.Connected; receipt.Friends.FriendsList.Add(friend); } foreach (var v in GetFriends.ApplyList) { var basis = UserHelper.FindUserBasis(v.UserId); JPFriendApplyData apply = new JPFriendApplyData() { UserId = v.UserId, NickName = basis.NickName, Profession = basis.Profession, AvatarUrl = basis.AvatarUrl, UserLv = basis.UserLv, VipLv = basis.VipLv, ApplyTime = v.ApplyDate }; var gameSession = GameSession.Get(v.UserId); apply.IsOnline = gameSession != null && gameSession.Connected; receipt.Friends.ApplyList.Add(apply); } foreach (var v in GetEnemys.EnemyList) { var basis = UserHelper.FindUserBasis(v.UserId); JPEnemyData enemy = new JPEnemyData() { UserId = v.UserId, NickName = basis.NickName, Profession = basis.Profession, AvatarUrl = basis.AvatarUrl, UserLv = basis.UserLv, RobGold = v.RobGold, }; receipt.Enemys.EnemysList.Add(enemy); } receipt.Enemys.LogList = GetEnemys.LogList.ToList(); receipt.Enemys.IsHaveNewLog = GetEnemys.IsHaveNewLog; } /// 公会 if (!receipt.Guild.GuildID.IsEmpty()) { var guildData = new ShareCacheStruct <GuildsCache>().FindKey(receipt.Guild.GuildID); if (guildData != null && guildData.FindMember(Current.UserId) != null) { UserHelper.BulidJPGuildData(GetGuild.GuildID, receipt.GuildData); } } if (GetBasis.IsReceiveOfflineEarnings) { receipt.OfflineEarnings = "0"; receipt.OfflineTimeSec = 0; } else { // 离线收益 BigInteger transscriptEarnings = 0; var monster = new ShareCacheStruct <Config_Monster>().Find(t => t.Grade == GetBasis.UserLv); BigInteger bi = BigInteger.Parse(monster.DropoutGold) * 30; transscriptEarnings += bi; double rate = Convert.ToDouble(GetBasis.OfflineTimeSec / 300.0); int tmp = Convert.ToInt32(rate * 100); //var vipcfg = new ShareCacheStruct<Config_Vip>().FindKey(GetBasis.VipLv); //if (vipcfg != null) { int skillAddition = 0; var elfcfg = new ShareCacheStruct <Config_Elves>().Find(t => t.ElvesID == GetElf.SelectID); if (elfcfg != null && elfcfg.ElvesType == ElfSkillType.OffineGold) { skillAddition = elfcfg.ElvesNum; } BigInteger sum = transscriptEarnings * tmp / 100; //BigInteger earning = sum + sum / 100 * (vipcfg.Multiple); //BigInteger earning2 = earning + earning / 1000 * skillAddition; BigInteger earning2 = sum + sum / 1000 * skillAddition; if (GetPay.QuarterCardDays >= 0) { earning2 = earning2 * 2; } GetBasis.OfflineEarnings = earning2.ToNotNullString("0"); } } receipt.OfflineTimeSec = GetBasis.OfflineTimeSec; receipt.OfflineEarnings = GetBasis.OfflineEarnings; // 排行榜奖励数据 UserRankAward rankAward = DataHelper.LevelRankingAwardCacheList.Find(t => t.UserID == Current.UserId); if (rankAward != null) { receipt.RankAwardData.LevelRankID = rankAward.RankId; receipt.RankAwardData.IsReceivedLevel = rankAward.IsReceived; } rankAward = DataHelper.FightValueRankingAwardCacheList.Find(t => t.UserID == Current.UserId); if (rankAward != null) { receipt.RankAwardData.FightValueRankID = rankAward.RankId; receipt.RankAwardData.IsReceivedFightValue = rankAward.IsReceived; } rankAward = DataHelper.ComboRankingAwardCacheList.Find(t => t.UserID == Current.UserId); if (rankAward != null) { receipt.RankAwardData.ComboRankID = rankAward.RankId; receipt.RankAwardData.IsReceivedCombo = rankAward.IsReceived; } UserHelper.AchievementProcess(Current.UserId, AchievementType.CombatRandID, "0", 0, false); return(true); }