Esempio n. 1
0
        public override bool TakeAction()
        {
            if (_ID > GetBasis.UserLv)
            {
                PushMessageHelper.UserGameDataExceptionNotification(Current);
                return(false);
            }
            int needVit = _ID % 5 == 0 ? 3 : 1;

            if (GetBasis.Vit >= needVit)
            {
                receipt = true;
                if (DataHelper.VitMax == GetBasis.Vit)
                {
                    GetBasis.StartRestoreVitDate = DateTime.Now;
                }

                GetBasis.Vit = MathUtils.Subtraction(GetBasis.Vit, needVit, 0);

                GetBasis.CurrentPassLevelID = _ID;
            }
            else
            {
                receipt = false;
            }
            PushMessageHelper.UserVitChangedNotification(Current);
            return(true);
        }
Esempio n. 2
0
        public override bool TakeAction()
        {
            var guildsSet = new ShareCacheStruct <GuildsCache>();

            var guild = guildsSet.FindKey(GetGuild.GuildID);

            if (guild == null)
            {
                return(false);
            }

            var member = guild.FindMember(Current.UserId);

            if (member == null)
            {
                return(false);
            }

            if (GetGuild.IsSignIn)
            {
                receipt = RequestGuildResult.HadSignIn;
                return(true);
            }
            GetGuild.IsSignIn = true;
            int addLiveness = ConfigEnvSet.GetInt("Guild.SignInLiveness") * 500;

            member.Liveness = MathUtils.Addition(member.Liveness, addLiveness, int.MaxValue);
            guild.Liveness  = MathUtils.Addition(guild.Liveness, addLiveness, int.MaxValue);

            GuildLogData log = new GuildLogData()
            {
                UserId   = Current.UserId,
                UserName = GetBasis.NickName,
                LogTime  = DateTime.Now,
                Content  = string.Format("玩家 {0} 进行了签到。", GetBasis.NickName),
            };

            guild.NewLog(log);

            foreach (var v in guild.MemberList)
            {
                PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), Current.UserId);
                PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
            }

            int newlv = guild.ConvertLevel();

            if (guild.Lv < newlv)
            {
                guild.Lv = newlv;
                foreach (var v in guild.MemberList)
                {
                    PushMessageHelper.GuildBasisChangeNotification(GameSession.Get(v.UserID));
                }
            }


            receipt = RequestGuildResult.Successfully;
            return(true);
        }
Esempio n. 3
0
        public override bool TakeAction()
        {
            var fundcfg = new ShareCacheStruct <Config_Fund>().FindKey(id);

            if (fundcfg == null)
            {
                return(false);
            }

            FundStageData funddata = new FundStageData();

            switch (fundId)
            {
            case PayID.Fund50:
                funddata = GetPay.Fund50.List.Find(t => t.ID == id);
                break;

            case PayID.Fund98:
                funddata = GetPay.Fund98.List.Find(t => t.ID == id);
                break;

            case PayID.Fund298:
                funddata = GetPay.Fund298.List.Find(t => t.ID == id);
                break;
            }

            if (funddata == null)
            {
                receipt = false;
                return(true);
            }

            if (funddata.Status != FundStatus.Permit)
            {
                receipt = false;
                return(true);
            }
            funddata.Status = FundStatus.Received;

            switch (fundId)
            {
            case PayID.Fund50:
                UserHelper.RewardsDiamond(Current.UserId, fundcfg.fund50);
                break;

            case PayID.Fund98:
                UserHelper.RewardsDiamond(Current.UserId, fundcfg.fund98);
                break;

            case PayID.Fund298:
                UserHelper.RewardsDiamond(Current.UserId, fundcfg.fund298);
                break;
            }

            PushMessageHelper.FundChangeNotification(Current);
            receipt = true;

            return(true);
        }
Esempio n. 4
0
        public override bool TakeAction()
        {
            receipt = RequestInviteFightResult.OK;
            GameSession    session = GameSession.Get(destuid);
            UserBasisCache dest    = UserHelper.FindUserBasis(destuid);

            if (dest == null)
            {
                receipt = RequestInviteFightResult.Offine;
                return(true);
            }
            //if (dest.ServerID != 0)
            //{
            //    if (session == null || !session.Connected)
            //    {
            //        receipt = RequestInviteFightResult.Offine;
            //        return true;
            //    }
            //}

            else if (dest.UserStatus == UserStatus.Inviteing)
            {
                receipt = RequestInviteFightResult.HadInvite;
                return(true);
            }
            else if (dest.UserStatus == UserStatus.Fighting)
            {
                receipt = RequestInviteFightResult.Fighting;
                return(true);
            }

            GetBasis.UserStatus         = UserStatus.Inviteing;
            GetBasis.InviteFightDestUid = destuid;



            AutoFight.FightBot fbot = new AutoFight.FightBot()
            {
                UserId       = dest.UserID,
                InviteTime   = DateTime.Now,
                PlayerUserId = Current.UserId,
                DestUserId   = destuid
            };
            AutoFight.AddFightBot(fbot);


            dest.UserStatus = UserStatus.Inviteing;
            PushMessageHelper.InviteFightNotification(session, Current.UserId);

            return(true);
        }
