Пример #1
0
        /// <summary>玩家登陆指令</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "LOGIN", "玩家登陆指令");
#endif
#if DEBUG
            XTrace.WriteLine("------------   登陆前  {0}     ------------", Variable.OnlinePlayer.Count);
#endif
            var userName = data.FirstOrDefault(q => q.Key == "userName").Value.ToString();
            if (string.IsNullOrEmpty(userName))
            {
                return(CommonHelper.ErrorResult((int)ResultType.USER_SUBMIT_ERROR));
            }
            if (!CommonHelper.CheckActivation(userName))
            {
                return(CommonHelper.ErrorResult((int)ResultType.ACTIVATION_ERROR));
            }

            //DisplayGlobal.log.Write("登陆账号:" + userName);

            var user = tg_user.Find(string.Format("user_code='{0}'", userName));
            if (user == null)
            {
                return(new ASObject(BuildData((int)ResultType.NO_DATA, null, 0)));
            }
            var b = Variable.OnlinePlayer.ContainsKey(user.id);
#if DEBUG
            XTrace.WriteLine("OnlinePlayer:{0} {1}", user.id, b);
#endif
            if (b)
            {
                var user_id = Convert.ToInt64(user.id);
                var s       = Variable.OnlinePlayer[user_id] as TGGSession;
                if (s != null)
                {
                    s.Close();
                }
            }
            session.Player = Common.GetInstance().GetPlayer(user);
            session.Fight  = Common.GetInstance().GetFight(session.Player);

            Variable.OnlinePlayer.AddOrUpdate(user.id, session, (k, v) => session);
            tg_user_login_log.LoginLog(user.id, Common.GetInstance().GetRemoteIP(session));
            ReLoadTask(session);
            Int64 opentime = 0;
            if (CommonHelper.CheckOpenTime())
            {
                if (session.Player.UserExtend.fcm == (int)FCMType.Yes)
                {
                    var fcm = new Share.User().GetFCM(user.id);
                    if (fcm != null)
                    {
                        session.Player.onlinetime = fcm.login_time_longer_day * 60;
                        opentime = fcm.login_open_time;
                    }
                }
            }
            return(new ASObject(BuildData((int)ResultType.SUCCESS, session.Player, opentime)));
        }
Пример #2
0
        //private static USER_LOGIN ObjInstance;
        ///// <summary>LOGIN单例模式</summary>
        //public static USER_LOGIN GetInstance()
        //{
        //    return ObjInstance ?? (ObjInstance = new USER_LOGIN());
        //}

        /// <summary>玩家登陆指令</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "LOGIN", "玩家登陆指令");
#endif
#if DEBUG
            XTrace.WriteLine("------------   登陆前  {0}     ------------", Variable.OnlinePlayer.Count);
#endif
            if (!data.ContainsKey("isAdult") || !data.ContainsKey("userName"))
            {
                return(null);
            }
            var isAdult = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "isAdult").Value); //是否成年0:未成年 1:成年

            var name     = data.FirstOrDefault(q => q.Key == "userName").Value.ToString();
            var userName = string.Empty;
            if (CommonHelper.IsKey())
            {
                //var decrypt = CommonHelper.GetUserName(name);

                var gamekey   = CommonHelper.GetAppSettings("gamekey");//获取游戏加密
                var game_name = String.Empty;
                var cb        = false;
                try
                {
                    var str = CommonHelper.Decode(name);
                    game_name = CryptoHelper.Decrypt(str, gamekey);
                    cb        = true;
                }
                catch { XTrace.WriteLine("name:{0}", name); }

                if (!cb)
                {
                    return(CommonHelper.ErrorResult((int)ResultType.USER_SUBMIT_ERROR));
                }
                userName = game_name;
            }
            else
            {
                userName = name;
            }

            if (string.IsNullOrEmpty(userName))
            {
                return(CommonHelper.ErrorResult((int)ResultType.USER_SUBMIT_ERROR));
            }

            var user = tg_user.Find(string.Format("user_code='{0}'", userName));
            if (user == null)
            {
                return(new ASObject(BuildData((int)ResultType.NO_DATA, null, 0)));
            }
            if (user.state == (int)UserStateType.Block)
            {
                return(CommonHelper.ErrorResult((int)ResultType.BASE_PLAYER_BLOCK_ERROR));
            }
            if (user.state == (int)UserStateType.Frozen)
            {
                return(CommonHelper.ErrorResult((int)ResultType.BASE_PLAYER_FROZEN_ERROR));
            }
            var b = Variable.OnlinePlayer.ContainsKey(user.id);
#if DEBUG
            XTrace.WriteLine("OnlinePlayer:{0} {1}", user.id, b);
#endif
            if (b)
            {
                var user_id = Convert.ToInt64(user.id);
                var s       = Variable.OnlinePlayer[user_id] as TGGSession;
                if (s != null)
                {
                    s.Close();
                }
            }

            var player = Common.GetInstance().GetPlayer(user, isAdult);
            if (player == null)
            {
                return(null);
            }
            session.Player = player;
            session.Fight  = Common.GetInstance().GetFight(session.Player);

            Variable.OnlinePlayer.AddOrUpdate(user.id, session, (k, v) => session);
            tg_user_login_log.LoginLog(user.id, Common.GetInstance().GetRemoteIP(session));

            ReLoadTask(session);
            RemoveFightState(user.id);

            Int64 opentime = 0;
            if (CommonHelper.CheckOpenTime())
            {
                if (session.Player.UserExtend.fcm == (int)FCMType.Yes)
                {
                    var fcm = new Share.User().GetFCM(user.id);
                    if (fcm != null)
                    {
                        session.Player.onlinetime = fcm.login_time_longer_day * 60;
                        opentime = fcm.login_open_time;
                    }
                }
            }
            report_record_login.Login(player.User.id);
            report_day.OnOffLine();
            //new Share.ActivityOpenService().ActivityPush(session.Player.User.id);
            return(new ASObject(BuildData((int)ResultType.SUCCESS, session.Player, opentime)));
        }