예제 #1
0
 //处理服务器收到的信息数据,返回gameuser信息
 public static GameUser InfoDataDeal(MySQLCtrl mySQLCtrl, Socket socket, string infoStr)
 {
     string[] strTemp = DataCtrl.SegmentData(infoStr);
     GameUser gameuser = new GameUser();
     switch (strTemp[0])
     {
         //收到注册数据
         case "0":
             string[] infos = DataCtrl.SegmentData(infoStr.Substring(2));
             if (mySQLCtrl.IsExistInDb(infos[0]))
             { gameuser.Status = "0|0|0|注册邮箱已存在|"; return gameuser; }
             if (mySQLCtrl.IsNickNameExistInDb(infos[1]))
             { gameuser.Status = "0|0|0|注册昵称已存在|"; return gameuser; }
             RegisterDeal(mySQLCtrl, socket, infos, out gameuser);
             return gameuser;
         //收到登陆数据
         case "1":
             string[] loadInfo = DataCtrl.SegmentData(infoStr.Substring(2));
             if (!mySQLCtrl.IsExistInDb(loadInfo[0]))
             { gameuser.Status = "0|1|0|登录邮箱未注册|"; return gameuser; }
             SignDeal(mySQLCtrl, socket, loadInfo, out gameuser);
             return gameuser;
         default: return null;
     }
 }
예제 #2
0
        public override bool TakeAction()
        {
            int sportsIndex;

            if (int.TryParse(userSportsID, out sportsIndex))
            {
                var tempList = ContextUser.GetSportsCombat();
                if (tempList.Count > 0 && sportsIndex < tempList.Count)
                {
                    sportsIndex        = MathUtils.Addition(sportsIndex, 1);
                    _uSportsCombat     = tempList[tempList.Count - sportsIndex] ?? new SportsCombat();
                    _combatProcessList = _uSportsCombat.CombatProcess ?? new CombatProcessContainer();

                    _userTalPriority = CombatHelper.TotalPriorityNum(ContextUser.UserID, 0);

                    if (_combatProcessList.DefenseList.Count > 0)
                    {
                        _npcTalPriority = CombatHelper.TotalPriorityNum(_combatProcessList.DefenseList[0].UserID, 0);
                    }
                }
            }
            else if (!string.IsNullOrEmpty(toUserID))
            {
                UserHelper.ChechDailyRestrain(ContextUser.UserID);
                if (ContextUser.UserID == toUserID)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
                if (GetChallGeNum(ContextUser.UserID) <= 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St5107_ChallGeNumFull;
                    return(false);
                }

                toGameUser = UserCacheGlobal.LoadOffline(toUserID);
                if (ContextUser.UseMagicID == 0 || toGameUser == null || toGameUser.UseMagicID == 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St4004_NoUseMagic;
                    return(false);
                }
                RankingHelper.SportSRewardGain(toUserID, toGameUser.RankID);   //被挑战者的竞技排名
                //todo 竞技场冷却时间清除
                //var userQueueCache = new PersonalCacheStruct<UserQueue>();
                //var queueArray = userQueueCache.FindAll(Uid, m => m.QueueType == QueueType.JingJiTiaoZhan);
                //if (queueArray.Count > 0 && queueArray[0].DoRefresh() > 0)
                //{
                //    ErrorCode = LanguageManager.GetLang().ErrorCode;
                //    ErrorInfo = LanguageManager.GetLang().St5107_Colding;
                //    return false;
                //}
                //if (queueArray.Count > 0)
                //{
                //    var userQueue = queueArray[0];
                //    userQueue.ColdTime = codeTime;
                //    userQueue.TotalColdTime = codeTime;
                //    userQueue.Timing = DateTime.Now;
                //}
                //else
                //{
                //    UserQueue queue = new UserQueue()
                //    {
                //        QueueID = Guid.NewGuid().ToString(),
                //        QueueType = QueueType.JingJiTiaoZhan,
                //        QueueName = QueueType.JingJiTiaoZhan.ToString(),
                //        UserID = ContextUser.UserID,
                //        ColdTime = codeTime,
                //        IsSuspend = false,
                //        TotalColdTime = codeTime,
                //        Timing = DateTime.Now
                //    };
                //    userQueueCache.Add(queue);
                //    //queue.Append();
                //}
                //次数限制修改
                int sportNum = 0;
                UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(ContextUser.UserID);
                if (dailyRestrain != null)
                {
                    sportNum = MathUtils.Addition(dailyRestrain.Funtion9, 1, int.MaxValue);
                    dailyRestrain.Funtion9 = sportNum;
                    //dailyRestrain.Update();
                }
                else
                {
                    sportNum = 1;
                }
                TriggerSportCombat(ContextUser, toGameUser, sportNum, ref sportsPrizeStr, userMail);

                var tempList = ContextUser.GetSportsCombat();
                if (tempList.Count > 0)
                {
                    _uSportsCombat     = tempList[tempList.Count - 1] ?? new SportsCombat();
                    _combatProcessList = _uSportsCombat.CombatProcess ?? new CombatProcessContainer();
                }
                //日常任务-竞技
                TaskHelper.TriggerDailyTask(Uid, 4006);
                _userTalPriority = CombatHelper.TotalPriorityNum(ContextUser.UserID, 0);
                _npcTalPriority  = CombatHelper.TotalPriorityNum(toUserID, 0);
            }
            else
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }

            userMail.GameCoin = _uSportsCombat.RewardGoin;
            userMail.Obtion   = _uSportsCombat.RewardObtian;
            var tjxMailService = new TjxMailService(toGameUser);

            tjxMailService.Send(userMail);

            _selfAbilityEffectList    = UserAbilityHelper.GetSelfAbilityEffectList(ContextUser.UserID, 0);
            _defSelfAbilityEffectList = UserAbilityHelper.GetSelfAbilityEffectList(toUserID, 1);
            _selfAbilityEffectList.AddRange(_defSelfAbilityEffectList);
            return(true);
        }
예제 #3
0
        static void InitMall(GameUser user)
        {
            var examquest = new DemoExamQuestion(user.UserId);

            examquest.DoAnswer();
        }