Esempio n. 5
0
        public override bool TakeAction()
        {
            var guildData = new ShareCacheStruct <GuildsCache>().FindKey(GetGuild.GuildID);

            if (guildData == null)
            {
                return(false);
            }


            if (Current.UserId == _DestUid ||
                (guildData.FindAtevent().UserID != Current.UserId && guildData.FindVice(Current.UserId) == null))
            {
                receipt = RequestGuildResult.NoAuthority;
                return(true);
            }

            var basis  = UserHelper.FindUserBasis(_DestUid);
            var guild  = UserHelper.FindUserGuild(_DestUid);
            var member = guildData.FindMember(_DestUid);

            if (basis == null || member == null)
            {
                return(false);
            }


            GuildLogData log = new GuildLogData()
            {
                UserId   = basis.UserID,
                UserName = basis.NickName,
                LogTime  = DateTime.Now,
                Content  = string.Format("玩家 {0} 被移出公会。", basis.NickName),
            };

            guildData.NewLog(log);

            foreach (var v in guildData.MemberList)
            {
                PushMessageHelper.GuildMemberRemoveNotification(GameSession.Get(v.UserID), _DestUid);
                PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
            }

            guildData.RemoveMember(member);
            guild.GuildID = string.Empty;
            GlobalRemoteService.SendUserData(basis, guild.GuildID);

            receipt = RequestGuildResult.Successfully;
            return(true);
        }
Esempio n. 6
0
        public override bool TakeAction()
        {
            GetBasis.UserStatus         = UserStatus.MainUi;
            GetBasis.InviteFightDestUid = 0;
            GameSession    session = GameSession.Get(destuid);
            UserBasisCache dest    = UserHelper.FindUserBasis(destuid);

            if (session == null || !session.Connected || dest == null ||
                dest.UserStatus != UserStatus.Inviteing)
            {
                return(true);
            }

            dest.UserStatus = UserStatus.MainUi;
            PushMessageHelper.CancelInviteFightNotification(session, GetBasis.NickName);
            return(true);
        }
Esempio n. 7
0
        public override bool TakeAction()
        {
            UserFriendsCache destFriends = UserHelper.FindUserFriends(destuid);

            if (GetFriends.IsHaveFriend(destuid))
            {
                GetFriends.RemoveFriend(destuid);
            }
            if (destFriends.IsHaveFriend(Current.UserId))
            {
                destFriends.RemoveFriend(Current.UserId);
            }

            PushMessageHelper.FriendRemoveNotification(GameSession.Get(destuid), Current.UserId);
            receipt = destuid;

            return(true);
        }
Esempio n. 8
0
        public override bool TakeAction()
        {
            UserBasisCache   dest        = UserHelper.FindUserBasis(destuid);
            UserFriendsCache destFriends = UserHelper.FindUserFriends(destuid);

            FriendApplyData apply = GetFriends.FindFriendApply(destuid);

            if (apply == null)
            {
                receipt = RequestFriendResult.NoApply;
                return(true);
            }

            if (result == EventStatus.Good)
            {
                if (GetFriends.IsFriendNumFull())
                {
                    receipt = RequestFriendResult.FriendNumFull;
                }
                else if (GetFriends.IsHaveFriend(destuid))
                {
                    receipt = RequestFriendResult.HadFriend;
                }
                else if (destFriends.IsFriendNumFull())
                {
                    receipt = RequestFriendResult.DestFriendNumFull;
                }
                else
                {
                    receipt = RequestFriendResult.OK;

                    GetFriends.AddFriend(destuid);

                    destFriends.AddFriend(Current.UserId);

                    PushMessageHelper.NewFriendNotification(GameSession.Get(destuid), Current.UserId);
                    PushMessageHelper.NewFriendNotification(Current, destuid);
                }
            }
            GetFriends.ApplyList.Remove(apply);


            return(true);
        }
Esempio n. 9
0
        public override bool TakeAction()
        {
            if (GetTransfer.ReceiveCount >= 3)
            {
                receipt = TransferItemResult.ReceiveCountOut;
                return(true);
            }

            var receiveTransfer = GetTransfer.FindReceive(id);

            if (receiveTransfer == null)
            {
                receipt = TransferItemResult.Expire;
                return(true);
            }

            if (receiveTransfer.IsReceived)
            {
                receipt = TransferItemResult.Received;
                return(true);
            }

            var sendTransfer = UserHelper.FindUserTransfer(receiveTransfer.Sender).FindSend(id);

            if (sendTransfer.Password.CompareTo(passward) != 0)
            {
                receipt = TransferItemResult.ErrorPassword;
                return(true);
            }

            receiveTransfer.IsReceived = true;
            sendTransfer.IsReceived    = true;

            UserHelper.RewardsItem(Current.UserId, sendTransfer.AppendItem.ID, sendTransfer.AppendItem.Num);

            PushMessageHelper.ReceivedTransferItemNotification(GameSession.Get(receiveTransfer.Sender), id);

            GetTransfer.ReceiveCount++;
            receipt = TransferItemResult.Successfully;

            return(true);
        }
Esempio n. 10
0
        public static void FightResponse()
        {
            var list = FightList.FindAll(t => (t.IsCanFight()));

            foreach (var v in list)
            {
                var player    = UserHelper.FindUserBasis(v.PlayerUserId);
                var playerAtt = UserHelper.FindUserAttribute(v.PlayerUserId);
                var destAtt   = UserHelper.FindUserAttribute(v.DestUserId);
                if (player == null)
                {
                    continue;
                }
                player.UserStatus = UserStatus.Fighting;
                //bot.UserStatus = UserStatus.Fighting;

                EventStatus retresult = EventStatus.Good;
                //float diff = (float)GetBasis.GetCombatFightValue() / dest.GetCombatFightValue();
                float diff = (float)playerAtt.FightValue / destAtt.FightValue;
                if (diff > 1.1f)
                {
                    retresult = EventStatus.Good;
                }
                else if (diff < 0.9f)
                {
                    retresult = EventStatus.Bad;
                }


                PushMessageHelper.StartInviteFightNotification(GameSession.Get(player.UserID), v.DestUserId, retresult);
            }


            lock (FightList)
            {
                foreach (var v in list)
                {
                    FightList.Remove(v);
                }
            }
        }
