void Player_Wait_CallBack(object e) { try { if (Character.Information.Quit) { //############################################## // checks before logout //############################################## if (Character.Position.Walking) { Character.Position.RecordedTime = 0; Timer.Movement.Dispose(); Timer.Movement = null; } //############################################## // checks before logout //############################################## if (Character.Information.CheckParty) { LeaveParty(); } //############################################## // checks before logout //############################################## if (Character.Network.Guild.Guildid != 0) { Character.Information.Online = 0; //Send packets to network and spawned players foreach (int member in Character.Network.Guild.Members) { //Make sure the member is there if (member != 0) { //We dont send this info to the invited user. if (member != Character.Information.CharacterID) { //If the user is not the newly invited member get player info Systems tomember = GetPlayerMainid(member); //Send guild update packet if (tomember != null) { tomember.client.Send(Packet.GuildUpdate(Character, 6, Character.Information.CharacterID, 0, 0)); } } } } Character.Network.Guild.Members.Remove(Character.Information.CharacterID); Character.Network.Guild.MembersClient.Remove(this.client); } //############################################## // checks before logout //############################################## if (Character.Transport.Right) { Character.Transport.Horse.DeSpawnMe(); } if (Character.Grabpet.Active) { UnSummonPetLogoff(Character.Grabpet.Details.UniqueID); } if (Character.Attackpet.Active) { UnSummonPetLogoff(Character.Attackpet.Details.UniqueID); } if (Character.Network.Exchange.Window) { Exchange_Close(); } //############################################## // checks before logout //############################################## MsSQL ms = new MsSQL("SELECT * FROM friends WHERE owner='" + Character.Information.CharacterID + "'"); int count = ms.Count(); if (count >= 0) { using (SqlDataReader reader = ms.Read()) { while (reader.Read()) { int getid = reader.GetInt32(2); Systems sys = GetPlayerid(getid); if (sys != null) { sys.client.Send(Packet.FriendData(Character.Information.CharacterID, 4, Character.Information.Name, Character, true)); } } } } //############################################## // Send packet leave game //############################################## client.Send(Packet.EndLeaveGame()); //############################################## // Updated database //############################################## MsSQL.UpdateData("UPDATE character SET online='0' WHERE id='" + Character.Information.CharacterID + "'"); //############################################## // Remove all remaining parts //############################################## BuffAllClose(); DeSpawnMe(); SavePlayerPosition(); SavePlayerInfo(); this.client.Close(); this.Character.Dispose(); this.Dispose(); Character.InGame = false; Disconnect("normal"); } Timer.Logout.Dispose(); } catch (Exception ex) { Console.WriteLine("Logout error: {0}", ex); } }