Beispiel #1
0
        public static void MergeAccountsFromPrison()
        {
            Accounts prison = new Accounts();

            prison.Load("Accounts/prison.xml");

            foreach (Account acc in prison.GetAccounts())
            {
                Account account = Accounts.ServerAccounts.GetAccount(acc.Username) as Account;

                if (account == null) //Si non existant, on l'ajoute.
                {
                    for (int i = 0; i < 7; i++)
                    {
                        acc[i] = null; // Si l'account n'existait pas, on s'assure qu'il n'a pas de perso par accident.
                    }

                    List <AccountTag> tags = new List <AccountTag>(acc.Tags);

                    foreach (AccountTag tag in tags)
                    {
                        acc.RemoveTag(tag.Name); // On retire aussi tous les tags.
                    }

                    Accounts.ServerAccounts.Add(acc);
                }
            }
        }
Beispiel #2
0
        private static void Save(WorldSaveEventArgs e)
        {
            if (!Directory.Exists("Saves/Accounts"))
            {
                Directory.CreateDirectory("Saves/Accounts");
            }

            string filePath = Path.Combine("Saves/Accounts", "accounts.xml");

            using (StreamWriter op = new StreamWriter(filePath))
            {
                XmlTextWriter xml = new XmlTextWriter(op);

                xml.Formatting  = Formatting.Indented;
                xml.IndentChar  = '\t';
                xml.Indentation = 1;

                xml.WriteStartDocument(true);

                xml.WriteStartElement("accounts");

                xml.WriteAttributeString("count", Accounts.Count.ToString());

                foreach (Account account in Accounts.GetAccounts())
                {
                    account.Save(xml);
                }

                xml.WriteEndElement();

                xml.Close();
            }
        }
Beispiel #3
0
        private static void WipeAllPlayerAccounts_OnCommand(CommandEventArgs e)
        {
            List <Account> to_delete = new List <Account>();

            foreach (Account a in Accounts.GetAccounts())
            {
                if (a.AccessLevel == AccessLevel.Player)
                {
                    to_delete.Add(a);
                }
            }
            foreach (Account a in to_delete)
            {
                a.Delete();
            }
        }
Beispiel #4
0
        public static void MergeTagsFromMain()
        {
            Accounts main = new Accounts();

            main.Load("Accounts/main.xml");

            foreach (Account acc in main.GetAccounts())
            {
                Account account = Accounts.ServerAccounts.GetAccount(acc.Username) as Account;

                if (account != null) //Si existant, on lui donne les tags de l'ancien. Autrement, il fut supprimé.
                {
                    foreach (AccountTag tag in acc.Tags)
                    {
                        account.AddTag(tag.Name, tag.Value);
                    }
                }
            }
        }
Beispiel #5
0
		private static void ConvertCurrency(CommandEventArgs e)
		{
			e.Mobile.SendMessage(
				"Converting All Banked Gold from {0} to {1}.  Please wait...",
				AccountGold.Enabled ? "checks and coins" : "account treasury",
				AccountGold.Enabled ? "account treasury" : "checks and coins");

			NetState.Pause();

			double found = 0.0, converted = 0.0;

			try
			{
				BankBox box;
				List<Gold> gold;
				List<BankCheck> checks;
				long share = 0, shared;
				int diff;

				foreach (var a in Accounts.GetAccounts().OfType<Account>().Where(a => a.Count > 0))
				{
					try
					{
						if (!AccountGold.Enabled)
						{
							share = (int)Math.Truncate((a.TotalCurrency / a.Count) * CurrencyThreshold);
							found += a.TotalCurrency * CurrencyThreshold;
						}

						foreach (var m in a.m_Mobiles.Where(m => m != null))
						{
							box = m.FindBankNoCreate();

							if (box == null)
							{
								continue;
							}

							if (AccountGold.Enabled)
							{
								foreach (var o in checks = box.FindItemsByType<BankCheck>())
								{
									found += o.Worth;

									if (!a.DepositGold(o.Worth))
									{
										break;
									}

									converted += o.Worth;
									o.Delete();
								}

								checks.Clear();
								checks.TrimExcess();

								foreach (var o in gold = box.FindItemsByType<Gold>())
								{
									found += o.Amount;

									if (!a.DepositGold(o.Amount))
									{
										break;
									}

									converted += o.Amount;
									o.Delete();
								}

								gold.Clear();
								gold.TrimExcess();
							}
							else
							{
								shared = share;

								while (shared > 0)
								{
									if (shared > 60000)
									{
										diff = (int)Math.Min(10000000, shared);

										if (a.WithdrawGold(diff))
										{
											box.DropItem(new BankCheck(diff));
										}
										else
										{
											break;
										}
									}
									else
									{
										diff = (int)Math.Min(60000, shared);

										if (a.WithdrawGold(diff))
										{
											box.DropItem(new Gold(diff));
										}
										else
										{
											break;
										}
									}

									converted += diff;
									shared -= diff;
								}
							}

							box.UpdateTotals();
						}
					}
					catch
					{ }
				}
			}
			catch
			{ }

			NetState.Resume();

			e.Mobile.SendMessage("Operation complete: {0:#,0} of {1:#,0} Gold has been converted in total.", converted, found);
		}