コード例 #1
0
        /// <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);
        }
コード例 #2
0
 public void OnPlayerLogout(PlayerLogoutEvent evt)
 {
     if (AdvancedTeleportationPlugin.Instance.BackPos.ContainsKey(evt.User.SlgId))
     {
         AdvancedTeleportationPlugin.Instance.BackPos.Remove(evt.User.SlgId);
     }
 }
コード例 #3
0
ファイル: Login.cs プロジェクト: Erls-Corporation/Login
        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);
                }
            }
        }
コード例 #4
0
ファイル: Login.cs プロジェクト: amarriner/Login
        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);
                }
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 public void PlayerLogoutEvent(PlayerLogoutEvent evt)
 {
     Console.WriteLine(EventUtil.EventToString(evt));
 }
コード例 #7
0
 /// <summary>
 /// Hook method for player logging out
 /// </summary>
 /// <param name="Event">PlayerLogoutEvent info</param>
 public virtual void onPlayerLogout(PlayerLogoutEvent Event)
 {
 }
コード例 #8
0
 public override void onPlayerLogout(PlayerLogoutEvent Event)
 {
     try {
         passportManager.logout(Event.Player);
     } catch (UserNotLoggedInException e) {
         // noop
         Log(e.Message);
     }
 }
コード例 #9
0
        /* 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);
                        }
                    }
                }
            }
        }
コード例 #10
0
ファイル: IRCage.cs プロジェクト: AWRyder/IRCage
 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);
 }
コード例 #11
0
        public override void onPlayerLogout(PlayerLogoutEvent Event)
        {
            int nPlayerIndex = Event.getPlayer().whoAmi;

            MyPlayer oPlayer = Players[nPlayerIndex];

            Players[nPlayerIndex] = null;

            Event.setCancelled(false);
        }
コード例 #12
0
        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;
            }
        }