public static void Importv1(Mobile mobile, string fileName, StreamReader r, ArrayList ArgsList) { ArrayList SpawnerList = new ArrayList(); int totalErrors = 0; string MessagesTitle = (string)ArgsList[2]; string Messages = (string)ArgsList[4]; ArrayList HideSpawnerList = (ArrayList)ArgsList[6]; ArrayList MSGCheckBoxesList = (ArrayList)ArgsList[13]; mobile.SendMessage("Importing spawners..."); DateTime beginTime = DateTime.Now; int amountOfSpawners = 0, amountOfEntries = 0, locX = 0, locY = 0, locZ = 0; string map = null; Map spawnerMap = null; try{ amountOfSpawners = Convert.ToInt32(r.ReadLine()); } catch { totalErrors++; } for (int i = 0; i < amountOfSpawners; i++) { int errors = 0; MegaSpawner megaSpawner = new MegaSpawner(); megaSpawner.Imported = CropDirectory(fileName.ToLower()); megaSpawner.ImportVersion = "1"; megaSpawner.Editor = null; megaSpawner.Workspace = false; try{ map = r.ReadLine().ToLower(); } catch { errors++; totalErrors++; } if (map == "felucca") { spawnerMap = Map.Felucca; } if (map == "trammel") { spawnerMap = Map.Trammel; } if (map == "ilshenar") { spawnerMap = Map.Ilshenar; } if (map == "malas") { spawnerMap = Map.Malas; } try{ locX = Convert.ToInt32(r.ReadLine()); } catch { errors++; totalErrors++; } try{ locY = Convert.ToInt32(r.ReadLine()); } catch { errors++; totalErrors++; } try{ locZ = Convert.ToInt32(r.ReadLine()); } catch { errors++; totalErrors++; } try{ amountOfEntries = Convert.ToInt32(r.ReadLine()); } catch { errors++; totalErrors++; } for (int cnt = 0; cnt < amountOfEntries; cnt++) { try{ megaSpawner.EntryList.Add(r.ReadLine()); } // Entry List catch { errors++; totalErrors++; } try{ megaSpawner.SpawnRangeList.Add(Convert.ToInt32(r.ReadLine())); } // Spawn Range List catch { errors++; totalErrors++; } try{ megaSpawner.WalkRangeList.Add(Convert.ToInt32(r.ReadLine())); } // Walk Range List catch { errors++; totalErrors++; } try{ megaSpawner.AmountList.Add(Convert.ToInt32(r.ReadLine())); } // Amount List catch { errors++; totalErrors++; } try{ megaSpawner.MinDelayList.Add(Convert.ToInt32(r.ReadLine())); } // Min Delay List catch { errors++; totalErrors++; } try{ megaSpawner.MaxDelayList.Add(Convert.ToInt32(r.ReadLine())); } // Max Delay List catch { errors++; totalErrors++; } megaSpawner.SpawnTypeList.Add(SpawnType.Regular); // Spawn Type List megaSpawner.ActivatedList.Add((bool)true); // Activated List megaSpawner.EventRangeList.Add(10); // EVent Range List megaSpawner.EventKeywordList.Add(""); // EVent Keyword List megaSpawner.KeywordCaseSensitiveList.Add((bool)false); megaSpawner.TriggerEventNowList.Add((bool)true); // Trigger Event Now List megaSpawner.EventAmbushList.Add((bool)true); // Event Ambush List megaSpawner.BeginTimeBasedList.Add(0); // Begin Time Based List megaSpawner.EndTimeBasedList.Add(0); // End Time Based List megaSpawner.GroupSpawnList.Add((bool)false); // Group Spawn List megaSpawner.MinStackAmountList.Add(0); megaSpawner.MaxStackAmountList.Add(0); megaSpawner.MovableList.Add((bool)true); megaSpawner.MinDespawnList.Add(1800); megaSpawner.MaxDespawnList.Add(3600); megaSpawner.DespawnList.Add((bool)false); megaSpawner.DespawnGroupList.Add((bool)false); megaSpawner.DespawnTimeExpireList.Add((bool)true); ArrayList respawnEntryList = new ArrayList(); ArrayList respawnTimeList = new ArrayList(); ArrayList spawnCounterList = new ArrayList(); ArrayList spawnTimeList = new ArrayList(); ArrayList respawnOnSaveList = new ArrayList(); ArrayList despawnTimeList = new ArrayList(); for (int j = 0; j < (int)megaSpawner.AmountList[cnt]; j++) { respawnEntryList.Add((string)megaSpawner.EntryList[cnt]); respawnTimeList.Add(0); spawnCounterList.Add(DateTime.Now); spawnTimeList.Add(0); respawnOnSaveList.Add((bool)false); despawnTimeList.Add(0); } megaSpawner.RespawnEntryList.Add(respawnEntryList); megaSpawner.RespawnTimeList.Add(respawnTimeList); megaSpawner.SpawnCounterList.Add(spawnCounterList); megaSpawner.SpawnTimeList.Add(spawnTimeList); megaSpawner.RespawnOnSaveList.Add(respawnOnSaveList); megaSpawner.DespawnTimeList.Add(despawnTimeList); megaSpawner.SpawnedEntries.Add(new ArrayList()); megaSpawner.LastMovedList.Add(new ArrayList()); } if (errors > 0) { megaSpawner.Delete(); amountOfSpawners--; } else { SpawnerList.Add(megaSpawner); megaSpawner.MoveToWorld(new Point3D(locX, locY, locZ), spawnerMap); if (megaSpawner.Active) { megaSpawner.Start(); megaSpawner.Respawn(); } HideSpawnerList.Add((bool)false); MSGCheckBoxesList.Add((bool)false); MC.FileImportAdd(megaSpawner.Imported, megaSpawner.ImportVersion); } } r.Close(); TimeSpan finishTime = DateTime.Now - beginTime; MessagesTitle = "Import Spawners"; if (amountOfSpawners > 0) { Messages = String.Format("File type identified as a Mega Spawner v1 file. {0} Mega Spawner{1} imported. The process took {2} second{3}.", amountOfSpawners, amountOfSpawners == 1 ? "" : "s", (int)finishTime.TotalSeconds, (int)finishTime.TotalSeconds == 1 ? "" : "s"); } else { Messages = String.Format("File type identified as a Mega Spawner v1 file. No Mega Spawners were imported due to errors in the file. The process took {0} second{1}.", (int)finishTime.TotalSeconds, (int)finishTime.TotalSeconds == 1 ? "" : "s"); MC.FileImportRemove(CropDirectory(fileName)); } DateTime beginDupeTime = DateTime.Now; Messages = DupeSpawnerCheck(SpawnerList, Messages); TimeSpan finishDupeTime = DateTime.Now - beginDupeTime; Messages = String.Format("{0} The duped spawner check process took {1} second{2}.", Messages, (int)finishDupeTime.TotalSeconds, (int)finishDupeTime.TotalSeconds == 1 ? "" : "s"); if (totalErrors > 0) { Messages = String.Format("{0} {1} error{2} been detected.", Messages, totalErrors, totalErrors == 1 ? " has" : "s have"); } MC.CheckFileImportList(fileName); ArgsList[2] = MessagesTitle; ArgsList[4] = Messages; ArgsList[6] = HideSpawnerList; ArgsList[13] = MSGCheckBoxesList; mobile.CloseGump(typeof(LoadFileGump)); mobile.SendGump(new FileMenuGump(mobile, ArgsList)); }
public static bool Deserialize(GenericReader reader) { bool success = false; Map map = null; Point3D location = new Point3D(); MegaSpawner megaSpawner = new MegaSpawner(true); try { int version = reader.ReadInt(); if (version >= 1) { location = reader.ReadPoint3D(); map = reader.ReadMap(); megaSpawner.Active = reader.ReadBool(); megaSpawner.Imported = reader.ReadString(); megaSpawner.ImportVersion = reader.ReadString(); megaSpawner.ContainerSpawn = (Container)reader.ReadItem(); megaSpawner.Workspace = reader.ReadBool(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { megaSpawner.EntryList.Add(reader.ReadString()); } for (int i = 0; i < count; i++) { megaSpawner.SpawnRangeList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.WalkRangeList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { int amount = reader.ReadInt(); if (amount == 0) { amount = 1; } megaSpawner.AmountList.Add(amount); } for (int i = 0; i < count; i++) { megaSpawner.MinDelayList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.MaxDelayList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.SpawnTypeList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.ActivatedList.Add(reader.ReadBool()); } for (int i = 0; i < count; i++) { megaSpawner.EventRangeList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.EventKeywordList.Add(reader.ReadString()); } for (int i = 0; i < count; i++) { megaSpawner.KeywordCaseSensitiveList.Add(reader.ReadBool()); } for (int i = 0; i < count; i++) { megaSpawner.TriggerEventNowList.Add(reader.ReadBool()); } for (int i = 0; i < count; i++) { megaSpawner.EventAmbushList.Add(reader.ReadBool()); } for (int i = 0; i < count; i++) { megaSpawner.BeginTimeBasedList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.EndTimeBasedList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.GroupSpawnList.Add(reader.ReadBool()); } for (int i = 0; i < count; i++) { megaSpawner.MinStackAmountList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.MaxStackAmountList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.MovableList.Add(reader.ReadBool()); } if (version >= 2) { for (int i = 0; i < count; i++) { megaSpawner.MinDespawnList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.MaxDespawnList.Add(reader.ReadInt()); } for (int i = 0; i < count; i++) { megaSpawner.DespawnList.Add(reader.ReadBool()); } for (int i = 0; i < count; i++) { megaSpawner.DespawnGroupList.Add(reader.ReadBool()); } for (int i = 0; i < count; i++) { megaSpawner.DespawnTimeExpireList.Add(reader.ReadBool()); } } else { for (int i = 0; i < count; i++) { megaSpawner.MinDespawnList.Add(1800); } for (int i = 0; i < count; i++) { megaSpawner.MaxDespawnList.Add(3600); } for (int i = 0; i < count; i++) { megaSpawner.DespawnList.Add((bool)false); } for (int i = 0; i < count; i++) { megaSpawner.DespawnGroupList.Add((bool)false); } for (int i = 0; i < count; i++) { megaSpawner.DespawnTimeExpireList.Add((bool)true); } } int settingsCount = reader.ReadInt(); if (version >= 3) { for (int i = 0; i < settingsCount; i++) { ArrayList List = new ArrayList(); Setting setting = (Setting)reader.ReadInt(); List.Add(setting); switch (setting) { case Setting.OverrideIndividualEntries: { List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadBool()); List.Add(reader.ReadBool()); List.Add((SpawnType)reader.ReadInt()); List.Add(reader.ReadString()); List.Add(reader.ReadBool()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); List.Add(reader.ReadBool()); List.Add(reader.ReadBool()); List.Add(reader.ReadBool()); break; } case Setting.AddItem: { List.Add(reader.ReadString()); List.Add(reader.ReadInt()); List.Add(reader.ReadString()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); break; } case Setting.AddContainer: { List.Add(reader.ReadString()); List.Add(reader.ReadInt()); List.Add(reader.ReadString()); List.Add(reader.ReadInt()); List.Add(reader.ReadInt()); int settingCount = reader.ReadInt(); for (int j = 6; j < settingCount; j++) { ArrayList ItemsList = new ArrayList(); ItemsList.Add(reader.ReadString()); ItemsList.Add(reader.ReadInt()); ItemsList.Add(reader.ReadInt()); List.Add(ItemsList); } break; } } megaSpawner.SettingsList.Add(List); } } else { for (int i = 0; i < settingsCount; i++) { megaSpawner.SettingsList.Add(reader.ReadString()); } megaSpawner.ConvertOldSettings(); } } if (megaSpawner.Workspace) { megaSpawner.Delete(); } else { megaSpawner.MoveToWorld(location, map); megaSpawner.Start(); if (megaSpawner.Imported != "") { MC.FileImportAdd(megaSpawner.Imported, megaSpawner.ImportVersion); } megaSpawner.CompileSettings(); megaSpawner.CheckEntryErrors(); megaSpawner.SettingsList.Sort(new MC.SettingsSorter()); if (megaSpawner.OverrideIndividualEntries) { for (int i = 0; i < megaSpawner.OverrideAmount; i++) { megaSpawner.OverrideRespawnEntryList.Add(""); megaSpawner.OverrideRespawnTimeList.Add(0); megaSpawner.OverrideSpawnCounterList.Add(DateTime.Now); megaSpawner.OverrideSpawnTimeList.Add(0); megaSpawner.OverrideDespawnTimeList.Add(0); } } else { for (int i = 0; i < megaSpawner.EntryList.Count; i++) { ArrayList respawnEntryList = new ArrayList(); ArrayList respawnTimeList = new ArrayList(); ArrayList spawnCounterList = new ArrayList(); ArrayList spawnTimeList = new ArrayList(); ArrayList respawnOnSaveList = new ArrayList(); ArrayList despawnTimeList = new ArrayList(); for (int j = 0; j < (int)megaSpawner.AmountList[i]; j++) { respawnEntryList.Add((string)megaSpawner.EntryList[i]); respawnTimeList.Add(0); spawnCounterList.Add(DateTime.Now); spawnTimeList.Add(0); respawnOnSaveList.Add((bool)false); despawnTimeList.Add(0); } megaSpawner.RespawnEntryList.Add(respawnEntryList); megaSpawner.RespawnTimeList.Add(respawnTimeList); megaSpawner.SpawnCounterList.Add(spawnCounterList); megaSpawner.SpawnTimeList.Add(spawnTimeList); megaSpawner.RespawnOnSaveList.Add(respawnOnSaveList); megaSpawner.DespawnTimeList.Add(despawnTimeList); megaSpawner.SpawnedEntries.Add(new ArrayList()); megaSpawner.LastMovedList.Add(new ArrayList()); } } megaSpawner.Respawn(); } success = true; } catch { if (megaSpawner != null) { megaSpawner.Delete(); } } return(success); }
private void ImportMegaSpawner(XmlNode node, string fileName) { int errors = 0; amountOfSpawners++; Map map = null; Point3D location = new Point3D(); MegaSpawner megaSpawner = new MegaSpawner(); megaSpawner.Imported = MC.CropDirectory(fileName.ToLower()); megaSpawner.ImportVersion = version; megaSpawner.Editor = null; megaSpawner.Workspace = false; double ver; try{ ver = Convert.ToDouble(version); } catch { ver = 0.0; } try{ megaSpawner.Name = GetInnerText(node["Name"]); } catch { errors++; totalErrors++; } try{ megaSpawner.Active = bool.Parse(GetInnerText(node["Active"])); } catch { errors++; totalErrors++; } try{ map = Map.Parse(GetInnerText(node["Map"])); } catch { errors++; totalErrors++; } try{ location = Point3D.Parse(GetInnerText(node["Location"])); } catch { errors++; totalErrors++; } XmlElement entryLists = null; try{ entryLists = node["EntryLists"]; } catch { errors++; totalErrors++; } if (entryLists != null) { int cnt = 0; try { foreach (XmlElement entry in entryLists.GetElementsByTagName("EntryList")) { string entryCompare = null; try{ entryCompare = GetInnerText(entry["EntryType"]); } catch { errors++; totalErrors++; } int entryCount = 0; for (int i = 0; i < megaSpawner.EntryList.Count; i++) { string entryType = (string)megaSpawner.EntryList[i]; if (entryType.ToLower() == entryCompare.ToLower()) { entryCount++; } } if (entryCount == 0) { megaSpawner.EntryList.Add(entryCompare); } try{ megaSpawner.SpawnRangeList.Add(int.Parse(GetInnerText(entry["SpawnRange"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.WalkRangeList.Add(int.Parse(GetInnerText(entry["WalkRange"]))); } catch { errors++; totalErrors++; } try { int amount = int.Parse(GetInnerText(entry["Amount"])); if (amount == 0) { amount = 1; } megaSpawner.AmountList.Add(amount); } catch { errors++; totalErrors++; } try{ megaSpawner.MinDelayList.Add(int.Parse(GetInnerText(entry["MinDelay"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.MaxDelayList.Add(int.Parse(GetInnerText(entry["MaxDelay"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.SpawnTypeList.Add(int.Parse(GetInnerText(entry["SpawnType"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.ActivatedList.Add(bool.Parse(GetInnerText(entry["Activated"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.EventRangeList.Add(int.Parse(GetInnerText(entry["EventRange"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.EventKeywordList.Add(GetInnerText(entry["EventKeyword"])); } catch { errors++; totalErrors++; } try{ megaSpawner.KeywordCaseSensitiveList.Add(bool.Parse(GetInnerText(entry["KeywordCaseSensitive"]))); } catch { megaSpawner.KeywordCaseSensitiveList.Add((bool)false); exceptions++; } megaSpawner.TriggerEventNowList.Add((bool)true); try{ megaSpawner.EventAmbushList.Add(bool.Parse(GetInnerText(entry["EventAmbush"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.BeginTimeBasedList.Add(int.Parse(GetInnerText(entry["BeginTimeBased"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.EndTimeBasedList.Add(int.Parse(GetInnerText(entry["EndTimeBased"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.GroupSpawnList.Add(bool.Parse(GetInnerText(entry["GroupSpawn"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.MinStackAmountList.Add(int.Parse(GetInnerText(entry["MinStackAmount"]))); } catch { megaSpawner.MinStackAmountList.Add(1); exceptions++; } try{ megaSpawner.MaxStackAmountList.Add(int.Parse(GetInnerText(entry["MaxStackAmount"]))); } catch { megaSpawner.MaxStackAmountList.Add(1); exceptions++; } if (ver < 3.2) { try{ megaSpawner.MovableList.Add(bool.Parse(GetInnerText(entry["ItemMovable"]))); } catch { megaSpawner.MovableList.Add((bool)true); exceptions++; } } else { try{ megaSpawner.MovableList.Add(bool.Parse(GetInnerText(entry["Movable"]))); } catch { megaSpawner.MovableList.Add((bool)true); exceptions++; } } if (ver >= 3.5) { try{ megaSpawner.MinDespawnList.Add(int.Parse(GetInnerText(entry["MinDespawn"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.MaxDespawnList.Add(int.Parse(GetInnerText(entry["MaxDespawn"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.DespawnList.Add(bool.Parse(GetInnerText(entry["Despawn"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.DespawnGroupList.Add(bool.Parse(GetInnerText(entry["DespawnGroup"]))); } catch { errors++; totalErrors++; } try{ megaSpawner.DespawnTimeExpireList.Add(bool.Parse(GetInnerText(entry["DespawnTimeExpire"]))); } catch { errors++; totalErrors++; } } else { megaSpawner.MinDespawnList.Add(1800); megaSpawner.MaxDespawnList.Add(3600); megaSpawner.DespawnList.Add((bool)false); megaSpawner.DespawnGroupList.Add((bool)false); megaSpawner.DespawnTimeExpireList.Add((bool)true); } cnt++; } } catch { errors++; totalErrors++; } } XmlElement settingsList = null; try{ settingsList = node["SettingsList"]; } catch { errors++; totalErrors++; } if (settingsList != null) { if (ver >= 3.6) { try { foreach (XmlElement setting in settingsList.GetElementsByTagName("OverrideIndividualEntries")) { int err = errors; ArrayList List = new ArrayList(); List.Add(Setting.OverrideIndividualEntries); try{ List.Add(int.Parse(GetInnerText(setting["SpawnRange"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["WalkRange"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["Amount"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["MinDelay"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["MaxDelay"]))); } catch { errors++; totalErrors++; } try{ List.Add(bool.Parse(GetInnerText(setting["GroupSpawn"]))); } catch { errors++; totalErrors++; } try{ List.Add(bool.Parse(GetInnerText(setting["EventAmbush"]))); } catch { errors++; totalErrors++; } try{ List.Add((SpawnType)int.Parse(GetInnerText(setting["SpawnType"]))); } catch { errors++; totalErrors++; } try{ List.Add(GetInnerText(setting["EventKeyword"])); } catch { errors++; totalErrors++; } try{ List.Add(bool.Parse(GetInnerText(setting["CaseSensitive"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["EventRange"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["BeginTimeBasedHour"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["BeginTimeBasedMinute"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["EndTimeBasedHour"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["EndTimeBasedMinute"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["MinDespawn"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["MaxDespawn"]))); } catch { errors++; totalErrors++; } try{ List.Add(bool.Parse(GetInnerText(setting["Despawn"]))); } catch { errors++; totalErrors++; } try{ List.Add(bool.Parse(GetInnerText(setting["DespawnGroup"]))); } catch { errors++; totalErrors++; } try{ List.Add(bool.Parse(GetInnerText(setting["DespawnTimeExpire"]))); } catch { errors++; totalErrors++; } if (err == errors) { megaSpawner.SettingsList.Add(List); } } } catch {} try { foreach (XmlElement setting in settingsList.GetElementsByTagName("AddItemSetting")) { int err = errors; ArrayList List = new ArrayList(); List.Add(Setting.AddItem); try{ List.Add(GetInnerText(setting["EntryName"])); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["EntryIndex"]))); } catch { errors++; totalErrors++; } try{ List.Add(GetInnerText(setting["AddItem"])); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["MinStackAmount"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["MaxStackAmount"]))); } catch { errors++; totalErrors++; } if (err == errors) { megaSpawner.SettingsList.Add(List); } } } catch {} try { foreach (XmlElement setting in settingsList.GetElementsByTagName("AddContainerSetting")) { int err = errors; ArrayList List = new ArrayList(); List.Add(Setting.AddContainer); try{ List.Add(GetInnerText(setting["EntryName"])); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["EntryIndex"]))); } catch { errors++; totalErrors++; } try{ List.Add(GetInnerText(setting["AddItem"])); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["MinStackAmount"]))); } catch { errors++; totalErrors++; } try{ List.Add(int.Parse(GetInnerText(setting["MaxStackAmount"]))); } catch { errors++; totalErrors++; } XmlElement contList = null; try{ contList = setting["ContainerItems"]; } catch { errors++; totalErrors++; } try { foreach (XmlElement contItem in contList.GetElementsByTagName("ContainerItem")) { ArrayList ItemsList = new ArrayList(); try{ ItemsList.Add(GetInnerText(contItem["AddItem"])); } catch { errors++; totalErrors++; } try{ ItemsList.Add(int.Parse(GetInnerText(contItem["MinStackAmount"]))); } catch { errors++; totalErrors++; } try{ ItemsList.Add(int.Parse(GetInnerText(contItem["MaxStackAmount"]))); } catch { errors++; totalErrors++; } List.Add(ItemsList); } } catch {} if (err == errors) { megaSpawner.SettingsList.Add(List); } } } catch {} } else { foreach (XmlElement setting in settingsList.GetElementsByTagName("Setting")) { try{ megaSpawner.SettingsList.Add(setting.InnerText); } catch { errors++; totalErrors++; } } megaSpawner.ConvertOldSettings(); } } if (errors > 0) { megaSpawner.Delete(); amountOfSpawners--; } else { megaSpawner.MoveToWorld(location, map); if (location.Z == -999) { megaSpawner.Location = GetLocation(megaSpawner, location); } if (megaSpawner.Location.Z == -999) { megaSpawner.Delete(); amountOfSpawners--; autoFailures++; return; } megaSpawner.CheckDupedSettings(); megaSpawner.CompileSettings(); megaSpawner.SettingsList.Sort(new MC.SettingsSorter()); if (megaSpawner.OverrideIndividualEntries) { for (int i = 0; i < megaSpawner.OverrideAmount; i++) { megaSpawner.OverrideRespawnEntryList.Add(""); megaSpawner.OverrideRespawnTimeList.Add(0); megaSpawner.OverrideSpawnCounterList.Add(DateTime.Now); megaSpawner.OverrideSpawnTimeList.Add(0); megaSpawner.OverrideDespawnTimeList.Add(0); } } else { for (int i = 0; i < megaSpawner.EntryList.Count; i++) { ArrayList respawnEntryList = new ArrayList(); ArrayList respawnTimeList = new ArrayList(); ArrayList spawnCounterList = new ArrayList(); ArrayList spawnTimeList = new ArrayList(); ArrayList respawnOnSaveList = new ArrayList(); ArrayList despawnTimeList = new ArrayList(); for (int j = 0; j < (int)megaSpawner.AmountList[i]; j++) { respawnEntryList.Add((string)megaSpawner.EntryList[i]); respawnTimeList.Add(0); spawnCounterList.Add(DateTime.Now); spawnTimeList.Add(0); respawnOnSaveList.Add((bool)false); despawnTimeList.Add(0); } megaSpawner.RespawnEntryList.Add(respawnEntryList); megaSpawner.RespawnTimeList.Add(respawnTimeList); megaSpawner.SpawnCounterList.Add(spawnCounterList); megaSpawner.SpawnTimeList.Add(spawnTimeList); megaSpawner.RespawnOnSaveList.Add(respawnOnSaveList); megaSpawner.DespawnTimeList.Add(despawnTimeList); megaSpawner.SpawnedEntries.Add(new ArrayList()); megaSpawner.LastMovedList.Add(new ArrayList()); } } SpawnerList.Add(megaSpawner); if (megaSpawner.Active) { megaSpawner.Respawn(); } HideSpawnerList.Add((bool)false); MSGCheckBoxesList.Add((bool)false); MC.FileImportAdd(megaSpawner.Imported, megaSpawner.ImportVersion); } }
private void ConvertDistroSpawner(Item item) { MegaSpawner megaSpawner = new MegaSpawner(); Spawner spawner = (Spawner)item; Type type = spawner.GetType(); PropertyInfo[] props = type.GetProperties(BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public); int count = spawner.CreaturesName.Count; int walkRange = spawner.HomeRange; foreach (PropertyInfo prop in props) { if (prop.Name == "WalkingRange") { walkRange = Convert.ToInt32(prop.GetValue(spawner, null)); break; } } if (spawner.Name != "Spawner") { megaSpawner.Name = spawner.Name; } int calcMinDelay = 0, calcMaxDelay = 0; for (int i = 0; i < count; i++) { int entryCount = 0; for (int j = 0; j < megaSpawner.EntryList.Count; j++) { string entryType = (string)megaSpawner.EntryList[j]; if (entryType.ToLower() == ((string)spawner.CreaturesName[i]).ToLower()) { entryCount++; } } if (entryCount == 0) { bool movable = true; megaSpawner.EntryList.Add((string)spawner.CreaturesName[i]); megaSpawner.SpawnRangeList.Add(spawner.HomeRange); megaSpawner.WalkRangeList.Add(walkRange); if (count == 1) { megaSpawner.AmountList.Add((int)(spawner.Count)); } else if (((int)spawner.Count / count) == (int)((double)spawner.Count / (double)count)) { megaSpawner.AmountList.Add((int)(spawner.Count / count)); } else { megaSpawner.AmountList.Add((int)(spawner.Count / count) + 1); } calcMinDelay = (spawner.MinDelay.Hours * 3600) + (spawner.MinDelay.Minutes * 60) + spawner.MinDelay.Seconds; calcMaxDelay = (spawner.MaxDelay.Hours * 3600) + (spawner.MaxDelay.Minutes * 60) + spawner.MaxDelay.Seconds; Type entryType = ScriptCompiler.FindTypeByName((string)spawner.CreaturesName[i]); if (entryType != null) { Item toAdd = null; try { toAdd = (Item)Activator.CreateInstance(entryType); movable = toAdd.Movable; } catch {} if (toAdd != null) { toAdd.Delete(); } } megaSpawner.MinDelayList.Add(calcMinDelay); megaSpawner.MaxDelayList.Add(calcMaxDelay); megaSpawner.SpawnTypeList.Add(SpawnType.Regular); megaSpawner.ActivatedList.Add((bool)true); megaSpawner.EventRangeList.Add(10); megaSpawner.EventKeywordList.Add(""); megaSpawner.KeywordCaseSensitiveList.Add((bool)false); megaSpawner.TriggerEventNowList.Add((bool)true); megaSpawner.EventAmbushList.Add((bool)true); megaSpawner.BeginTimeBasedList.Add(0); megaSpawner.EndTimeBasedList.Add(0); megaSpawner.GroupSpawnList.Add(spawner.Group); megaSpawner.MinStackAmountList.Add(1); megaSpawner.MaxStackAmountList.Add(1); megaSpawner.MovableList.Add(movable); megaSpawner.MinDespawnList.Add(1800); megaSpawner.MaxDespawnList.Add(3600); megaSpawner.DespawnList.Add((bool)false); megaSpawner.DespawnGroupList.Add((bool)false); megaSpawner.DespawnTimeExpireList.Add((bool)true); } } ArrayList settingList = new ArrayList(); settingList.Add(Setting.OverrideIndividualEntries); settingList.Add(spawner.HomeRange); settingList.Add(walkRange); settingList.Add(spawner.Count); settingList.Add(calcMinDelay); settingList.Add(calcMaxDelay); settingList.Add(spawner.Group); settingList.Add((bool)true); settingList.Add(SpawnType.Regular); settingList.Add(""); settingList.Add((bool)false); settingList.Add(10); settingList.Add(0); settingList.Add(0); settingList.Add(0); settingList.Add(0); settingList.Add(1800); settingList.Add(3600); settingList.Add((bool)false); settingList.Add((bool)false); settingList.Add((bool)true); megaSpawner.SettingsList.Add(settingList); megaSpawner.CompileSettings(); megaSpawner.SettingsList.Sort(new MC.SettingsSorter()); for (int j = 0; j < megaSpawner.OverrideAmount; j++) { megaSpawner.OverrideRespawnEntryList.Add(""); megaSpawner.OverrideRespawnTimeList.Add(0); megaSpawner.OverrideSpawnCounterList.Add(DateTime.Now); megaSpawner.OverrideSpawnTimeList.Add(0); megaSpawner.OverrideDespawnTimeList.Add(0); } megaSpawner.MoveToWorld(spawner.Location, spawner.Map); if (megaSpawner.Active) { MegaSpawnerOverride.CheckDupedEntries(megaSpawner); megaSpawner.Start(); megaSpawner.Respawn(); } HideSpawnerList.Add((bool)false); MSGCheckBoxesList.Add((bool)false); spawner.Delete(); }