Example #1
0
 internal void KickUser(CSUser user, Protos.CS2GS_KickGC.Types.EReason reason)
 {
     //通知gs玩家被踢下线
     Protos.CS2GS_KickGC kickGc = ProtoCreator.Q_CS2GS_KickGC();
     kickGc.GcNID  = user.gcNID;
     kickGc.Reason = reason;
     CS.instance.netSessionMgr.Send(user.gsSID, kickGc);
     this.Offline(user);
 }
Example #2
0
        /// <summary>
        /// 断开指定玩家连接,由Session在连接关闭时调用
        /// </summary>
        internal bool KickUser(ulong gcNID, Protos.CS2GS_KickGC.Types.EReason reason)
        {
            CSUser user = this.GetUser(gcNID);

            if (user == null)
            {
                Logger.Warn($"can not find user:{gcNID}");
                return(false);
            }
            this.KickUser(user, reason);
            return(true);
        }
Example #3
0
        /// <summary>
        /// BS通知玩家离开战场
        /// </summary>
        public ErrorCode OnBs2CsKickUser(NetSessionBase session, Google.Protobuf.IMessage message)
        {
            Protos.BS2CS_KickUser kickUser = (Protos.BS2CS_KickUser)message;
            CSUser user = CS.instance.battleStaging.GetUser(kickUser.GcNID);

            if (user != null)
            {
                Protos.CS2GS_KickGC.Types.EReason reason = Protos.CS2GS_KickGC.Types.EReason.OutOfSync;
                switch (kickUser.Reason)
                {
                case Protos.BS2CS_KickUser.Types.Reason.OutOfSync:
                    reason = Protos.CS2GS_KickGC.Types.EReason.OutOfSync;
                    break;

                case Protos.BS2CS_KickUser.Types.Reason.Gclost:
                    reason = Protos.CS2GS_KickGC.Types.EReason.Bslost;
                    break;
                }
                //踢下线
                CS.instance.userMgr.KickUser(user, reason);
            }
            return(ErrorCode.Success);
        }