Esempio n. 11
0
        public override bool TakeAction()
        {
            var guildsSet = new ShareCacheStruct <GuildsCache>();

            var guild = guildsSet.FindKey(GetGuild.GuildID);

            if (guild == null)
            {
                return(false);
            }

            var member = guild.FindMember(Current.UserId);

            if (member == null || member.JobTitle == GuildJobTitle.Normal)
            {
                receipt = RequestGuildResult.NoAuthority;
                return(true);
            }

            guild.Notice = _content;
            GuildLogData log = new GuildLogData()
            {
                UserId   = Current.UserId,
                UserName = GetBasis.NickName,
                LogTime  = DateTime.Now,
                Content  = string.Format("{0} 设置了新公告。", GetBasis.NickName),
            };

            guild.NewLog(log);

            foreach (var v in guild.MemberList)
            {
                PushMessageHelper.GuildNoticeChangeNotification(GameSession.Get(v.UserID));
                PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
            }


            receipt = RequestGuildResult.Successfully;
            return(true);
        }
Esempio n. 12
0
        public override bool TakeAction()
        {
            UserBasisCache   dest        = UserHelper.FindUserBasis(destuid);
            UserFriendsCache destFriends = UserHelper.FindUserFriends(destuid);


            if (GetFriends.IsFriendNumFull())
            {
                receipt = RequestFriendResult.FriendNumFull;
            }
            else if (destFriends.IsFriendNumFull())
            {
                receipt = RequestFriendResult.DestFriendNumFull;
            }
            else if (GetFriends.IsHaveFriend(destuid))
            {
                receipt = RequestFriendResult.HadFriend;
            }
            else if (destFriends.IsHaveFriendApply(Current.UserId))
            {
                receipt = RequestFriendResult.HadApply;
            }
            else
            {
                receipt = RequestFriendResult.OK;

                destFriends.AddFriendApply(Current.UserId);
                var session = GameSession.Get(destuid);
                PushMessageHelper.NewFriendRequestNotification(GameSession.Get(destuid), Current.UserId);

                //GetFriends.AddFriend(destuid);

                //destFriends.AddFriend(Current.UserId);

                //PushMessageHelper.NewFriendNotification(GameSession.Get(destuid), Current.UserId);
                //PushMessageHelper.NewFriendNotification(Current, destuid);
            }

            return(true);
        }
Esempio n. 13
0
        public override bool TakeAction()
        {
            var guild = new ShareCacheStruct <GuildsCache>().FindKey(guildId);

            if (guild == null)
            {
                receipt = RequestGuildResult.NoGuild;
                return(true);
            }
            if (guild.MemberList.Count >= 50)
            {
                receipt = RequestGuildResult.Full;
                return(true);
            }
            if (guild.FindRequest(Current.UserId) != null)
            {
                receipt = RequestGuildResult.HadRequest;
                return(true);
            }

            GuildCharacter character = new GuildCharacter()
            {
                UserID = Current.UserId,
                Date   = DateTime.Now
            };

            guild.AddNewRequest(character);

            foreach (var v in guild.MemberList)
            {
                PushMessageHelper.NewGuildRequestNotification(GameSession.Get(v.UserID), Current.UserId);
            }


            receipt = RequestGuildResult.Successfully;
            return(true);
        }
Esempio n. 14
0
        public override bool TakeAction()
        {
            bool isAtevent = false;
            var  guildsSet = new ShareCacheStruct <GuildsCache>();
            var  guildData = guildsSet.FindKey(GetGuild.GuildID);

            if (guildData == null)
            {
                return(false);
            }


            var member = guildData.FindMember(Current.UserId);

            if (member == null)
            {
                return(false);
            }

            isAtevent = member.JobTitle == GuildJobTitle.Atevent;


            guildData.RemoveMember(member);
            GetGuild.GuildID = string.Empty;

            if (guildData.MemberList.Count > 0)
            {
                if (isAtevent)
                {
                    var ac = guildData.FindAteventCandidate();
                    if (ac != null)
                    {
                        ac.JobTitle = GuildJobTitle.Atevent;
                        foreach (var v in guildData.MemberList)
                        {
                            PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), ac.UserID);
                        }
                    }
                }

                GuildLogData log = new GuildLogData()
                {
                    UserId   = Current.UserId,
                    UserName = GetBasis.NickName,
                    LogTime  = DateTime.Now,
                    Content  = string.Format("玩家 {0} 退出了公会。", GetBasis.NickName),
                };
                guildData.NewLog(log);

                foreach (var v in guildData.MemberList)
                {
                    PushMessageHelper.GuildMemberRemoveNotification(GameSession.Get(v.UserID), Current.UserId);
                    PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
                }
            }


            GlobalRemoteService.SendUserData(GetBasis, GetGuild.GuildID);

            receipt = true;
            return(true);
        }
