public override bool TakeAction() { receipt = new LotteryReceipt(); var timespan = DateTime.Now.Subtract(GetLottery.StartRestoreLotteryTimesDate); int sec = (int)Math.Floor(timespan.TotalSeconds); int canAddTimes = ConfigEnvSet.GetInt("User.LotteryTimesMax") - GetLottery.LotteryTimes; int addtimes = Math.Min(sec / RestoreLotteryTimesSec * 4, canAddTimes);// 一次恢复4次 GetLottery.LotteryTimes += addtimes; GetLottery.RemainTimeSec = RestoreLotteryTimesSec - sec % RestoreLotteryTimesSec; GetLottery.StartRestoreLotteryTimesDate = GetLottery.StartRestoreLotteryTimesDate.AddSeconds( Math.Min(sec / RestoreLotteryTimesSec, canAddTimes) * RestoreLotteryTimesSec ); UserHelper.RandomStealTarget(Current.UserId); UserHelper.RandomRobTarget(Current.UserId); receipt.Lottery = GetLottery; foreach (var v in GetLottery.StealList) { UserBasisCache basis = UserHelper.FindUserBasis(v.RivalUid); UserAttributeCache attribute = UserHelper.FindUserAttribute(v.RivalUid); UserEquipsCache equips = UserHelper.FindUserEquips(v.RivalUid); CombatMatchUserData data = new CombatMatchUserData() { UserId = basis.UserID, NickName = basis.NickName, Profession = basis.Profession, AvatarUrl = basis.AvatarUrl, RankId = basis.LevelRankID, UserLv = basis.UserLv, VipLv = basis.VipLv, FightingValue = attribute.FightValue, Equips = equips, // SkillCarryList = user.SkillCarryList }; receipt.StealList.Add(data); } return(true); }
public override bool TakeAction() { UserRank rankInfo = null; var ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey); rankInfo = UserHelper.FindRankUser(Current.UserId, RankType.Combat); if (rankInfo == null) { rankInfo = new UserRank() { UserID = Current.UserId, NickName = GetBasis.NickName, UserLv = GetBasis.UserLv, VipLv = GetBasis.VipLv, RankId = int.MaxValue, RankDate = DateTime.Now, }; ranking.TryAppend(rankInfo); rankInfo = ranking.Find(s => (s.UserID == Current.UserId)); } receipt = new CombatMatchData(); receipt.RankId = GetBasis.CombatRankID; receipt.CombatTimes = GetCombat.CombatTimes; receipt.LastFailedDate = Util.ConvertDateTimeStamp(GetCombat.LastFailedDate); //UserRank info = null; CacheList <int> MachList = new CacheList <int>(); if (rankInfo.RankId <= MaxCount) { for (int i = MaxCount; i > 0; --i) { MachList.Add(i); } } else if (rankInfo.RankId <= 30) {// 前30名去前5位 int num = 0; for (int i = rankInfo.RankId - 1; i > 0 && num < MaxCount; --i) { MachList.Add(i); num++; } } else if (rankInfo.RankId <= 100) {// 前100名去前10位 if (rankInfo.RankId <= 30 + MaxCount) { for (int i = rankInfo.RankId - 1; i > 30; --i) { MachList.Add(i); } int currcount = MachList.Count; for (int i = 30; i > 30 - (MaxCount - currcount); --i) { MachList.Add(i); } } else { int num = 0; for (int i = rankInfo.RankId - 1; i > 30 && num < 10; --i) { MachList.Add(i); num++; } } } else if (rankInfo.RankId <= 500) {// 前500名去前30位 if (rankInfo.RankId <= 100 + MaxCount) { for (int i = rankInfo.RankId - 1; i > 100; --i) { MachList.Add(i); } CacheList <int> temp = new CacheList <int>(); for (int i = 100; i > 90; --i) { temp.Add(i); } int mach; int currcount = MachList.Count; for (int i = 0; i < MaxCount - currcount; ++i) { RandMach(ref temp, out mach); MachList.Add(mach); } } else { int num = 0; for (int i = rankInfo.RankId - 1; i > 100 && num < 30; --i) { MachList.Add(i); num++; } } } else if (rankInfo.RankId <= 1000) { if (rankInfo.RankId <= 500 + MaxCount) { for (int i = rankInfo.RankId - 1; i > 500; --i) { MachList.Add(i); } CacheList <int> temp = new CacheList <int>(); for (int i = 500; i > 470; --i) { temp.Add(i); } int mach; int currcount = MachList.Count; for (int i = 0; i < MaxCount - currcount; ++i) { RandMach(ref temp, out mach); MachList.Add(mach); } } else { int num = 0; for (int i = rankInfo.RankId - 1; i > 500 && num < 100; --i) { MachList.Add(i); num++; } } } else { if (rankInfo.RankId <= 1000 + MaxCount) { for (int i = rankInfo.RankId - 1; i > 1000; --i) { MachList.Add(i); } CacheList <int> temp = new CacheList <int>(); for (int i = 1000; i > 900; --i) { temp.Add(i); } int mach; int currcount = MachList.Count; for (int i = 0; i < MaxCount - currcount; ++i) { RandMach(ref temp, out mach); MachList.Add(mach); } } else { int num = 0; for (int i = rankInfo.RankId - 1; i > 1000 && num < 200; --i) { MachList.Add(i); num++; } } } int mach_tops; for (int i = 0; MachList.Count > 0 && i < MaxCount; ++i) { RandMach(ref MachList, out mach_tops); int rankID = 0; UserRank machinfo = null; if (ranking.TryGetRankNo(m => (m.RankId == mach_tops), out rankID)) { machinfo = ranking.Find(s => (s.RankId == mach_tops)); } if (machinfo != null) { UserAttributeCache attribute = UserHelper.FindUserAttribute(machinfo.UserID); UserEquipsCache equips = UserHelper.FindUserEquips(machinfo.UserID); CombatMatchUserData data = new CombatMatchUserData() { UserId = machinfo.UserID, NickName = machinfo.NickName, Profession = machinfo.Profession, AvatarUrl = machinfo.AvatarUrl, RankId = machinfo.RankId, UserLv = machinfo.UserLv, VipLv = machinfo.VipLv, FightingValue = attribute.FightValue, Equips = equips, // SkillCarryList = user.SkillCarryList }; receipt.RivalList.Add(data); } } // 日志 //foreach (CombatLogData data in GetCombat.LogList) //{ // UserRank info = null; // if (ranking.TryGetRankNo(m => (m.UserID == data.UserId), out rankID)) // { // info = ranking.Find(s => (s.UserID == data.UserId)); // } // JPCombatLogData cld = new JPCombatLogData(); // cld.UserId = data.UserId; // if (info != null) // cld.RivalCurrRankId = info.RankId; // cld.Type = data.Type; // cld.FightResult = data.Status; // cld.Log = UserHelper.FormatCombatLog(data); // receipt.LogList.Add(cld); //} return(true); }
public override bool TakeAction() { receipt = new StealReceipt(); receipt.Result = false; if (GetLottery.StealTimes <= 0 || selectIndex >= 3) { return(true); } StealRobTarget target = GetLottery.StealList[selectIndex]; var rival = UserHelper.FindUserBasis(target.RivalUid); if (rival == null) { return(true); } var rivalEnemy = UserHelper.FindUserEnemy(rival.UserID); if (rivalEnemy == null) { return(true); } GetLottery.StealTimes--; receipt.Gold = target.Gold; UserHelper.RewardsGold(Current.UserId, target.Gold); BigInteger dummyGold = BigInteger.Parse(target.Gold); BigInteger realGold = rival.GoldNum <= dummyGold * 2 ? rival.GoldNum / 2 : dummyGold; UserHelper.ConsumeGold(rival.UserID, realGold); rivalEnemy.AddEnemy(new EnemyData() { UserId = Current.UserId }); EnemyLogData log = new EnemyLogData() { RivalUid = Current.UserId, RivalName = GetBasis.NickName, RivalAvatarUrl = GetBasis.AvatarUrl, LogTime = DateTime.Now, LossGold = realGold.ToString(), IsSteal = true, RivalProfession = GetBasis.Profession }; rivalEnemy.PushLog(log); PushMessageHelper.NewStealRobNotification(GameSession.Get(rival.UserID)); if (target.IsPrimary) { GetLottery.StealList.Clear(); UserHelper.RandomStealTarget(Current.UserId); } else { UserHelper.RandomStealTarget2(Current.UserId); } foreach (var v in GetLottery.StealList) { UserBasisCache basis = UserHelper.FindUserBasis(v.RivalUid); UserAttributeCache attribute = UserHelper.FindUserAttribute(v.RivalUid); UserEquipsCache equips = UserHelper.FindUserEquips(v.RivalUid); CombatMatchUserData data = new CombatMatchUserData() { UserId = basis.UserID, NickName = basis.NickName, Profession = basis.Profession, AvatarUrl = basis.AvatarUrl, RankId = basis.LevelRankID, UserLv = basis.UserLv, VipLv = basis.VipLv, FightingValue = attribute.FightValue, Equips = equips, // SkillCarryList = user.SkillCarryList }; receipt.StealList.Add(data); } receipt.Lottery = GetLottery; receipt.Result = true; return(true); }