コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }