/// <summary> /// Signs this player out of their account. /// <para>If <paramref name="out_of"/> is not null, the player is signed out only if they're signed into the account supplied.</para> /// </summary> /// <param name="player"></param> /// <param name="out_of"></param> /// <returns>Whether or not the user's authentication status changed.</returns> public static bool Signout(this Player player, Account out_of = null) { var session = player.Session(); if (session == null) { return(false); } var accref = session.Account; if (accref == null) { return(false); } if (accref.TryUnpack(out var acc)) { if (out_of == null || out_of == acc) { PlayerLogoutEvent ple = new PlayerLogoutEvent(player, AccountantPlugin.Server); AccountantPlugin.Server.Events.FireEvent(ple); accref.Dispose(); session.Account = null; session.IsLoggedIn = false; return(true); } } return(false); }
public void OnPlayerLogout(PlayerLogoutEvent evt) { if (AdvancedTeleportationPlugin.Instance.BackPos.ContainsKey(evt.User.SlgId)) { AdvancedTeleportationPlugin.Instance.BackPos.Remove(evt.User.SlgId); } }
public override void onPlayerLogout(PlayerLogoutEvent Event) { if (Event.Player != null) { bool kicked = Event.Player.PluginData.ContainsKey("kicked") ? (bool)Event.Player.PluginData["kicked"] : false; bool playerIsValid = validPlayers.ContainsKey(Event.Sender.Name) ? (bool)validPlayers[Event.Sender.Name] : false; if (onlyAllowNewPlayers && !kicked && playerIsValid) { SavePlayerData(Event.Player, true); base.onPlayerLogout(Event); } } }
public static void OnPlayerLeft(Player player, ServerSlot slot, bool announced) { player.Active = false; if (announced) { ProgramLog.Users.Log ("{0} @ {1}: LEAVE {2}", slot.remoteAddress, slot.whoAmI, player.Name); var msg = NetMessage.PrepareThreadInstance(); msg.SynchBegin (player.whoAmi, 0 /*inactive*/); if (player.DisconnectReason != null) msg.PlayerChat (255, string.Concat (player.Name, " disconnected (", player.DisconnectReason, ")."), 255, 165, 0); else msg.PlayerChat (255, string.Concat (player.Name, " has left."), 255, 240, 20); msg.BroadcastExcept (player.whoAmi); } PlayerLogoutEvent Event = new PlayerLogoutEvent(); Event.Slot = null; Event.Sender = player; Program.server.PluginManager.processHook(Plugin.Hooks.PLAYER_LOGOUT, Event); }
public void PlayerLogoutEvent(PlayerLogoutEvent evt) { Console.WriteLine(EventUtil.EventToString(evt)); }
/// <summary> /// Hook method for player logging out /// </summary> /// <param name="Event">PlayerLogoutEvent info</param> public virtual void onPlayerLogout(PlayerLogoutEvent Event) { }
public override void onPlayerLogout(PlayerLogoutEvent Event) { try { passportManager.logout(Event.Player); } catch (UserNotLoggedInException e) { // noop Log(e.Message); } }
/* FIXME: always sends all updates to all players */ public static void SyncPlayers() { for (int i = 0; i < 255; i++) { int num = 0; if (Main.players[i].Active) { num = 1; } if (Netplay.slots[i].state == SlotState.PLAYING) { var msg = NetMessage.PrepareThreadInstance(); msg.SynchBegin (i, num); msg.PlayerStateUpdate (i); msg.PlayerHealthUpdate (i); msg.PlayerPVPChange (i); msg.PlayerJoinParty (i); msg.PlayerManaUpdate (i); msg.PlayerBuffs (i); msg.PlayerData (i); for (int k = 0; k < 44; k++) { msg.InventoryData (i, k, Main.players[i].inventory[k].Name); } for (int k = 0; k < 11; k++) { msg.InventoryData (i, k+44, Main.players[i].armor[k].Name); } if (!Netplay.slots[i].announced) { msg.PlayerChat (255, Main.players[i].Name + " has joined.", 255, 240, 20); Netplay.slots[i].announced = true; if (Main.dedServ) { Program.tConsole.WriteLine(Main.players[i].Name + " has joined."); } } var bytes = msg.Output; for (int k = 0; k < 256; k++) { if (k != i && Netplay.slots[k].state >= SlotState.PLAYING && Netplay.slots[k].Connected) { NetMessage.buffer[k].spamCount++; Netplay.slots[k].Send (bytes); } } } else { NetMessage.SendData(14, -1, i, "", i, (float)num, 0f, 0f); if (Netplay.slots[i].announced) { Netplay.slots[i].announced = false; NetMessage.SendData(25, -1, i, Netplay.slots[i].oldName + " has left.", 255, 255f, 240f, 20f); if (Main.dedServ) { Program.tConsole.WriteLine(Netplay.slots[i].oldName + " has left."); PlayerLogoutEvent Event = new PlayerLogoutEvent(); Event.Slot = Netplay.slots[i]; Event.Sender = Main.players[i]; Program.server.PluginManager.processHook(Plugin.Hooks.PLAYER_LOGOUT, Event); } } } } }
public override void onPlayerLogout(PlayerLogoutEvent Event) { if (Event.Sender.Name.Length > 0) { String msg = Event.Sender.Name + " has left the server."; if (mircc.getIrcColors()) { msg = AIRCH.CODE_COLOR + "3" + msg; } mircc.sendToChan(msg); } base.onPlayerLogout(Event); }
public override void onPlayerLogout(PlayerLogoutEvent Event) { int nPlayerIndex = Event.getPlayer().whoAmi; MyPlayer oPlayer = Players[nPlayerIndex]; Players[nPlayerIndex] = null; Event.setCancelled(false); }
public static void syncPlayers() { bool flag = false; for (int i = 0; i < 255; i++) { int num = 0; if (Main.players[i].Active) { num = 1; } if (Netplay.serverSock[i].state == 10) { if (Main.autoShutdown && !flag) { string text = Netplay.serverSock[i].tcpClient.Client.RemoteEndPoint.ToString(); string a = text; for (int j = 0; j < text.Length; j++) { if (text.Substring(j, 1) == ":") { a = text.Substring(0, j); } } if (a == "127.0.0.1") { flag = true; } } NetMessage.SendData(14, -1, i, "", i, (float)num, 0f, 0f, 0); NetMessage.SendData(13, -1, i, "", i, 0f, 0f, 0f, 0); NetMessage.SendData(16, -1, i, "", i, 0f, 0f, 0f, 0); NetMessage.SendData(30, -1, i, "", i, 0f, 0f, 0f, 0); NetMessage.SendData(45, -1, i, "", i, 0f, 0f, 0f, 0); NetMessage.SendData(42, -1, i, "", i, 0f, 0f, 0f, 0); NetMessage.SendData(50, -1, i, "", i, 0f, 0f, 0f, 0); NetMessage.SendData(4, -1, i, Main.players[i].Name, i, 0f, 0f, 0f, 0); for (int k = 0; k < 44; k++) { NetMessage.SendData(5, -1, i, Main.players[i].inventory[k].Name, i, (float)k, 0f, 0f, 0); } NetMessage.SendData(5, -1, i, Main.players[i].armor[0].Name, i, 44f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[1].Name, i, 45f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[2].Name, i, 46f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[3].Name, i, 47f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[4].Name, i, 48f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[5].Name, i, 49f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[6].Name, i, 50f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[7].Name, i, 51f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[8].Name, i, 52f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[9].Name, i, 53f, 0f, 0f, 0); NetMessage.SendData(5, -1, i, Main.players[i].armor[10].Name, i, 54f, 0f, 0f, 0); if (!Netplay.serverSock[i].announced) { Netplay.serverSock[i].announced = true; NetMessage.SendData(25, -1, i, Main.players[i].Name + " has joined.", 255, 255f, 240f, 20f); if (Main.dedServ) { Program.tConsole.WriteLine(Main.players[i].Name + " has joined."); PlayerLoginEvent Event = new PlayerLoginEvent(); Event.Socket = Netplay.serverSock[i]; Event.Sender = Main.players[i]; Program.server.getPluginManager().processHook(Plugin.Hooks.PLAYER_LOGIN, Event); } } } else { NetMessage.SendData(14, -1, i, "", i, (float)num, 0f, 0f); if (Netplay.serverSock[i].announced) { Netplay.serverSock[i].announced = false; NetMessage.SendData(25, -1, i, Netplay.serverSock[i].oldName + " has left.", 255, 255f, 240f, 20f); if (Main.dedServ) { Program.tConsole.WriteLine(Netplay.serverSock[i].oldName + " has left."); PlayerLogoutEvent Event = new PlayerLogoutEvent(); Event.Socket = Netplay.serverSock[i]; Event.Sender = Main.players[i]; Program.server.getPluginManager().processHook(Plugin.Hooks.PLAYER_LOGOUT, Event); } } } } if (Main.autoShutdown && !flag) { Commands.Commands.SaveAll(); Netplay.disconnect = true; } }