private static void PLAYER_LEAVE(byte[] bytes) { PlayerLeave input = PlayerLeave.Parser.ParseFrom(bytes); PlayerInfo pi = ServerLobbyManager.Instance.GetPlayer(_args); if (pi == null) { string msg = $"Do not find myself!"; // 没有找到自己! ServerLobbyManager.Instance.Log("LobbyMsgReply PLAYER_LEAVE Error - " + msg); return; } if (input.TokenId != pi.Enter.TokenId) { string msg = $"It's not me that leaves, it must be yourself!"; // 离开的不是自己, 必须是自己! ServerLobbyManager.Instance.Log("LobbyMsgReply PLAYER_LEAVE Error - " + msg); return; } ServerLobbyManager.Instance.RemovePlayer(_args); PlayerLeaveReply output = new PlayerLeaveReply() { TokenId = pi.Enter.TokenId, IsKicked = false, Ret = true, }; ServerLobbyManager.Instance.SendMsg(_args, LOBBY_REPLY.PlayerLeaveReply, output.ToByteArray()); ServerLobbyManager.Instance.Log($"MSG: User leaves the lobby! Account:<{pi.Enter.Account}> - TokenId:<{pi.Enter.TokenId}>"); // 用户离开大厅! }
internal void OnPlayerLeave(ClientCloseReason reason) { if (IsAuthorized) { PlayerLeave?.Invoke(this, reason); } }
public override int GetHashCode() { int hash = 1; if (changeCase_ == ChangeOneofCase.PlayerJoin) { hash ^= PlayerJoin.GetHashCode(); } if (changeCase_ == ChangeOneofCase.PlayerLeave) { hash ^= PlayerLeave.GetHashCode(); } if (changeCase_ == ChangeOneofCase.HostLeave) { hash ^= HostLeave.GetHashCode(); } if (token_ != null) { hash ^= Token.GetHashCode(); } hash ^= (int)changeCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
protected override void ServerOnPlayerDisconnected(int clientId, string reason) { PlayerLeave?.Invoke(Players[clientId], reason); if (Server.ClientInGame(clientId)) { if (false) // TODO DEMO { Server.SendPackMsg(new GameMsg_DeClientLeave() { Name = Server.ClientName(clientId), Reason = reason, ClientId = clientId, }, MsgFlags.NoSend, -1); } Server.SendPackMsg(new GameMsg_SvClientDrop() { ClientID = clientId, Reason = reason, Silent = Config["SvSilentSpectatorMode"] && Players[clientId].Team == Team.Spectators, }, MsgFlags.Vital | MsgFlags.NoRecord, -1); } Players[clientId].OnPlayerLeave(reason); Players[clientId] = null; }
public void Datahandle(byte[] bytes) { BaseNetObject bno = NetBaseTool.BytesToObject(bytes) as BaseNetObject; if (bno is SystemNetObject) { SystemNetObject systemNetObject = bno as SystemNetObject; if (systemNetObject.GetType() == typeof(Msg)) { Console.WriteLine(systemNetObject); } else if (systemNetObject.GetType() == typeof(GetMyUserData)) { MyUserData = (systemNetObject as GetMyUserData).userData; } else if (systemNetObject.GetType() == typeof(CreateRoomS2C)) { transmit = (systemNetObject as CreateRoomS2C).PlayerId; wait.Set(); } else if (systemNetObject.GetType() == typeof(JoinRoomS2C)) { transmit = (systemNetObject as JoinRoomS2C); wait.Set(); } else if (systemNetObject.GetType() == typeof(GetRoomListS2C)) { transmit = (systemNetObject as GetRoomListS2C).rooms; wait.Set(); } else if (systemNetObject.GetType() == typeof(PlayerJoinS2C)) { PlayerJoin?.Invoke((systemNetObject as PlayerJoinS2C).playerId); } else if (systemNetObject.GetType() == typeof(PlayerLeaveS2C)) { PlayerLeave?.Invoke((systemNetObject as PlayerLeaveS2C).playerId); } else if (systemNetObject.GetType() == typeof(GameStart)) { StartAction?.Invoke(); } } else { GameNetObject gno = bno as GameNetObject; if (gno == null) { throw new ArgumentException(bno.GetType() + " Can't Used"); } ReceiveAction?.Invoke(gno); } //防止死锁 // wait.Set(); }
public static PlayerLeave GetPlayerLeave(string json_string) { PlayerLeave temp = new PlayerLeave(); try { //string json_string = File.ReadAllText(SAPPRemote.MainWindow.SettingPath); if (Json.IsValid(json_string)) { var s = new JsonSerializerSettings(); s.NullValueHandling = NullValueHandling.Ignore; s.ObjectCreationHandling = ObjectCreationHandling.Replace; // without this, you end up with duplicates. temp = JsonConvert.DeserializeObject<PlayerLeave>(json_string, s); } else { } } catch (Exception) { } return temp; }
/// <summary> /// Called when a player goes out of range of this crafter. /// </summary> private void OnPlayerLeave(BasePlayer player) { SendClearCraftingList(player); PlayerLeave?.Invoke(this, player); }