Esempio n. 15
0
        public override void TakeActionAffter(bool state)
        {
            for (ChatType type = ChatType.World; type < ChatType.System; ++type)
            {
                //var parameters = new Parameters();
                //parameters["ChatType"] = type;
                //var packet = ActionFactory.GetResponsePackage(ActionIDDefine.Cst_Action3002, Current, parameters, OpCode.Text, null);
                //ActionFactory.SendAction(Current, ActionIDDefine.Cst_Action3002, packet, (session, asyncResult) => { }, 0);
            }
            string   context  = "";
            RankType ranktype = RankType.No;
            int      rankid   = 0;

            if (GetBasis.LevelRankID != 0 && GetBasis.LevelRankID < 10)
            {
                ranktype = RankType.Level;
                rankid   = GetBasis.LevelRankID;
                context  = string.Format("排行榜第{0}名的 {1} 上线了!", rankid, GetBasis.NickName);
            }
            if (GetBasis.CombatRankID != 0 && GetBasis.CombatRankID <= rankid)
            {
                ranktype = RankType.Combat;
                rankid   = GetBasis.CombatRankID;
                context  = string.Format("通天塔排名第{0}名的 {1} 上线了!", rankid, GetBasis.NickName);
            }

            if (ranktype != RankType.No)
            {
                if (GetBasis.UserLv >= DataHelper.OpenRankSystemUserLevel)
                {
                    //GlobalRemoteService.SendNotice(NoticeMode.World, context);
                }
            }

            // 通知好友上线
            foreach (FriendData fd in GetFriends.FriendsList)
            {
                PushMessageHelper.FriendOnlineNotification(GameSession.Get(fd.UserId), Current.UserId);
            }


            // 通知公会成员下线
            if (!GetGuild.GuildID.IsEmpty())
            {
                var guildData = new ShareCacheStruct <GuildsCache>().FindKey(GetGuild.GuildID);
                foreach (var v in guildData.MemberList)
                {
                    if (v.UserID != Current.UserId)
                    {
                        PushMessageHelper.GuildMemberOnlineNotification(GameSession.Get(v.UserID), Current.UserId);
                    }
                }
            }

            //context = "欢迎进入创想学院!";
            //RemoteClient.SendSystemChat(Current.UserId, context);


            GetBasis.IsRefreshing = false;

            base.TakeActionAffter(state);
        }
Esempio n. 16
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);
        }
Esempio n. 17
0
        public override bool TakeAction()
        {
            receipt = new PassLevelReceipt();
            bool isDataError = false;

            if (att > GetAttribute.Atk ||
                crit > GetAttribute.Crit ||
                hit > GetAttribute.Hit ||
                GetBasis.CurrentPassLevelID == 0)
            {
                TraceLog.WriteError("1111检测属性异常: Uid:{0}, Name:{1}, " +
                                    "Atk={2}, Crit={3}, Hit={4}, CurrentPassLevelID={5}", Current.UserId, GetBasis.NickName,
                                    att, crit, hit, GetBasis.CurrentPassLevelID);
                isDataError = true;
            }

            if (!isDataError)
            {
                if (GetBasis.LastPassLevelID != GetBasis.CurrentPassLevelID &&
                    GetBasis.CurrentPassLevelID % 5 != 0 &&
                    GetBasis.CurrentPassLevelID > 10)
                {
                    var timespan = DateTime.Now.Subtract(GetBasis.LastPassLevelTime);
                    if (timespan.TotalSeconds < 30)
                    {
                        TraceLog.WriteError("1111检测通关时间异常: Uid:{0}, Name:{1}, TotalSeconds={2}",
                                            Current.UserId, GetBasis.NickName, timespan.TotalSeconds);
                        isDataError = true;
                    }
                }
            }

            if (isDataError)
            {
                PushMessageHelper.UserGameDataExceptionNotification(Current);
                return(false);
            }

            GetBasis.LastPassLevelTime = DateTime.Now;
            GetBasis.LastPassLevelID   = GetBasis.CurrentPassLevelID;

            if (GetBasis.BackLevelNum > 0)
            {
                int levelDown = GetBasis.BackLevelNum;
                GetBasis.UserLv = Math.Max(GetBasis.UserLv - levelDown, 10);
                UserHelper.UserLvChange(Current.UserId);
                GetBasis.BackLevelNum = 0;
                receipt.UserLv        = GetBasis.UserLv;
                receipt.NextMap       = GetBasis.UserLv;
                PushMessageHelper.UserLvChangeNotification(Current);
            }
            else if (UserHelper.UserLevelUpCheck(Current.UserId, GetBasis.CurrentPassLevelID))
            {
                receipt.UserLv  = GetBasis.UserLv;
                receipt.NextMap = GetBasis.UserLv;
            }
            else
            {
                receipt.UserLv  = GetBasis.UserLv;
                receipt.NextMap = GetBasis.CurrentPassLevelID;
            }

            if (receipt.NextMap % 5 == 0 && GetBasis.Vit > 0 && GetBasis.Vit < 3)
            {
                receipt.NextMap = GetBasis.CurrentPassLevelID;
            }
            GetBasis.CurrentPassLevelID = 0;
            return(true);
        }
Esempio n. 18
0
        public override bool TakeAction()
        {
            receipt = new SendTransferItemReceipt();
            if (GetTransfer.SendCount >= 3)
            {
                receipt.Result = TransferItemResult.SendCountOut;
                return(true);
            }

            var itemdata = GetPackage.FindItem(itemId);

            if (itemdata == null || itemdata.Num < itemNum)
            {
                return(false);
            }
            var dest = UserHelper.FindUserBasis(destId);

            if (dest == null)
            {
                return(false);
            }
            var destTransfer = UserHelper.FindUserTransfer(destId);

            string newId = Guid.NewGuid().ToString("N");
            ReceiveTransferItemData receiveData = new ReceiveTransferItemData()
            {
                ID               = newId,
                Sender           = Current.UserId,
                SenderName       = GetBasis.NickName,
                SenderProfession = GetBasis.Profession,
                SenderAvatar     = GetBasis.AvatarUrl,
                Date             = DateTime.Now,
                IsReceived       = false,
            };

            receiveData.AppendItem.ID  = itemId;
            receiveData.AppendItem.Num = itemNum;

            receipt.Data = new SendTransferItemData()
            {
                ID                 = newId,
                Receiver           = dest.UserID,
                ReceiverName       = dest.NickName,
                ReceiverProfession = dest.Profession,
                ReceiverAvatar     = dest.AvatarUrl,
                Date               = DateTime.Now,
                IsReceived         = false,
            };
            receipt.Data.Password       = Util.GetRandom4Pwd();
            receipt.Data.AppendItem.ID  = itemId;
            receipt.Data.AppendItem.Num = itemNum;

            GetPackage.RemoveItem(itemId, itemNum);

            destTransfer.ReceiveList.Add(receiveData);
            PushMessageHelper.NewReceiveTransferItemNotification(GameSession.Get(destId), newId);

            GetTransfer.SendList.Add(receipt.Data);

            GetTransfer.SendCount++;
            receipt.Result = TransferItemResult.Successfully;
            return(true);
        }
Esempio n. 19
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);
        }
Esempio n. 20
0
        public override bool TakeAction()
        {
            var guildData = new ShareCacheStruct <GuildsCache>().FindKey(GetGuild.GuildID);

            if (guildData == null)
            {
                return(false);
            }

            var guildcfg = new ShareCacheStruct <Config_Society>().FindKey(guildData.Lv);

            if (guildcfg == null)
            {
                return(false);
            }


            if (guildData.FindAtevent().UserID != Current.UserId &&
                guildData.FindVice(Current.UserId) == null)
            {
                receipt = RequestGuildResult.NoAuthority;
                return(true);
            }

            var basis = UserHelper.FindUserBasis(_DestUid);
            var guild = UserHelper.FindUserGuild(_DestUid);

            if (basis == null)
            {
                return(false);
            }



            if (_isAgree)
            {
                if (guildData.MemberList.Count >= guildcfg.Number)
                {
                    receipt = RequestGuildResult.Full;
                }

                else if (!guild.GuildID.IsEmpty())
                {
                    receipt = RequestGuildResult.HadGuild;
                }
                else
                {
                    GuildCharacter member = new GuildCharacter()
                    {
                        UserID   = basis.UserID,
                        JobTitle = GuildJobTitle.Normal,
                        Liveness = 0
                    };

                    GuildLogData log = new GuildLogData()
                    {
                        UserId   = basis.UserID,
                        UserName = basis.NickName,
                        LogTime  = DateTime.Now,
                        Content  = string.Format("玩家 {0} 加入了公会。", basis.NickName),
                    };
                    guildData.NewLog(log);

                    // 通知公会成员有新成员加入
                    foreach (var v in guildData.MemberList)
                    {
                        PushMessageHelper.NewGuildMemberNotification(GameSession.Get(v.UserID), _DestUid);
                        PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
                    }

                    guildData.AddNewMember(member);
                    guild.GuildID  = guildData.GuildID;
                    guild.IsSignIn = false;

                    // 通知新成员公会信息
                    PushMessageHelper.JoinGuildNotification(GameSession.Get(_DestUid));

                    GlobalRemoteService.SendUserData(basis, guild.GuildID);

                    receipt = RequestGuildResult.Successfully;
                }
            }
            // 从邀请列表里清除
            guildData.RemoveRequest(_DestUid);

            foreach (var v in guildData.MemberList)
            {
                PushMessageHelper.GuildApplyRemoveNotification(GameSession.Get(v.UserID), _DestUid);
            }
            return(true);
        }
Esempio n. 21
0
        public override bool TakeAction()
        {
            var monster = new ShareCacheStruct <Config_Monster>().Find(t => t.Grade == GetBasis.UserLv);

            if (monster == null)
            {
                return(false);
            }


            BigInteger dropGold      = BigInteger.Parse(monster.DropoutGold);
            BigInteger uploadingGold = BigInteger.Parse(goldNum);


            bool isDataError = false;

            if (dropGold != uploadingGold)
            {
                if (GetBasis.UserLv % 5 == 0)
                {
                    var lastmonster = new ShareCacheStruct <Config_Monster>().Find(t => t.Grade == GetBasis.UserLv - 1);
                    if (lastmonster != null)
                    {
                        dropGold = BigInteger.Parse(lastmonster.DropoutGold);
                        if (dropGold != uploadingGold)
                        {
                            isDataError = true;
                            TraceLog.WriteError("1110检测金币异常: Uid:{0}, Name:{1}, " +
                                                "DropGold={2}, UploadingGold={3}", Current.UserId, GetBasis.NickName, dropGold, uploadingGold);
                        }
                    }
                }
                else
                {
                    isDataError = true;

                    TraceLog.WriteError("1110检测金币异常: Uid:{0}, Name:{1}, " +
                                        "DropGold={2}, UploadingGold={3}", Current.UserId, GetBasis.NickName, dropGold, uploadingGold);
                }
            }

            if (!isDataError)
            {
                DateTime dropDate = Util.GetTime(dropTime);
                if (GetBasis.LastDropGoldTime == DateTime.MinValue)
                {
                    GetBasis.LastDropGoldTime = dropDate;
                }
                else
                {
                    var    timespan = dropDate.Subtract(GetBasis.LastDropGoldTime);
                    double sec      = timespan.TotalSeconds;
                    if (sec >= 3)
                    {
                        GetBasis.LastDropGoldTime      = dropDate;
                        GetBasis.DropGoldIntervalCount = 1;
                    }
                    else
                    {
                        GetBasis.DropGoldIntervalCount++;
                        if (GetBasis.DropGoldIntervalCount > 6)
                        {
                            isDataError = true;
                            TraceLog.WriteError("1110检测时间异常: Uid:{0}, Name:{1}, " +
                                                "Time={2}, DropCount={3}, LastDropGoldTime={4}, DropDate={5}", Current.UserId, GetBasis.NickName,
                                                sec, GetBasis.DropGoldIntervalCount, GetBasis.LastDropGoldTime, dropDate);
                        }
                    }
                }
            }

            if (isDataError)
            {
                GetBasis.DropGoldIntervalCount = 0;
                PushMessageHelper.UserGameDataExceptionNotification(Current);
                return(false);
            }


            UserHelper.RewardsGold(Current.UserId, monster.DropoutGold, UpdateCoinOperate.KillMonsterReward, true);
            receipt = true;
            return(true);
        }
