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
        public ErrorCode OnECs2GsKickGc(NetSessionBase session, IMessage message)
        {
            Protos.CS2GS_KickGC kickGC = (Protos.CS2GS_KickGC)message;

            //可能在收到消息前,客户端就断开了,这里必须容错
            if (GS.instance.userMgr.GetSID(kickGC.GcNID, out uint sid_))
            {
                //通知客户端被踢下线
                Protos.GS2GC_Kick kick = ProtoCreator.Q_GS2GC_Kick();
                kick.Reason = kickGC.Reason;
                GS.instance.netSessionMgr.Send(sid_, kick);

                //强制断开客户端
                GS.instance.netSessionMgr.CloseSession(sid_, "CS Kick");
            }
            return(ErrorCode.Success);
        }