DarkEmu_GameServer.Systems.Disconnect C# (CSharp) Метод

Disconnect() публичный Метод

public Disconnect ( string type ) : void
type string
Результат void
        public void Disconnect(string type)
        {
            //We open with a try to catch bad exception errors
            try
            {
                //Defined by the string type, we choose the action this case normal disconnection
                if (type == "normal")
                {
                    //Make sure the character is not null
                    if (Character != null)
                    {
                        //Update and set account online to 0
                        MsSQL.UpdateData("UPDATE users SET online='0' WHERE id='" + Player.AccountName + "'");
                        MsSQL.UpdateData("UPDATE character SET online='0' WHERE name='" + Character.Information.Name + "'");
                        //Remove client from client list
                        Systems.clients.Remove(this);
                        //Write information to the console
                        Console.WriteLine("Character: {1} Logged off [Online Players: {0}]", Systems.clients.Count, Character.Information.Name);
                        //If the character is in a party
                        if (Character.Network.Party != null)
                        {
                            //We call remove void for removing the party member
                            RemoveOnDisconnect(Character.Network.Party, this);
                        }
                        //If the character is in a guild
                        if (Character.Network.Guild != null)
                        {
                            //We call remove void to update guild with offline status etc.
                            RemoveMeFromGuildDisconnect(Character.Network.Guild, Character);

                        }
                        //If the character has an active transportation
                        if (this.Character.Transport.Right)
                            //Despawn the transport
                            this.Character.Transport.Horse.DeSpawnMe();
                        //If the character has an active grabpet
                        if (this.Character.Grabpet.Active)
                            //Despawn the grabpet
                            this.Character.Grabpet.Details.DeSpawnMe();
                        //If the character has an open excange window
                        if (this.Character.Network.Exchange.Window)
                            //Close the exchange window (for other player).
                            this.Exchange_Close();
                        //If the character is sitting while closing the client
                        if (Character.State.Sitting)
                        {
                            //Check if the sit down timer is running
                            if (SitDown_HPMP_RegenTimer != null)
                            {
                                //Stop sit down timer
                                StopSitDownTimer();
                            }
                        }
                        //If there is still an active attack timer
                        if (Timer.Attack != null)
                            //Close the timer
                            StopAttackTimer();
                        //If the player has an active buff
                        if (Character.Action.Buff.count > 0)
                            //Close the buff
                            BuffAllClose();
                        //Despawn our character
                        DeSpawnMe();
                        //If mp regeneration timer is not null
                        if (MPRegen != null)
                            //Stop regen timer
                            StopMPRegen();
                        //If hp regeneration timer is not null
                        if (HPRegen != null)
                            //Stop regen timer
                            StopHPRegen();
                        //Save (remove blue data)
                        //Load blue data
                        LoadBlues(Character);
                        //Get list of equipped items
                        List<Global.slotItem> EquipedItems = new List<Global.slotItem>();
                        //If slot is lower then 13 we add the item to the list
                        for (byte q = 0; q < 13; q++)
                        {
                            //Add the equipped items to the list
                            EquipedItems.Add(GetItem((uint)Character.Information.CharacterID, q, 0));
                        }
                        //Load blues for each item
                        foreach (Global.slotItem sitem in EquipedItems)
                        {
                            //If the item has a blue valua that matches our database of blues
                            if (Data.ItemBlue.ContainsKey(sitem.dbID))
                            {
                                //Load blues for the item id
                                LoadBluesid(sitem.dbID);
                                //If the total amount of blues is not 0
                                if (Data.ItemBlue[sitem.dbID].totalblue != 0)
                                    //Remove blue information
                                    AddRemoveBlues(this, sitem, false);
                            }
                        }
                        //Save player current location
                        SavePlayerPosition();
                        //Save player information
                        SavePlayerInfo();
                        //Set ingame bool to false
                        Character.InGame = false;
                        //If player is not null
                        if (Player != null)
                        {
                            //Dispose of player
                            Player.Dispose();
                        }
                        //Stop ping timer
                        PingStop();
                        //Close client
                        client.Close();
                    }
                }
                //If our disconnection type is banning.
                if (type == "ban")
                {

                    //Make sure the character is not null
                    if (Character != null)
                    {
                        //Update and set account online to 0
                        MsSQL.UpdateData("UPDATE users SET online='0' WHERE id='" + Player.AccountName + "'");
                        MsSQL.UpdateData("UPDATE character SET online='0' WHERE name='" + Character.Information.Name + "'");
                        //Remove client from client list
                        Systems.clients.Remove(this);
                        //Write information to the console
                        Console.WriteLine("Character: {1} has been banned hack attempt [Online Players: {0}]", Systems.clients.Count, Character.Information.Name);
                        //If the character is in a party
                        if (Character.Network.Party != null)
                        {
                            //We call remove void for removing the party member
                            RemoveOnDisconnect(Character.Network.Party, this);
                        }
                        //If the character is in a guild
                        if (Character.Network.Guild != null)
                        {
                            //We call remove void to update guild with offline status etc.

                        }
                        //If the character has an active transportation
                        if (this.Character.Transport.Right)
                            //Despawn the transport
                            this.Character.Transport.Horse.DeSpawnMe();
                        //If the character has an active grabpet
                        if (this.Character.Grabpet.Active)
                            //Despawn the grabpet
                            this.Character.Grabpet.Details.DeSpawnMe();
                        //If the character has an open excange window
                        if (this.Character.Network.Exchange.Window)
                            //Close the exchange window (for other player).
                            this.Exchange_Close();
                        //If the character is sitting while closing the client
                        if (Character.State.Sitting)
                        {
                            //Check if the sit down timer is running
                            if (SitDown_HPMP_RegenTimer != null)
                            {
                                //Stop sit down timer
                                StopSitDownTimer();
                            }
                        }
                        //If there is still an active attack timer
                        if (Timer.Attack != null)
                            //Close the timer
                            StopAttackTimer();
                        //If the player has an active buff
                        if (Character.Action.Buff.count > 0)
                            //Close the buff
                            BuffAllClose();
                        //Despawn our character
                        DeSpawnMe();
                        //If mp regeneration timer is not null
                        if (MPRegen != null)
                            //Stop regen timer
                            StopMPRegen();
                        //If hp regeneration timer is not null
                        if (HPRegen != null)
                            //Stop regen timer
                            StopHPRegen();
                        //Save (remove blue data)
                        //Load blue data
                        LoadBlues(Character);
                        //Get list of equipped items
                        List<Global.slotItem> EquipedItems = new List<Global.slotItem>();
                        //If slot is lower then 13 we add the item to the list
                        for (byte q = 0; q < 13; q++)
                        {
                            //Add the equipped items to the list
                            EquipedItems.Add(GetItem((uint)Character.Information.CharacterID, q, 0));
                        }
                        //Load blues for each item
                        foreach (Global.slotItem sitem in EquipedItems)
                        {
                            //If the item has a blue valua that matches our database of blues
                            if (Data.ItemBlue.ContainsKey(sitem.dbID))
                            {
                                //Load blues for the item id
                                LoadBluesid(sitem.dbID);
                                //If the total amount of blues is not 0
                                if (Data.ItemBlue[sitem.dbID].totalblue != 0)
                                    //Remove blue information
                                    AddRemoveBlues(this, sitem, false);
                            }
                        }
                        //Save player current location
                        SavePlayerPosition();
                        //Save player information
                        SavePlayerInfo();
                        //Set ingame bool to false
                        Character.InGame = false;
                        //If player is not null
                        if (Player != null)
                        {
                            //Dispose of player
                            Player.Dispose();
                        }
                        //Stop ping timer
                        PingStop();
                        //Close client
                        client.Close();
                    }
                }
            }
            //When a error happens
            catch (Exception ex)
            {
                //Write the exception error to the console
                Console.WriteLine("Disconnect.cs error {0}", ex);
                //Write info to the debug logger
                Systems.Debugger.Write(ex);
            }
        }
Systems