예제 #4
0
 //处理注册数据
 private static bool RegisterDeal(MySQLCtrl mySQLCtrl, Socket socket, string[] infos, out GameUser gameuser)
 {
     if (mySQLCtrl.InsertToDb(infos[0], infos[1], infos[2], infos[3]))
     {
         gameuser = new GameUser(infos[0], infos[1], infos[2], infos[3], "0");
         gameuser.Status = "0|0|1|";
         return true;
     }
     gameuser = null;
     gameuser.Status = "0|0|0|注册失败,请重试|";
     return false;
 }
예제 #5
0
 /// <summary>
 ///在citadelsdb的GameUser表中依靠邮箱查询
 /// </summary>
 /// <param name="mail"></param>
 /// <returns></returns>
 public GameUser SelecInDb(string mail)
 {
     GameUser gameUser = new GameUser();
     MySqlCmd.CommandText = String.Format("select* from GameUser where GameUser_Mail='{0}'", mail);
     MySqlCmd.Connection = MySqlConnection;
     MySqlDataReader reader = MySqlCmd.ExecuteReader();
     while (reader.Read())
     {
         if (reader.HasRows)
         {
             gameUser = new GameUser(reader.GetString(1), reader.GetString(2), reader.GetString(3), reader.GetString(4), reader.GetString(5));
         }
     }
     reader.Close();
     return gameUser;
 }
예제 #6
0
        public override bool UserLeft(GameUser user, bool voluntarily)
        {
            user.CanVote = user.CanChooseCards = false;

            if (!Votes.ContainsKey(user.Guid))
                return !CardsetOrder.Contains(user);

            if (Votes[user.Guid] == null)
                Votes.Remove(user.Guid);

            SelectWinner();

            return true;
        }
 void OnEnable()
 {
     user = (GameUser)ParseUser.CurrentUser;
     title.text = "Welcome " + user.PlayerName;
 }
예제 #8
0
 private void mapper(GameUser gameUsers, GameUserViewModel viewModel)
 {
     gameUsers.UserName = viewModel.UserName;
     gameUsers.Password = viewModel.Password;
 }
예제 #9
0
        public static bool Add(int UID, int playerID, Connection userCon)
        {
            GameUser gUser = new GameUser(UID, playerID, userCon);

            return(gameUser.Add(UID, playerID, gUser));
        }
        public void Do(IDictionary <string, object> context)
        {
            var userId = context["userId"].ToString();

            if (userId != string.Empty)
            {
                var currentGameQueue = this.gameRepository.GetGameQueue(this.CurrentGameQueueId);
                var user             = this.userRepository.GetUser(userId);
                var gameUser         = new GameUser
                {
                    UserId   = user.Id,
                    UserName = user.DisplayName
                };

                // Create/Update gameQueue blob
                if (currentGameQueue == null || currentGameQueue.Status != QueueStatus.Waiting)
                {
                    this.CurrentGameQueueId = Guid.NewGuid();

                    // Create game queue
                    currentGameQueue = new GameQueue
                    {
                        Id    = this.CurrentGameQueueId,
                        Users = new List <GameUser> {
                            gameUser
                        },
                        Status = QueueStatus.Waiting,
                        GameId = Guid.Empty
                    };
                }
                else if (!currentGameQueue.Users.Any(u => u.UserId == gameUser.UserId))
                {
                    currentGameQueue.Users.Add(gameUser);
                }

                if (currentGameQueue.Users.Count >= this.maxNumberOfPlayersPerGame)
                {
                    // Create game
                    var game = new Game
                    {
                        Id         = Guid.NewGuid(),
                        Users      = currentGameQueue.Users,
                        ActiveUser = currentGameQueue.Users.First().UserId,
                        Status     = GameStatus.Waiting,
                        Seed       = new Random().Next(10000, int.MaxValue)
                    };

                    currentGameQueue.Status = QueueStatus.Ready;
                    currentGameQueue.GameId = game.Id;

                    this.gameRepository.AddOrUpdateGame(game);
                }

                var userSession = new UserSession
                {
                    UserId            = userId,
                    ActiveGameQueueId = currentGameQueue.Id
                };

                this.gameRepository.AddOrUpdateGameQueue(currentGameQueue);
                this.userRepository.AddOrUpdateUserSession(userSession);
            }
        }
예제 #11
0
        protected override bool CreateUserRole(out IUser user)
        {
            user = null;
            var      cacheSet = new PersonalCacheStruct <GameUser>();
            GameUser gameUser;

            if (cacheSet.TryFindKey(UserId + "", out gameUser) == LoadingStatus.Success)
            {
                if (gameUser == null)
                {
                    gameUser = new GameUser {
                        UserId = UserId, PassportId = Pid, RetailId = RetailID, NickName = Pid
                    };
                    cacheSet.Add(gameUser);
                }
                var tbuserCache = new GameDataCacheSet <tb_User>();
                if (gameUser.CurrRoleId == 0)
                {
                    tb_User _tempuser = tbuserCache.FindKey(UserId);
                    if (_tempuser == null)
                    {//自动注册同个角色到游戏库中
                     // VALUES(2, 'j222222', '', 1000.0000, 100000.0000, '', '', '', 'wechatname', '114.114.114.114', 'desc', 0, 0, 1, 1380002, 1000)

                        int genCodeUserId = GameServerManager.GetGenerateUserId(UserId);
                        _tempuser = new tb_User()
                        {
                            Desc           = "desc",
                            diamond        = 0,
                            IP             = Current.RemoteAddress == null ? string.Empty : Current.RemoteAddress,
                            isRobot        = 0,
                            LastLotinTime1 = "",
                            LastLotinTime2 = "",
                            wechatName     = _createData.roleName == "" ?  UserId + "wechat" : _createData.NickName,
                            RegTime        = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                            RobotLevel     = 0,
                            Status         = 0,
                            UserID         = UserId,
                            UserMaxMoney   = 20 * 10000 * 10000,
                            UserMoney      = 2000, //t_anythingList.GetInt("init_gold"),
                            UserName       = _createData.roleName,
                            UserPassword   = "",
                            Sex            = _createData._Sex,
                            wechatHeadIcon = _createData.HeadID,
                        };
                        tbuserCache.Add(_tempuser);

                        //InitiData.InitiRoleData(UserId);

                        //触发邀请玩家任务计数
                        //if (genCodeUserId > 0) TaskHelper.SetTaskCount(genCodeUserId, TaskTypeEnum.User);
                    }
                    gameUser.CurrRoleId = UserId;
                    sc_create _create = new sc_create()
                    {
                        fn = "sc_create", result = 1
                    };
                    _senddata = JsonUtils.Serialize(_create);
                    return(true);
                }
            }
            Console.WriteLine("10000 CreateUserRole  is fail......................................");
            return(false);
        }
