Ejemplo n.º 1
0
        private ErrorCode DBAsynQueryUserCallBack(GBuffer buffer, DBActiveWrapper db)
        {
            CSToDB.QueryUserReq msg = new CSToDB.QueryUserReq();
            msg.MergeFrom(buffer.GetBuffer(), 0, ( int )buffer.length);

            GCToCS.Login login = new GCToCS.Login();
            login.MergeFrom(ByteString.CopyFromUtf8(msg.Logininfo));

            UserDBData userDbData = new UserDBData();

            userDbData.usrDBData.un64ObjIdx   = ( ulong )msg.Objid;
            userDbData.usrDBData.userPlatform = ( UserPlatform )login.Sdk;

            DBToCS.QueryUser queryUser = new DBToCS.QueryUser();
            this.DBAsynQueryUser(userDbData, queryUser, db);

            using (MemoryStream ms = new MemoryStream())
            {
                Serializer.Serialize(ms, userDbData.usrDBData);
                queryUser.Db       = Encoding.UTF8.GetString(ms.GetBuffer(), 0, ( int )ms.Length);
                queryUser.Login    = msg.Logininfo;
                queryUser.Gcnetid  = msg.Gcnetid;
                queryUser.Gsid     = msg.Gsid;
                queryUser.Nickname = userDbData.szNickName;
            }
            CS.instance.userMgr.EncodeAndSendToLogicThread(queryUser, ( int )DBToCS.MsgID.EQueryUserDbcallBack);
            return(ErrorCode.Success);
        }
Ejemplo n.º 2
0
        public ErrorCode LoadDBData(UserDBData userDbData)
        {
            this.userDbData = userDbData.Clone();
            if (0 == this.userDbData.usrDBData.un8UserLv)
            {
                this.userDbData.ChangeUserDbData(UserDBDataType.UserLv, ( byte )1);
                this.userDbData.ChangeUserDbData(UserDBDataType.VIPLevel, ( short )1);
            }

            //auto itemID = RefreshCardBegin + i;
            //auto cfg = CCSCfgMgr::getInstance().GetOtherItemCfg( itemID );
            //if ( !cfg )
            //{
            //	ELOG( LOG_ERROR, "洗练全配置为null" );
            //	continue;
            //}
            //UserItemInfo sSUserItemInfo;
            //sSUserItemInfo.itemID = itemID;
            //sSUserItemInfo.itemNum = 5;
            //sSUserItemInfo.endTime = -1;
            //ELOG( LOG_DBBUG, "增加临时洗练" );
            //this._userDBData.item_Map[sSUserItemInfo.itemID] = sSUserItemInfo;

            //GetTaskMgr().UnpackTaskData( this._userDBData.szTaskData );//解析任务数据

            return(ErrorCode.Success);
        }
Ejemplo n.º 3
0
        private ErrorCode GetUserShortGiftMail(DBActiveWrapper db, UserDBData sUserData, DBToCS.QueryUser sQueryUser)
        {
            string sqlStr =
                $"select mail_id,mail_state from gameuser_mail where user_id = {sUserData.usrDBData.un64ObjIdx} order by mail_id DESC;";
            ErrorCode errorCode = db.SqlExecQuery(sqlStr, dataReader =>
            {
                while (dataReader.Read())
                {
                    DBToCS.MailInfo mailInfo = new DBToCS.MailInfo
                    {
                        Mailid = dataReader.GetInt32("mail_id"),
                        State  = dataReader.GetInt32("mail_state")
                    };
                    sQueryUser.MailInfo.Add(mailInfo);
                }
                this.DBAsynQueryGameMailList(db, sUserData.usrDBData.un64ObjIdx);
                return(ErrorCode.Success);
            });

            return(errorCode);
        }
Ejemplo n.º 4
0
        private ErrorCode DBAsynQueryUser(UserDBData userData, DBToCS.QueryUser queryUser, DBActiveWrapper db)
        {
            string sqlStr =
                $"select * from gameuser, gameuser_runne,gameuser_guide where gameuser.obj_id = {userData.usrDBData.un64ObjIdx} and " +
                $"gameuser_runne.user_id ={userData.usrDBData.un64ObjIdx} and gameuser_guide.obj_id = {userData.usrDBData.un64ObjIdx};";
            ErrorCode errorCode = db.SqlExecQuery(sqlStr, dataReader =>
            {
                if (!dataReader.Read())
                {
                    Logger.Warn("could not find user data");
                    return(ErrorCode.UserDataNotFound);
                }

                userData.szNickName             = dataReader.GetString("obj_name");
                userData.usrDBData.n16Sex       = dataReader.GetInt16("obj_sex");
                userData.usrDBData.userPlatform = ( UserPlatform )dataReader.GetInt32("sdk_id");
                userData.usrDBData.un16HeaderID = dataReader.GetUInt16("obj_headid");

                userData.usrDBData.n64Score                  = dataReader.GetInt64("obj_score");
                userData.usrDBData.n64Diamond                = dataReader.GetInt64("obj_diamond");
                userData.usrDBData.n64Gold                   = dataReader.GetInt64("obj_gold");
                userData.usrDBData.un32TotalGameInns         = dataReader.GetUInt32("obj_game_inns");
                userData.usrDBData.un32TotalWinInns          = dataReader.GetUInt32("obj_game_winns");
                userData.usrDBData.un32TotalHeroKills        = dataReader.GetUInt32("obj_kill_hero_num");
                userData.usrDBData.un32TotalAssist           = dataReader.GetUInt32("obj_ass_kill_num");
                userData.usrDBData.un32TotalDestoryBuildings = dataReader.GetUInt32("obj_dest_building_num");
                userData.usrDBData.un32TotalDeadTimes        = dataReader.GetUInt32("obj_dead_num");
                userData.usrDBData.un32UserCurLvExp          = dataReader.GetUInt32("obj_cur_lv_exp");

                userData.usrDBData.un8UserLv  = dataReader.GetByte("obj_lv");
                userData.usrDBData.un16Cldays = dataReader.GetUInt16("obj_cldays");
                userData.usrDBData.un16VipLv  = dataReader.GetInt16("obj_vip_lv");

                userData.usrDBData.un32LastGetLoginRewardDay = dataReader.GetInt32("obj_last_loginreward_time");
                userData.usrDBData.tRegisteUTCMillisec       = dataReader.GetInt64("obj_register_time");
                userData.szTaskData = dataReader.GetString("obj_task_data");

                queryUser.TaskData = userData.szTaskData;

                DBToCS.RuneInfo runedB = new DBToCS.RuneInfo
                {
                    SlotStr = dataReader.GetString("runeslot_json"),
                    BagStr  = dataReader.GetString("runnebag_json")
                };

                queryUser.Runeinfo.Add(runedB);
                queryUser.Guidestr = dataReader.GetString("obj_cs_guide_com_steps");

                return(ErrorCode.Success);
            });

            if (errorCode != ErrorCode.Success)
            {
                return(errorCode);
            }

            errorCode = this.GetUserHeros(db, userData.usrDBData.un64ObjIdx, queryUser);
            if (errorCode != ErrorCode.Success)
            {
                return(errorCode);
            }

            Dictionary <ulong, uint> t_map = new Dictionary <ulong, uint>();

            errorCode = this.DBAsynQueryUserSNSList(db, userData.usrDBData.un64ObjIdx, t_map);
            if (errorCode == ErrorCode.Success)
            {
                foreach (KeyValuePair <ulong, uint> kv in t_map)
                {
                    DBToCS.RSinfo info = new DBToCS.RSinfo
                    {
                        RelatedId = kv.Key,
                        Relation  = kv.Value
                    };
                    queryUser.Rsinfo.Add(info);
                    this.DBAsynQueryUserHeaderAndNickname(db, kv.Value, info);
                }
            }
            else
            {
                Logger.Error($"DBAsynQueryUserSNSList error:{errorCode}");
            }

            errorCode = this.DBAsynQueryUserItems(db, userData.usrDBData.un64ObjIdx, queryUser);
            if (errorCode != ErrorCode.Success)
            {
                Logger.Error($"DBAsynQueryUserItems error:{errorCode}");
            }

            errorCode = this.GetUserShortGiftMail(db, userData, queryUser);
            if (errorCode != ErrorCode.Success)
            {
                Logger.Error($"GetUserShortGiftMail error:{errorCode}");
            }

            return(errorCode);
        }
Ejemplo n.º 5
0
        private ErrorCode UserAskLogin(CSGSInfo csgsInfo, uint gcNetID, GCToCS.Login login)
        {
            if (string.IsNullOrEmpty(login.Name) || login.Name.Length > Consts.DEFAULT_NAME_LEN)
            {
                return(ErrorCode.InvalidUserName);
            }

            UserNetInfo netinfo = new UserNetInfo(csgsInfo.m_n32GSID, gcNetID);

            if (this.ContainsUser(netinfo))
            {
                return(ErrorCode.InvalidNetState);
            }

            ErrorCode errorCode = ErrorCode.Success;

            UserCombineKey sUserCombineKey = new UserCombineKey(login.Name, login.Sdk);

            if (this.allUserName2GuidMap.TryGetValue(sUserCombineKey, out ulong guid))
            {
                //老玩家
                //如果还在内存里
                CSUser user = this.GetUser(guid);
                if (null != user)
                {
                    bool bFlag = this.CheckIfInGuideBattle(user);
                    if (bFlag)
                    {
                        Logger.Warn("新手引导玩家不允许顶号");
                        return(ErrorCode.GuideUserForbit);
                    }

                    user.OnOnline(netinfo, login, false, false);
                    return(ErrorCode.Success);
                }

                //异步查询玩家数据
                CSToDB.QueryUserReq queryUser = new CSToDB.QueryUserReq
                {
                    Logininfo = login.ToByteString().ToStringUtf8(),
                    Gsid      = csgsInfo.m_n32GSID,
                    Gcnetid   = ( int )gcNetID,
                    Csid      = ( int )CS.instance.csKernelCfg.unCSId,
                    Objid     = ( long )guid
                };
                errorCode = this.QueryUserAsync(queryUser).Result;
            }
            else
            {
                //新玩家,产生GUID
                guid = this.CombineGUID();

                CSUser     pcUser     = new CSUser();
                UserDBData userDbData = new UserDBData();
                userDbData.usrDBData.un64ObjIdx          = guid;
                userDbData.szUserName                    = login.Name;
                userDbData.szUserPwd                     = login.Passwd;
                userDbData.usrDBData.userPlatform        = ( UserPlatform )login.Sdk;
                userDbData.usrDBData.tRegisteUTCMillisec = TimeUtils.utcTime;

                //加入全局表
                this.allUserName2GuidMap.Add(sUserCombineKey, guid);

                pcUser.LoadDBData(userDbData);
                //todo
                //pcUser.userBattleInfoEx.mDebugName = login.Name;

                ErrorCode nRet = this.AddUser(pcUser);
                if (nRet != 0)
                {
                    return(nRet);
                }

                pcUser.OnOnline(netinfo, login, true, true);

                this.InsertNewUserToMysql(login, pcUser);
            }
            //todo
            //log
            //{
            //	string mystream = string.Empty;
            //	mystream << login.name() << LOG_SIGN;
            //	mystream << login.sdk() << LOG_SIGN;
            //	mystream << login.platform() << LOG_SIGN;
            //	mystream << login.equimentid() << LOG_SIGN;
            //	mystream << login.ipaddress();
            //	CSSGameLogMgr::GetInstance().AddGameLog( eLog_Login, guid, mystream.str() );
            //}
            return(errorCode);
        }