Esempio n. 22
0
        public override bool TakeAction()
        {
            var guildsSet = new ShareCacheStruct <GuildsCache>();

            if (!GetGuild.GuildID.IsEmpty())
            {
                var oldguild = guildsSet.FindKey(GetGuild.GuildID);
                if (oldguild != null && oldguild.FindMember(Current.UserId) != null)
                {
                    return(false);
                }
            }

            int needDiamond = ConfigEnvSet.GetInt("User.CreateGuildNeedDiamond");

            if (GetBasis.DiamondNum < needDiamond)
            {
                receipt = RequestGuildResult.NoDiamond;
                return(true);
            }
            if (guildsSet.Find(t => t.GuildName == _guildName) != null)
            {
                receipt = RequestGuildResult.HadName;
                return(true);
            }

            GuildsCache guild = new GuildsCache()
            {
                GuildID    = Guid.NewGuid().ToString(),
                GuildName  = _guildName,
                Liveness   = 0,
                RankID     = 0,
                CreateDate = DateTime.Now,
                Lv         = 1
            };

            GuildCharacter member = new GuildCharacter()
            {
                UserID   = Current.UserId,
                JobTitle = GuildJobTitle.Atevent,
                Liveness = 0
            };

            guild.AddNewMember(member);

            GuildLogData log = new GuildLogData()
            {
                UserId   = Current.UserId,
                UserName = GetBasis.NickName,
                LogTime  = DateTime.Now,
                Content  = string.Format("玩家 {0} 创建了公会。", GetBasis.NickName),
            };

            guild.NewLog(log);

            guildsSet.Add(guild);
            guildsSet.Update();
            GetGuild.GuildID = guild.GuildID;
            PushMessageHelper.JoinGuildNotification(Current);

            GlobalRemoteService.SendUserData(GetBasis, GetGuild.GuildID);

            receipt = RequestGuildResult.Successfully;
            return(true);
        }
Esempio n. 23
0
        public override bool TakeAction()
        {
            receipt        = new RobReceipt();
            receipt.Result = false;

            if (GetLottery.RobTimes <= 0)
            {
                return(true);
            }
            if (GetLottery.Rob.RivalUid != selectId &&
                !GetEnemys.IsHaveEnemy(selectId) &&
                !GetFriends.IsHaveFriend(selectId))
            {
                return(true);
            }

            var rival = UserHelper.FindUserBasis(selectId);

            if (rival == null)
            {
                return(true);
            }
            var rivalEnemy = UserHelper.FindUserEnemy(rival.UserID);

            if (rivalEnemy == null)
            {
                return(true);
            }

            var lotterycfg = new ShareCacheStruct <Config_Lottery>().Find(t => (t.Type == LotteryAwardType.Rob));

            if (lotterycfg == null)
            {
                return(false);
            }

            GetLottery.RobTimes--;

            BigInteger dummyGold = 0;

            if (GetLottery.Rob.RivalUid == selectId)
            {
                dummyGold = BigInteger.Parse(GetLottery.Rob.Gold);

                GetLottery.Rob.RivalUid       = 0;
                GetLottery.Rob.RivalName      = string.Empty;
                GetLottery.Rob.RivalAvatarUrl = string.Empty;
                GetLottery.Rob.Gold           = "0";
                UserHelper.RandomRobTarget(Current.UserId);
            }
            if (GetFriends.IsHaveFriend(selectId))
            {
                var frienddata = GetFriends.FindFriend(selectId);
                dummyGold = BigInteger.Parse(frienddata.RobGold);

                frienddata.RobGold = "0";
                GetFriends.AddRobRecord(selectId);
            }
            if (GetEnemys.IsHaveEnemy(selectId))
            {
                var enemydata = GetEnemys.FindEnemy(selectId);
                dummyGold = BigInteger.Parse(enemydata.RobGold);

                GetEnemys.RemoveEnemy(rival.UserID);
            }

            if (result == EventStatus.Bad)
            {
                dummyGold = dummyGold / 5;
            }

            receipt.Gold = dummyGold.ToString();
            UserHelper.RewardsGold(Current.UserId, dummyGold);
            BigInteger realGold = rival.GoldNum <= dummyGold * 2 ? rival.GoldNum / 2 : dummyGold;

            UserHelper.ConsumeGold(rival.UserID, realGold);

            int levelDown = 0;

            if (result == EventStatus.Good)
            {
                int downlv = rival.UserLv <= 1000 ? 10 : rival.UserLv / 100;
                levelDown = Math.Max(rival.UserLv - downlv, 0);
                levelDown = Math.Min(levelDown, downlv);
                //rival.UserLv = Math.Max(rival.UserLv - levelDown, 10);
                //UserHelper.UserLvChange(rival.UserID);
                //PushMessageHelper.UserLvChangeNotification(GameSession.Get(rival.UserID));
                rival.BackLevelNum += downlv;
            }

            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(),
                LevelDown       = levelDown,
                IsSteal         = false,
                Status          = result,
                RivalProfession = GetBasis.Profession
            };

            rivalEnemy.PushLog(log);
            PushMessageHelper.NewStealRobNotification(GameSession.Get(rival.UserID));



            receipt.Lottery = GetLottery;
            receipt.Result  = true;


            return(true);
        }