예제 #12
0
        public string DoReg()
        {
            GameUser gu       = new GameUser();
            string   UserName = Request["UserName"].Trim();
            string   Pwd      = Request["PWD"].Trim();
            string   Card     = Request["Card"].Trim();
            string   Email    = Request["Email"].Trim();
            string   Code     = Request["Code"].Trim();

            if (!DevRegHel.RegName(UserName))
            {
                return("您输入的用户名不可用!");
            }
            if (!DevRegHel.RegPwd(Pwd))
            {
                return("您输入的密码不可用!");
            }
            if (!DevRegHel.RegCard(Card))
            {
                return("您输入的身份证不可用!");
            }
            if (!DevRegHel.RegEmail(Email))
            {
                return("您输入的邮箱不可用!");
            }
            if (gum.IsGameUser(UserName))
            {
                return("您输入的用户名已被注册!");
            }
            if (Session[Keys.SESSION_CODE] == null)
            {
                return("验证码已过期,请刷新验证码!");
            }
            if (Session[Keys.SESSION_CODE].ToString().ToUpper() != Code.ToUpper())
            {
                return("您输入的验证码不正确!");
            }
            if (Request["Ck"].Trim() != "on")
            {
                return("请务必确认您已经阅读服务条款!");
            }
            if (alm.IsLock(BBRequest.GetIP()))
            {
                return("您暂时不能注册!");
            }
            if (gum.ExitEmail(Request["Email"]))
            {
                return("您的邮箱已经注册过!");
            }
            gu = new GameUser(0, Request["UserName"], DESEncrypt.Md5(Request["PWD"], 32), "", Request["Sex"], "", "", Request["RealName"], Request["Email"]
                              , "", Request["Birthday"], Request["Card"], "1", 0, "", 0, 0, 0, 0, 0, 0, DateTime.Now, DateTime.Now, 0, 0, 0, 0, BBRequest.GetIP(),
                              "", 0, "", "");
            try
            {
                if (gum.AddUser(gu))
                {
                    int    Id = gum.GetGameUser(UserName).Id;
                    sysmsg sm = new sysmsg();
                    sm.title  = "注册成功消息";
                    sm.type   = 2;
                    sm.userid = Id;
                    sm.fromid = 0;
                    sm.msg    = "恭喜您成功注册5577游戏账号,您可凭借此账号登录5577游戏旗下任何一款游戏,祝您游戏愉快。如果您在游戏过程中遇到任何问题,欢迎您致电客服咨询。";
                    smm.AddSysMsg(sm);
                    Session[Keys.SESSION_USER] = Id;
                    Session.Timeout            = 120;
                    validatecode vdc = new validatecode();
                    vdcm.DelValiDateCode(Id, 1);
                    vdc.type     = 1;
                    vdc.userid   = Id;
                    vdc.sendtime = DateTime.Now;
                    vdc.code     = Guid.NewGuid().ToString() + DateTime.Now.Minute + DateTime.Now.Millisecond;
                    vdc.email    = gu.Email.Trim();
                    vdcm.AddValiDateCode(vdc);
                    //string ucode = DESEncrypt.encryptstring1(vdc.userid.ToString());
                    //string tcode = DESEncrypt.encryptstring1(vdc.type.ToString());
                    //string scode = vdc.code.ToString();
                    //string vicode = vdc.sendtime.ToString("yyyy-MM-ddHH:mm:ss");
                    return("True");
                }
                else
                {
                    return("注册失败!");
                }
            }
            catch (Exception ex)
            {
                gu.IsLock   = 1;
                gu.UserDesc = "此用户为注册失败用户!失败原因:" + ex.Message;
                gum.UpdateUser(gu);
                //gum.DelGameUser(UserName);
                return("注册失败!错误:" + ex.Message);
            }
        }
예제 #13
0
 public kpMailService(GameUser gameUser)
 {
     _gameUser = gameUser;
 }
예제 #14
0
파일: Action1004.cs 프로젝트: zhukaixy/Scut
        protected override bool DoSuccess(int userId)
        {
            var      cacheSet = new GameDataCacheSet <GameUser>();
            GameUser gameUser = cacheSet.FindKey(Uid);

            if (gameUser == null ||
                string.IsNullOrEmpty(gameUser.SessionID) ||
                !gameUser.IsInlining)
            {
                gameUser = cacheSet.FindKey(Uid);
            }

            if (gameUser != null)
            {
                //原因:还在加载中时,返回
                if (gameUser.Property.IsRefreshing)
                {
                    Uid       = string.Empty;
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().ServerLoading;
                    return(false);
                }
            }

            var nowTime = DateTime.Now;

            if (gameUser == null)
            {
                this.ErrorCode = 1005;
                return(true);
            }
            else
            {
                if (gameUser.UserStatus == UserStatus.FengJin)
                {
                    ErrorCode = LanguageManager.GetLang().TimeoutCode;
                    ErrorInfo = LanguageManager.GetLang().AcountIsLocked;
                    return(false);
                }
                gameUser.SessionID           = Sid;
                gameUser.OnlineDate          = nowTime;
                gameUser.LoginDate           = nowTime;
                gameUser.Property.GameId     = this.GameType;
                gameUser.Property.ServerId   = this.ServerID;
                gameUser.Property.ChatVesion = 0;
                //gameUser.OnLine = true;
                //gameUser.Logoff = true;
            }



            System.Threading.Tasks.Task.Factory.StartNew(() =>
            {
                //登录日志
                UserLoginLog userLoginLog = new UserLoginLog();
                userLoginLog.UserId       = gameUser.UserId.ToString();
                userLoginLog.SessionID    = Sid;
                userLoginLog.MobileType   = this.MobileType.ToShort();
                userLoginLog.ScreenX      = this.ScreenX;
                userLoginLog.ScreenY      = this.ScreenY;
                userLoginLog.RetailId     = this.RetailID;
                userLoginLog.AddTime      = nowTime;
                userLoginLog.State        = LoginStatus.Logined.ToInt();
                userLoginLog.DeviceID     = this.DeviceID;
                userLoginLog.Ip           = this.GetRealIP();
                userLoginLog.Pid          = gameUser.Pid;
                userLoginLog.UserLv       = gameUser.UserLv;
                var sender = DataSyncManager.GetDataSender();

                sender.Send(userLoginLog);
            });
            return(true);
        }
