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); } } }
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(); } }
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(); } }
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); } } } }
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); }