Esempio n. 24
0
        public override bool TakeAction()
        {
            receipt = new LotteryData();

            var itemSet = new ShareCacheStruct <Config_Item>();

            int times = isFiveTimes ? 5 : 1;

            if (GetLottery.LotteryTimes <= times)
            {
                int needDiamond = ConfigEnvSet.GetInt("User.BuyLotteryTimesNeedDiamond") * (times - GetLottery.LotteryTimes);
                if (GetBasis.DiamondNum < needDiamond)
                {
                    receipt.Result = RequestLotteryResult.NoDiamond;
                    return(true);
                }
                UserHelper.ConsumeDiamond(Current.UserId, needDiamond);
                //receipt.Result = RequestLotteryResult.NoTimes;
                //return true;
            }

            BigInteger      awardGold    = 0;
            int             awardDiamond = 0;
            List <ItemData> awardItem    = new List <ItemData>();

            int lotteryId = 0;
            LotteryAwardType awardType = LotteryAwardType.Gold;

            GetLottery.StealTimes = 0;
            GetLottery.RobTimes   = 0;
            for (int i = 0; i < times; ++i)
            {
                if (GetLottery.TotalCount == 0)
                {
                    lotteryId = 7;
                    awardType = LotteryAwardType.Steal;
                }
                else if (GetLottery.TotalCount == 1)
                {
                    lotteryId = 8;
                    awardType = LotteryAwardType.Rob;
                }
                else
                {
                    var randlottery = UserHelper.RandomLottery(GetBasis.UserLv);
                    if (randlottery != null)
                    {
                        lotteryId = randlottery.ID;
                        awardType = randlottery.Type;
                    }
                }

                Config_Lottery lott = new ShareCacheStruct <Config_Lottery>().FindKey(lotteryId);
                if (lott == null)
                {
                    return(false);
                }

                LottItem item = new LottItem();
                item.ID   = lotteryId;
                item.Type = awardType;
                switch (lott.Type)
                {
                case LotteryAwardType.Gold:
                {
                    BigInteger resourceNum = BigInteger.Parse(lott.Content);
                    BigInteger value       = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * resourceNum;
                    awardGold += value;

                    item.ItemID = 0;
                    item.Num    = value.ToString();
                }
                break;

                case LotteryAwardType.Diamond:
                {
                    awardDiamond += lott.Content.ToInt();
                    item.ItemID   = 0;
                    item.Num      = lott.Content;
                }
                break;

                case LotteryAwardType.Gem:
                {
                    int maxCount = lott.Content.ToInt();
                    if (maxCount > 0)
                    {
                        var lotteryGem = UserHelper.RandomLotteryGem();

                        item.ItemID = lotteryGem.ID;
                        item.Num    = maxCount.ToString();

                        awardItem.Add(new ItemData()
                            {
                                ID = lotteryGem.ID, Num = maxCount
                            });
                    }
                }
                break;

                case LotteryAwardType.Debris:
                {
                    var debris = itemSet.FindAll(t => (t.ItemType == ItemType.Debris));
                    foreach (var v in GetElf.ElfList)
                    {
                        var elfCard = itemSet.Find(t => t.ResourceNum.ToInt() == v.ID);
                        if (elfCard == null)
                        {
                            continue;
                        }

                        debris.RemoveAll(t => (t.ResourceNum.ToInt() == elfCard.ItemID));
                    }
                    if (debris.Count == 0)
                    {
                        debris = itemSet.FindAll(t => (t.ItemType == ItemType.Debris));
                    }

                    int maxCount = lott.Content.ToInt();
                    if (maxCount > 0)
                    {
                        int index   = random.Next(debris.Count);
                        int awardId = debris[index].ItemID;

                        item.ItemID = awardId;
                        item.Num    = maxCount.ToString();

                        awardItem.Add(new ItemData()
                            {
                                ID = awardId, Num = maxCount
                            });
                    }
                }
                break;

                case LotteryAwardType.Elf:
                {
                    item.ItemID = lott.Content.ToInt();
                    item.Num    = "1";

                    awardItem.Add(new ItemData()
                        {
                            ID = lott.Content.ToInt(), Num = 1
                        });

                    var itemcfg = new ShareCacheStruct <Config_Item>().FindKey(item.ItemID);
                    if (itemcfg != null)
                    {
                        string context = string.Format("恭喜 {0} 在幸运大夺宝中获得精灵 {1}",
                                                       GetBasis.NickName, itemcfg.ItemName);
                        GlobalRemoteService.SendNotice(NoticeMode.World, context);
                    }
                }
                break;

                case LotteryAwardType.Steal:
                {
                    GetLottery.StealTimes++;
                    UserHelper.RandomStealTarget(Current.UserId);
                }
                break;

                case LotteryAwardType.Rob:
                {
                    GetLottery.RobTimes++;
                    UserHelper.RandomRobTarget(Current.UserId);
                }
                break;

                case LotteryAwardType.Vit:
                {
                    GetBasis.Vit += lott.Content.ToInt();
                    PushMessageHelper.UserVitChangedNotification(Current);
                }
                break;
                }
                receipt.AwardList.Add(item);

                GetLottery.TotalCount++;
            }

            UserHelper.RewardsGold(Current.UserId, awardGold, UpdateCoinOperate.NormalReward, true);
            UserHelper.RewardsDiamond(Current.UserId, awardDiamond);
            UserHelper.RewardsItems(Current.UserId, awardItem);

            if (GetLottery.LotteryTimes == ConfigEnvSet.GetInt("User.LotteryTimesMax"))
            {
                GetLottery.StartRestoreLotteryTimesDate = DateTime.Now;
            }
            if (GetLottery.LotteryTimes > 0)
            {
                GetLottery.LotteryTimes = MathUtils.Subtraction(GetLottery.LotteryTimes, times, 0);
            }

            UserHelper.EveryDayTaskProcess(Current.UserId, TaskType.Lottery, times);

            receipt.Result = RequestLotteryResult.OK;

            return(true);
        }