예제 #15
0
        private static void TriggerSportCombat(GameUser user, GameUser toUser, int sportNum, ref string sportsPrizeString, UserMail userMail)
        {
            CombatProcessContainer combatProcessList = null;
            int rewardGoin   = 0;
            int rewardObtion = 0; //荣誉值
            int experence    = 0; //经验
            int winNum       = 0;

            //原因:gameuser加了连胜字段
            winNum = user.VictoryNum;

            int rankIndex;
            int torankIndex;
            Ranking <UserRank> ranking = RankingFactory.Get <UserRank>(CombatRanking.RankingKey);

            if (!ranking.TryGetRankNo(m => m.UserID == user.UserID, out rankIndex) || !ranking.TryGetRankNo(m => m.UserID == toUser.UserID, out torankIndex))
            {
                return;
            }
            UserRank userRank   = ranking.Find(s => s.UserID == user.UserID);
            UserRank toUserRank = ranking.Find(s => s.UserID == toUser.UserID);

            if (userRank == null || toUserRank == null)
            {
                return;
            }

            //修改wuzf,两个地方调用Doing()方法
            ISingleCombat sportCombat = CombatFactory.TriggerTournament(user, toUser);

            if (sportCombat == null)
            {
                return;
            }
            bool isWin = sportCombat.Doing();

            if (isWin)
            {
                winNum = MathUtils.Addition(winNum, 1, int.MaxValue);
                userRank.VictoryNum   = winNum;
                toUserRank.VictoryNum = 0;
                toUser.VictoryNum     = 0;
                new PersonalCacheStruct <GameUser>().UpdateSelf(toUser.PersonalId);
                rewardGoin   = (user.UserLv * 40); //GetRewardGameCoin(user, user.UserLv);
                experence    = (user.UserLv * 10);
                rewardObtion = 10;
                AddFoe(user, toUser);
            }
            else
            {
                winNum = 0;
                userRank.VictoryNum = 0;
                rewardGoin          = (user.UserLv * 20);
                if (!rewardGoin.IsValid())
                {
                    rewardGoin = 0;
                }
                experence    = (user.UserLv * 5);
                rewardObtion = 5;
            }


            //公会贡献
            UserHelper.Contribution(user.UserID, rewardObtion);
            if (!string.IsNullOrEmpty(user.MercenariesID))
            {
                GuildMemberLog.AddLog(user.MercenariesID, new MemberLog
                {
                    UserID     = user.UserID,
                    IdolID     = 0,
                    LogType    = 1,
                    GainObtion = rewardObtion,
                    Experience = rewardObtion,
                    GainAura   = 0,
                    InsertDate = DateTime.Now,
                });
            }
            user.VictoryNum = winNum;
            new PersonalCacheStruct <GameUser>().UpdateSelf(user.PersonalId);
            user.ExpNum   = MathUtils.Addition(user.ExpNum, rewardObtion, int.MaxValue);
            user.GameCoin = MathUtils.Addition(user.GameCoin, rewardGoin, int.MaxValue);
            GeneralHelper.UserGeneralExp(user.UserID, 0, experence);

            int _rankTopId   = 0;
            int _ranktoTopID = 0;

            if (isWin && rankIndex > torankIndex)
            {
                _rankTopId   = toUserRank.RankId;
                _ranktoTopID = userRank.RankId;
            }
            else
            {
                _rankTopId   = userRank.RankId;
                _ranktoTopID = toUserRank.RankId;
            }

            combatProcessList = (CombatProcessContainer)sportCombat.GetProcessResult();
            user.SportsCombatQueue.Enqueue(new SportsCombat()
            {
                ToUser        = toUser.UserID,
                ToUserName    = toUser.NickName,
                TopID         = _rankTopId,
                IsWin         = isWin,
                RewardGoin    = rewardGoin,
                RewardObtian  = rewardObtion,
                SportsNum     = sportNum,
                WinNum        = winNum,
                CombatDate    = DateTime.Now,
                CombatProcess = combatProcessList,
                IsSelf        = true,
                RankStatus    = GetRankStatus(isWin, userRank, toUserRank)
            });

            UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(toUser.UserID) ?? new UserDailyRestrain();

            toUser.SportsCombatQueue.Enqueue(new SportsCombat()
            {
                ToUser        = user.UserID,
                ToUserName    = user.NickName,
                TopID         = _ranktoTopID,
                IsWin         = !isWin,
                RewardGoin    = 0,
                RewardObtian  = 0,
                SportsNum     = dailyRestrain.Funtion9,
                WinNum        = toUserRank.VictoryNum,
                CombatDate    = DateTime.Now,
                CombatProcess = combatProcessList,
                IsSelf        = false,
                RankStatus    = GetRankStatus(!isWin, toUserRank, userRank)
            });

            //日志
            UserCombatLog log = new UserCombatLog()
            {
                CombatLogID   = Guid.NewGuid().ToString(),
                UserID        = user.UserID,
                CityID        = 0,
                PlotID        = 0,
                NpcID         = 0,
                CombatType    = CombatType.User,
                HostileUser   = toUser.UserID,
                IsWin         = isWin,
                CombatProcess = JsonUtils.Serialize(combatProcessList),
                CreateDate    = DateTime.Now
            };
            var sender = DataSyncManager.GetDataSender();

            sender.Send(log);

            string prizeContent = string.Empty;

            MysteryHelper.IsTriggerMyStery(user, MysteryType.Jingjichang, out prizeContent);
            MysteryInfo mysteryInfo = new ShareCacheStruct <MysteryInfo>().FindKey(MysteryType.Jingjichang);

            if (!string.IsNullOrEmpty(prizeContent) && mysteryInfo != null)
            {
                var prompt    = string.Empty;
                var broadcast = string.Empty;
                if (isWin)
                {
                    prompt    = mysteryInfo.WinPrompt;
                    broadcast = mysteryInfo.WinBroadcast;
                }
                else
                {
                    prompt    = mysteryInfo.Prompt;
                    broadcast = mysteryInfo.Broadcast;
                }
                sportsPrizeString = string.Format(prompt, toUser.NickName, prizeContent);
                string broadContent     = string.Format(broadcast, toUser.NickName, prizeContent);
                var    broadcastService = new TjxBroadcastService(null);
                var    msg = broadcastService.Create(NoticeType.System, broadContent);
                broadcastService.Send(msg);
            }
            //sportsPrizeString = SportsPrizeHelper.DoPrize(user.UserID, isWin, toUser.NickName);
            //var userMail = new UserMail(Guid.NewGuid());
            var mailText = string.Format(LanguageManager.GetLang().SportsRankLetterForWin, user.NickName);

            if (isWin)
            {
                if (rankIndex > torankIndex)
                {
                    //SportsRankPrize(rankIndex, user, torankIndex);
                    //SportsRankPrize(torankIndex, toUser, rankIndex);
                    ranking.TryMove(rankIndex, torankIndex);
                    //user.RankID = torankIndex;
                    //user.RankDate = DateTime.Now;
                    //toUser.RankID = rankIndex;
                    //toUser.RankDate = DateTime.Now;
                    new PersonalCacheStruct <GameUser>().UpdateSelf(user.PersonalId);
                    new PersonalCacheStruct <GameUser>().UpdateSelf(toUser.PersonalId);
                    mailText = string.Format(LanguageManager.GetLang().SportsRankLetterForFailure, user.NickName, rankIndex);
                }
                else
                {
                    mailText = string.Format(LanguageManager.GetLang().SportsRankLetterForFailureRank, user.NickName, rankIndex);
                }
                UserHelper.SprostSystemChat(userRank, toUserRank);
                NoviceHelper.SportCombatFestival(user, winNum, userRank.VictoryNum);
            }
            userMail.Content = mailText;
            var userid = toUser.UserID.ToInt();

            userMail.ToUserID            = userid;
            userMail.UserId              = userid;
            userMail.MailType            = (int)MailType.Fight;
            userMail.ToUserName          = toUser.NickName;
            userMail.FromUserName        = LanguageManager.GetLang().St_SystemMailTitle;
            userMail.FromUserId          = LanguageManager.GetLang().SystemUserId;
            userMail.SendDate            = DateTime.Now;
            userMail.Title               = string.Empty;
            userMail.CounterattackUserID = user.UserID.ToInt();
            userMail.CombatProcess       = JsonUtils.Serialize(combatProcessList);
            userMail.IsWin               = isWin;
        }
