コード例 #1
0
        public override void TakeActionAffter(bool state)
        {
            // 成就检测
            UserHelper.AchievementProcess(Current.UserId, type);

            base.TakeActionAffter(state);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }