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); }
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); }