예제 #16
0
        /// <summary>
        /// 大侠传充值接口
        /// </summary>
        /// <param name="OrderNo">订单号</param>
        /// <returns>返回充值结果</returns>
        public string Pay(string OrderNo)
        {
            order = os.GetOrder(OrderNo);                                                                                      //获取用户的充值订单
            gu    = gus.GetGameUser(order.UserName);                                                                           //获取充值用户
            gs    = gss.GetGameServer(order.ServerId);                                                                         //获取用户要充值的服务器
            string PayGold = (order.PayMoney * game.GameMoneyScale).ToString();                                                //计算支付的游戏币

            if (gus.IsGameUser(gu.UserName))                                                                                   //判断用户是否属于平台
            {
                tstamp = Utils.GetTimeSpan();                                                                                  //获取时间戳
                string url = string.Format("op_id={0}&sid={1}&game_id={2}&account={3}&order_id={4}&game_money={5}&u_money={6}&time={7}",
                                           gc.AgentId, gs.ServerNo, 8, gu.UserName, OrderNo, PayGold, order.PayMoney, tstamp); //获取验证字符串
                Base64Protector bp = new Base64Protector();
                Auth = bp.Base64Code(url);                                                                                     //获取验证码
                Sign = DESEncrypt.Md5(Auth + gc.PayTicket, 32);                                                                //获取验证参数
                string       PayUrl = "http://" + gc.PayCom + "?auth=" + Auth + "&verify=" + Sign;
                GameUserInfo gui    = Sel(gu.Id, gs.Id);                                                                       //获取玩家查询信息
                if (gui.Message == "Success")                                                                                  //判断玩家是否存在
                {
                    if (order.State == 1)                                                                                      //判断订单状态是否为支付状态
                    {
                        string PayResult = Utils.GetWebPageContent(PayUrl);                                                    //获取充值结果
                        PayResult = PayResult.Substring(0, PayResult.IndexOf('}'));                                            //处理充值结果
                        PayResult = PayResult.Replace(PayResult.Substring(0, PayResult.LastIndexOf('{') + 1), "");
                        switch (PayResult.Substring(9))                                                                        //对充值结果进行解析
                        {
                        case "0":
                            if (os.UpdateOrder(order.OrderNo))                      //更新订单状态为已完成
                            {
                                gus.UpdateGameMoney(gu.UserName, order.PayMoney);   //跟新玩家游戏消费情况
                                return("充值成功!");
                            }
                            else
                            {
                                return("充值失败!错误原因:更新订单状态失败!");
                            }

                        case "1":
                            return("充值失败!错误原因:商家错误或者不存在!");

                        case "2":
                            return("充值失败!错误原因:服务器不存在!");

                        case "3":
                            return("充值失败!错误原因:游戏不存在!");

                        case "4":
                            return("充值失败!错误原因:无效时间戳!");

                        case "5":
                            return("充值失败!错误原因:检验码错误!");

                        case "6":
                            return("充值失败!错误原因:缺少参数!");

                        case "7":
                            return("充值失败!错误原因:订单号不存在!");

                        case "8":
                            return("充值失败!错误原因:角色不存在!");

                        case "9":
                            return("充值失败!错误原因:排行榜类型不存在!");

                        case "10":
                            return("充值失败!错误原因:方法名字错误!");

                        case "11":
                            return("充值失败!错误原因:非法IP!");

                        case "12":
                            return("充值失败!错误原因:充值金额不对!");

                        case "13":
                            return("充值失败!错误原因:游戏币金额不对!");

                        case "14":
                            return("充值失败!错误原因:游戏币和游戏币币比列不对!");

                        case "100":
                            return("充值失败!未知原因");

                        default:
                            return("充值失败!未知错误!");
                        }
                    }
                    else
                    {
                        return("充值失败!错误原因:无法提交未支付订单!");
                    }
                }
                else
                {
                    return("充值失败!角色不存在!");
                }
            }
            else
            {
                return("充值失败!用户不存在!");
            }
        }