Esempio n. 25
0
        public override bool TakeAction()
        {
            var guildsSet = new ShareCacheStruct <GuildsCache>();

            var guild = guildsSet.FindKey(GetGuild.GuildID);

            if (guild == null)
            {
                return(false);
            }

            int needDiamond = ConfigEnvSet.GetInt("User.CreateGuildNeedDiamond");

            if (GetBasis.DiamondNum < needDiamond)
            {
                receipt = RequestGuildResult.NoDiamond;
                return(true);
            }

            var basis = UserHelper.FindUserBasis(_destUid);

            var self       = guild.FindMember(Current.UserId);
            var destMember = guild.FindMember(_destUid);

            if (Current.UserId == _destUid ||
                guild.FindAtevent().UserID != Current.UserId ||
                destMember == null)
            {
                receipt = RequestGuildResult.NoAuthority;
                return(true);
            }


            switch (_jobTitle)
            {
            case GuildJobTitle.Atevent:
            {
                destMember.JobTitle = GuildJobTitle.Atevent;
                self.JobTitle       = GuildJobTitle.Normal;

                GuildLogData log = new GuildLogData()
                {
                    UserId   = basis.UserID,
                    UserName = basis.NickName,
                    LogTime  = DateTime.Now,
                    Content  = string.Format("玩家 {0} 被提升为会长。", basis.NickName),
                };
                guild.NewLog(log);


                foreach (var v in guild.MemberList)
                {
                    PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), _destUid);
                    PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), Current.UserId);
                    PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
                }
            }
            break;

            case GuildJobTitle.Vice:
            {
                if (guild.FindVice(_destUid) != null)
                {
                    receipt = RequestGuildResult.NoAuthority;
                    return(true);
                }
                if (guild.FindVice().Count >= 2)
                {
                    return(false);
                }
                destMember.JobTitle = GuildJobTitle.Vice;
                GuildLogData log = new GuildLogData()
                {
                    UserId   = basis.UserID,
                    UserName = basis.NickName,
                    LogTime  = DateTime.Now,
                    Content  = string.Format("玩家 {0} 被提升为副会长。", basis.NickName),
                };
                guild.NewLog(log);
                foreach (var v in guild.MemberList)
                {
                    PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), _destUid);
                    PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
                }
            }
            break;

            case GuildJobTitle.Normal:
            {
                if (guild.FindVice(_destUid) == null)
                {
                    receipt = RequestGuildResult.NoAuthority;
                    return(true);
                }
                destMember.JobTitle = GuildJobTitle.Normal;
                GuildLogData log = new GuildLogData()
                {
                    UserId   = basis.UserID,
                    UserName = basis.NickName,
                    LogTime  = DateTime.Now,
                    Content  = string.Format("玩家 {0} 被降为普通成员。", basis.NickName),
                };
                guild.NewLog(log);
                foreach (var v in guild.MemberList)
                {
                    PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), _destUid);
                    PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
                }
            }
            break;
            }


            receipt = RequestGuildResult.Successfully;
            return(true);
        }
Esempio n. 26
0
        public override bool TakeAction()
        {
            GetBasis.UserStatus = UserStatus.MainUi;
            GameSession        destSession   = GameSession.Get(destuid);
            UserBasisCache     destBasis     = UserHelper.FindUserBasis(destuid);
            UserAttributeCache destAttribute = UserHelper.FindUserAttribute(destuid);

            if (destSession == null || !destSession.Connected || destBasis == null ||
                destBasis.UserStatus != UserStatus.Inviteing || destBasis.InviteFightDestUid != Current.UserId)
            {
                return(true);
            }

            AutoFight.RemoveFightBot(destuid);

            if (result == EventStatus.Bad)
            {
                destBasis.UserStatus         = UserStatus.MainUi;
                destBasis.InviteFightDestUid = 0;
                PushMessageHelper.RefuseInviteFightNotification(destSession, GetBasis.NickName);
            }
            else
            {// 切磋开始通知
                GetBasis.UserStatus  = UserStatus.Fighting;
                destBasis.UserStatus = UserStatus.Fighting;

                EventStatus retresult = EventStatus.Good;
                float       diff      = (float)GetAttribute.FightValue / destAttribute.FightValue;
                if (diff > 1.1f)
                {
                    retresult = EventStatus.Good;
                }
                else if (diff < 0.9f)
                {
                    retresult = EventStatus.Bad;
                }
                else
                {
                    if (diff >= 1.0f)
                    {
                        retresult = random.Next(1000) < 8000 ? EventStatus.Good : EventStatus.Bad;
                    }
                    else
                    {
                        retresult = random.Next(1000) < 8000 ? EventStatus.Bad : EventStatus.Good;
                    }
                }

                if (retresult == EventStatus.Bad)
                {
                    PushMessageHelper.StartInviteFightNotification(Current, destuid, EventStatus.Bad);
                    PushMessageHelper.StartInviteFightNotification(destSession, Current.UserId, EventStatus.Good);
                }
                else
                {
                    PushMessageHelper.StartInviteFightNotification(Current, destuid, EventStatus.Good);
                    PushMessageHelper.StartInviteFightNotification(destSession, Current.UserId, EventStatus.Bad);
                }
            }
            return(true);
        }