예제 #17
0
 public static void Remove(int UID, out GameUser val)
 {
     gameUser.Remove(UID, out val);
 }
예제 #18
0
        public override bool UserLeft(GameUser user, bool voluntarily)
        {
            if (!voluntarily)
                user.CanChooseCards = user.CanVote = false;
            else
                user.CanVote = false;

            if (WaitingOnUsers.Contains(user))
            {
                WaitingOnUsers.Remove(user);
                ChosenUsers.Remove(user);
                user.HasChosenCards = false;
                CheckReady();
            }

            if (user == Manager.CurrentCzar() && Manager.Mode != GameManager.GameMode.SovietRussia)
            {
                Manager.SendToAll("Czar left! Discarding round...");
                foreach(var person in ChosenUsers)
                    person.ChosenCards = new int[] { };
                Manager.StartState(new ChoosingCards(Manager));
            }

            return true;
        }
예제 #19
0
 public static async Task <GameUser> LoginAs(GameUser user)
 {
     return((GameUser)await ParseUser.LogInAsync(user.Username, "a"));
 }
예제 #20
0
 public void LinkedToUser(GameUser user)
 {
     User = user;
 }
예제 #21
0
    void Load(String jsonUnarrangedData, String userId, Action onDataLoaded)
    {
        var unarrangedData = JsonConvert
                             .DeserializeObject <Dictionary <string, Dictionary <string, List <object> > > >(jsonUnarrangedData);

        /* Quando o userId é nulo, isso indica que apenas os dados iniciais são
         * carregados, independentemente do usuário */

        ClearRecords();

        foreach (var table in unarrangedData)
        {
            string tableName = table.Key;
            IEnumerable <string> primaryKeys = table.Value["primaryKeys"].Select(i => ToString());
            List <JObject>       records     = table.Value["records"].Cast <JObject>().ToList();

            foreach (var record in records)
            {
                AssetFilter filter = AssetFilterRecords
                                     .SingleOrDefault(i => i.NamTable == tableName);

                switch (tableName)
                {
                case "assetfilter":
                    AssetFilter assetFilter = record.ToObject <AssetFilter>();
                    // assetFilter.TxtAssetPath = $"Assets/{assetFilter.TxtAssetPath}";
                    AssetFilterRecords.Add(assetFilter);
                    break;

                case "score":     // only current user scores are retrieved
                    Score score = record.ToObject <Score>();
                    ScoreRecords.Add(score);
                    break;

                case "part":
                    Part part = record.ToObject <Part>();
                    PartRecords.Add(part);
                    break;

                case "phase":
                    Phase phase = record.ToObject <Phase>();
                    phase.Part = PartRecords
                                 .SingleOrDefault(i => i.CodPart == phase.CodPart);
                    phase.UserScore = ScoreRecords
                                      .SingleOrDefault(i => i.NumPhase == phase.NumPhase);
                    PhaseRecords.Add(phase);
                    phase.TilemapsGrid = dataUtil
                                         .LoadAsset <Grid>($"Grid_{filter.TxtAssetFilter}_{phase.NumPhase}",
                                                           new[] { filter.TxtAssetPath });
                    break;

                case "gameuser":     // only current user data is retrieved
                    GameUser user = record.ToObject <GameUser>();
                    user.CurrentPhase = PhaseRecords
                                        .SingleOrDefault(i => i.NumPhase == user.NumCurrentPhase);
                    UserRecords.Add(user);
                    break;

                case "troop":
                    Troop troop = record.ToObject <Troop>();
                    troop.GameObject = dataUtil
                                       .LoadAsset <GameObject>($"{filter.TxtAssetFilter}_{troop.TxtAssetIdentifier}",
                                                               new[] { filter.TxtAssetPath });
                    TroopRecords.Add(troop);
                    break;

                case "barrack":
                    Barrack barrack = record.ToObject <Barrack>();
                    barrack.Part = PartRecords
                                   .SingleOrDefault(i => i.CodPart == barrack.CodPart);
                    barrack.Troop = TroopRecords
                                    .SingleOrDefault(i => i.CodTroop == barrack.CodTroop);
                    barrack.GameObject = dataUtil
                                         .LoadAsset <GameObject>($"{filter.TxtAssetFilter}_{barrack.Troop.TxtAssetIdentifier}",
                                                                 new[] { filter.TxtAssetPath });
                    BarrackRecords.Add(barrack);
                    break;

                case "tower":
                    Tower tower = record.ToObject <Tower>();
                    tower.GameObject = dataUtil
                                       .LoadAsset <GameObject>($"{filter.TxtAssetFilter}_{(tower.IsEnemy ? "enemy" : "player")}",
                                                               new[] { filter.TxtAssetPath });
                    TowerRecords.Add(tower);
                    break;

                case "skill":
                    Skill skill = record.ToObject <Skill>();
                    skill.Action = dataUtil
                                   .LoadAsset <SkillAction>($"{filter.TxtAssetFilter}_{skill.TxtAssetIdentifier}",
                                                            new[] { filter.TxtAssetPath });
                    SkillRecords.Add(skill);
                    break;

                case "hero":
                    Hero hero = record.ToObject <Hero>();
                    hero.Part = PartRecords
                                .SingleOrDefault(i => i.CodPart == hero.CodPart);
                    hero.Skills = SkillRecords
                                  .Where(i => i.CodHero == hero.CodHero)
                                  .ToList();
                    hero.GameObject = dataUtil
                                      .LoadAsset <GameObject>($"{filter.TxtAssetFilter}_{hero.TxtAssetIdentifier}",
                                                              new[] { filter.TxtAssetPath });
                    HeroRecords.Add(hero);
                    break;

                case "speak":
                    Speak speak = record.ToObject <Speak>();
                    SpeakRecords.Add(speak);
                    break;

                case "scene":
                    Scene scene = record.ToObject <Scene>();
                    scene.Texts = SpeakRecords
                                  .Where(i => i.CodCutscene == scene.CodCutscene && i.CodScene == scene.CodScene)
                                  .ToList();
                    scene.Sprite = dataUtil
                                   .LoadAsset <Sprite>(new[] { $"{filter.TxtAssetPath}/{scene.TxtImagePath}" });
                    SceneRecords.Add(scene);
                    break;

                case "cutscene":
                    Cutscene cutscene = record.ToObject <Cutscene>();
                    cutscene.Scenes = SceneRecords
                                      .Where(i => i.CodCutscene == cutscene.CodCutscene)
                                      .ToList();
                    CutsceneRecords.Add(cutscene);
                    break;

                default:
                    break;
                }
            }
        }

        if (userId != null && userId.Length != 0 && UserRecords.Count == 1)
        {
            loadedUser = UserRecords.SingleOrDefault();
            SaveUserData(loadedUser); // remove later
        }

        if (!(onDataLoaded is null))
        {
            onDataLoaded();
        }
    }
 private void OnLoggedIn(GameUser user)
 {
     isLoading = false;
     menus.States.SetState("Logged In State");
 }
예제 #23
0
        /// <summary>
        /// 日常活动领取
        /// </summary>
        /// <param name="user"></param>
        /// <param name="festivalID"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        public static bool UseFestivalRestrain(GameUser user, int festivalID, out string content)
        {
            content = string.Empty;
            FestivalInfo     info      = new ShareCacheStruct <FestivalInfo>().FindKey(festivalID);
            var              cacheSet  = new GameDataCacheSet <FestivalRestrain>();
            FestivalRestrain restrain  = cacheSet.FindKey(user.UserID, festivalID);
            short            isReceive = FestivalIsReceive(user, festivalID);

            if (info != null && isReceive == 1)
            {
                if (info.FestivalType == FestivalType.UpgradeGiveGift && user.UserLv < info.RestrainNum)
                {
                    content = LanguageManager.GetLang().St_LevelNotEnough;
                    return(false);
                }
                if (info.FestivalType == FestivalType.FirstReward ||
                    info.FestivalType == FestivalType.UpgradeGiveGift || info.FestivalType == FestivalType.PayAccumulation)
                {
                    content = PrizeHelper.PrizeContent(user, info.Reward.ToList());
                    if (!string.IsNullOrEmpty(content))
                    {
                        return(false);
                    }
                    content = PrizeHelper.GetPrizeUserTake(user, info.Reward.ToList());
                    if (!string.IsNullOrEmpty(content))
                    {
                        if (info.FestivalExtend != null && !string.IsNullOrEmpty(info.FestivalExtend.Desc))
                        {
                            content = string.Format(info.FestivalExtend.Desc, content);
                        }
                        return(true);
                    }
                }
                if (restrain != null && (info.FestivalType == FestivalType.PayReward || info.FestivalType == FestivalType.FirstPayDoubleSpar))
                {
                    if (info.FestivalExtend != null)
                    {
                        int payNum = (info.RestrainNum * info.FestivalExtend.MinusNum).ToInt();
                        user.GiftGold = MathUtils.Addition(user.GiftGold, payNum);
                        if (!string.IsNullOrEmpty(info.FestivalExtend.Desc))
                        {
                            content = string.Format(info.FestivalExtend.Desc, payNum);
                        }
                        return(true);
                    }
                }
                if (info.FestivalType == FestivalType.LoginGiveGift)
                {
                    List <PrizeInfo> prizeList = info.Reward.FindAll(s => s.RefreshDate.Date == DateTime.Now.Date);
                    content = PrizeHelper.GetPrizeUserTake(user, prizeList);
                    if (!string.IsNullOrEmpty(content))
                    {
                        if (info.FestivalExtend != null && !string.IsNullOrEmpty(info.FestivalExtend.Desc))
                        {
                            content = string.Format(info.FestivalExtend.Desc, content);
                        }
                        return(true);
                    }
                }
            }
            return(false);
        }
예제 #24
0
 //处理登陆数据
 public static bool SignDeal(MySQLCtrl mySQLCtrl, Socket socket, string[] landInfos, out GameUser gameuser)
 {
     gameuser = mySQLCtrl.SelecInDb(landInfos[0]);
     if (landInfos[1] == gameuser.Pwd)
     {
         gameuser.Status = "0|1|1|";
         return true;
     }
     else
     {
         gameuser.Status = "0|1|0|登陆失败,请检查密码或重试|";
         return false;
     }
 }
예제 #25
0
        /// <summary>
        /// 斗破乾坤查询接口
        /// </summary>
        /// <param name="UserId">用户Id</param>
        /// <param name="ServerId">服务器Id</param>
        /// <returns>返回查询结果</returns>
        public GameUserInfo Sel(int UserId, int ServerId)
        {
            gu     = gus.GetGameUser(UserId);                                                                                                                                                                               //获取查询用户
            gs     = gss.GetGameServer(ServerId);                                                                                                                                                                           //获取查询用户所在区服
            tstamp = Utils.GetTimeSpan();                                                                                                                                                                                   //获取时间戳
            GameUserInfo gui = new GameUserInfo();                                                                                                                                                                          //定义返回查询结果信息

            Sign = DESEncrypt.Md5("account=" + gu.UserName + "&action=playerinfo&agent=" + gc.AgentId + "&serverid=" + gs.ServerNo + "&time=" + tstamp + "&" + gc.SelectTicket, 32);                                        //获取验证参数
            string SelUrl    = "http://" + gs.ServerNo + "." + gc.ExistCom + "?account=" + gu.UserName + "&action=playerinfo&agent=" + gc.AgentId + "&serverid=" + gs.ServerNo + "&time=" + tstamp + "&token=" + Sign + ""; //获取查询地址
            string SelResult = Utils.GetWebPageContent(SelUrl);                                                                                                                                                             //获取返回结果

            try
            {
                switch (SelResult)
                {
                case "-501":
                    gui.Message = "查询账号数量超过限制";
                    break;

                case "-207":
                    gui.Message = "无效玩家账号";
                    break;

                default:
                    SelResult = SelResult.Substring(0, SelResult.IndexOf('}'));                          //处理返回结果
                    SelResult = SelResult.Replace(SelResult.Substring(0, SelResult.LastIndexOf('{') + 1), "");
                    string[] b = SelResult.Split(',');
                    switch (b[0].Substring(7))
                    {
                    case "-101":
                        gui.Message = "查询失败!无效访问!";
                        break;

                    case "-102":
                        gui.Message = "查询失败!验证失败!";
                        break;

                    case "-209":
                        gui.Message = "查询失败!无效参数!";
                        break;

                    case "-401":
                        gui.Message = "查询失败!链接超时!";
                        break;

                    case "-304":
                        gui.Message = "查询失败!IP限制!";
                        break;

                    default:
                        gui = new GameUserInfo(gu.Id.ToString(), gu.UserName, b[1].Substring(7).Replace("\"", ""), int.Parse(b[0].Substring(8).Replace("\"", "")), gs.Name, os.GetOrderInfo(gu.UserName), "Success");
                        break;
                    }
                    break;
                }
            }
            catch (Exception)
            {
                gui.UserName = "******";
                gui.Message  = "查询失败!查询不到用户信息!";
            }
            return(gui);
        }
예제 #26
0
        /// <summary>
        /// 斗破乾坤充值接口
        /// </summary>
        /// <param name="OrderNo">订单号</param>
        /// <returns>返回充值结果</returns>
        public string Pay(string OrderNo)
        {
            order = os.GetOrder(OrderNo);                                       //获取用户的充值订单
            gu    = gus.GetGameUser(order.UserName);                            //获取充值用户
            gs    = gss.GetGameServer(order.ServerId);                          //获取用户要充值的服务器
            string PayGold = (order.PayMoney * game.GameMoneyScale).ToString(); //计算支付的游戏币

            if (gus.IsGameUser(gu.UserName))                                    //判断用户是否属于平台
            {
                tstamp = Utils.GetTimeSpan();                                   //获取时间戳
                Sign   = DESEncrypt.Md5("account=" + gu.UserName + "&agent=" + gc.AgentId + "&amount=" + PayGold + "&order=" + OrderNo + "&price=" + order.PayMoney + "&serverid=" + gs.ServerNo + "&time=" + tstamp + "&" + gc.PayTicket, 32);
                string       PayUrl = "http://" + gs.ServerNo + "." + gc.PayCom + "?account=" + gu.UserName + "&agent=" + gc.AgentId + "&amount=" + PayGold + "&order=" + OrderNo + "&price=" + order.PayMoney + "&serverid=" + gs.ServerNo + "&time=" + tstamp + "&token=" + Sign;
                GameUserInfo gui    = Sel(gu.Id, gs.Id);                    //获取玩家查询信息
                if (gui.Message == "Success")                               //判断玩家是否存在
                {
                    if (order.State == 1)                                   //判断订单状态是否为支付状态
                    {
                        string PayResult = Utils.GetWebPageContent(PayUrl); //获取充值结果
                        switch (PayResult)                                  //对充值结果进行解析
                        {
                        case "1":
                            if (os.UpdateOrder(order.OrderNo))                    //更新订单状态为已完成
                            {
                                gus.UpdateGameMoney(gu.UserName, order.PayMoney); //跟新玩家游戏消费情况
                                return("充值成功!");
                            }
                            else
                            {
                                return("充值失败!错误原因:更新订单状态失败!");
                            }

                        case "-102":
                            return("充值失败!验证参数错误!");

                        case "-201":
                            return("充值失败!角色不存在!");

                        case "-207":
                            return("充值失败!账号不存在!");

                        case "-300":
                            return("充值失败!金额有误!");

                        case "-301":
                            return("充值失败!无效订单!");

                        case "-302":
                            return("充值失败!无非提交重复订单!");

                        case "-303":
                            return("充值失败!充值接口已关闭!");

                        case "-304":
                            return("充值失败!IP限制!");

                        default:
                            return("充值失败!未知错误!");
                        }
                    }
                    else
                    {
                        return("充值失败!错误原因:无法提交未支付订单!");
                    }
                }
                else
                {
                    return(gui.Message);
                }
            }
            else
            {
                return("充值失败!用户不存在!");
            }
        }
예제 #27
0
        /// <summary>
        /// 天地劫副本层数
        /// </summary>
        /// <param name="user"></param>
        public static int CheckUserPlotLayerNum(GameUser user)
        {
            int      layerNum = 0;
            PlotInfo plotInfo = CheckUserPlotKalpa(user);

            if (user != null && plotInfo != null)
            {
                //最高层
                if (user.UserExtend != null)
                {
                    //修改:当前层大于最大层数时更新
                    if (user.UserExtend.MaxLayerNum < plotInfo.LayerNum)
                    {
                        user.UserExtend.UpdateNotify(obj =>
                        {
                            user.UserExtend.MaxLayerNum = plotInfo.LayerNum;
                            return(true);
                        });
                        //user.Update();
                    }
                }
                //当前层
                if (user.UserExtend != null && user.UserExtend.LayerNum > 0)
                {
                    UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(user.UserID);
                    if (dailyRestrain != null && dailyRestrain.UserExtend != null && dailyRestrain.UserExtend.LastKalpaNum > 0)
                    {
                        layerNum = user.UserExtend.LayerNum;
                    }
                    else
                    {
                        layerNum = plotInfo.LayerNum;
                        user.UserExtend.UpdateNotify(obj =>
                        {
                            user.UserExtend.LayerNum = layerNum;
                            return(true);
                        });
                        //user.Update();
                    }
                }
                else
                {
                    layerNum = plotInfo.LayerNum;
                    if (user.UserExtend == null)
                    {
                        user.UserExtend = new GameUserExtend();
                    }
                    user.UserExtend.UpdateNotify(obj =>
                    {
                        user.UserExtend.LayerNum = layerNum;
                        return(true);
                    });
                    //user.Update();
                }
            }
            else
            {
                layerNum = 1;
            }
            return(layerNum);
        }