public ESpawnerGump(ESpawner ESpawner) : base(50, 50) { m_EclSpawner = ESpawner; this.Closable = true; this.Disposable = true; this.Dragable = true; this.Resizable = false; this.AddPage(0); this.AddBackground(50, 0, 332, 450, 2620); this.AddBackground(50, 451, 332, 143, 2620); this.AddAlphaRegion(55, 6, 322, 437); this.AddLabel(155, 459, 955, string.Format("{0} V{1}", m_EclSpawner.Name, m_EclSpawner.Version.ToString())); this.AddButton(340, 559, 4017, 4018, (int)Buttons.Close, GumpButtonType.Reply, 0); this.AddLabel(75, 484, 955, @"Bring All Home"); this.AddButton(170, 484, 4023, 4024, (int)Buttons.BringAllHome, GumpButtonType.Reply, 0); this.AddButton(170, 509, 4023, 4024, (int)Buttons.TotalRespawn, GumpButtonType.Reply, 0); this.AddLabel(76, 509, 955, @"Total Respawn"); this.AddLabel(227, 484, 955, @"Clear Objects"); this.AddButton(322, 484, 4023, 4024, (int)Buttons.ClearObjects, GumpButtonType.Reply, 0); this.AddLabel(75, 559, 955, @"Clear Spawner"); this.AddButton(170, 559, 4023, 4024, (int)Buttons.ClearSpawner, GumpButtonType.Reply, 0); AddSpawnerList(55, 0); this.AddImage(350, 332, 10410); this.AddImage(0, 499, 10402); }
private static string CreateSpawnString(ESpawner spawner) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < spawner.SpawnEntries.Count; i++) { EclSpawnEntry entry = (EclSpawnEntry)spawner.SpawnEntries[i]; if (sb.Length > 0) sb.Append(':'); sb.AppendFormat("{0}={1}", entry.SpawnObjectName, entry.Amount); } return sb.ToString(); }
public static void LoadSpawns(Mobile from, string fileName) { from.SendMessage(m_iNormalHue, "Loading spawners to the world... from the {0} file.", fileName); if (System.IO.File.Exists(fileName) == true) { FileStream fs = null; try { fs = File.Open(fileName, FileMode.Open); } catch { from.SendMessage(m_iErrorHue, "Error opening xml file."); return; } int TotalCount = 0; DataSet ds = new DataSet(SpawnDataSetName); try { ds.ReadXml(fs); } catch { from.SendMessage(m_iErrorHue, "Error reading xml file."); return; } if (ds.Tables != null && ds.Tables.Count > 0) { if (ds.Tables[SpawnTablePointName] != null && ds.Tables[SpawnTablePointName].Rows.Count > 0) foreach (DataRow dr in ds.Tables[SpawnTablePointName].Rows) { int iX = 0; int iY = 0; int iZ = 0; Map SpawnMap = null; int iMaxAmount = 0; int iHomeRange = 0; bool iRunning = false; int iTeam = 0; bool bGroup = false; TimeSpan SpawnMinDelay = TimeSpan.FromMinutes(5); TimeSpan SpawnMaxDelay = TimeSpan.FromMinutes(10); int iContSerial = 0; AccessLevel visibilityLevel = 0; string sSpawn = ""; bool bIgnoreWorldSpawn; bool bTryFlip = false; int iWayPoint = 0; try { iX = int.Parse((string)dr["X"]); iY = int.Parse((string)dr["Y"]); iZ = int.Parse((string)dr["Z"]); SpawnMap = Map.Parse((string)dr["Map"]); iMaxAmount = int.Parse((string)dr["MaxAmount"]); iHomeRange = int.Parse((string)dr["HomeRange"]); iRunning = bool.Parse((string)dr["Running"]); iTeam = int.Parse((string)dr["Team"]); bGroup = bool.Parse((string)dr["Group"]); SpawnMinDelay = TimeSpan.FromSeconds(int.Parse((string)dr["MinDelay"])); SpawnMaxDelay = TimeSpan.FromSeconds(int.Parse((string)dr["MaxDelay"])); iContSerial = int.Parse((string)dr["ContSerial"]); visibilityLevel = (AccessLevel)int.Parse((string)dr["VisibilityLevel"]); sSpawn = (string)dr["Spawn"]; bIgnoreWorldSpawn = bool.Parse((string)dr["IgnoreWorldSpawn"]); bTryFlip = bool.Parse((string)dr["TryFlip"]); iWayPoint = int.Parse((string)dr["WayPoint"]); } catch { from.SendMessage(m_iErrorHue, "Error trying to load."); return; } TotalCount++; List<EclSpawnEntry> alSpawn = new List<EclSpawnEntry>(); if (sSpawn != null && sSpawn.Length > 0) { string[] SpawnsSpawn = sSpawn.Split(':'); for (int i = 0; i < SpawnsSpawn.Length; i++) { string[] SpawnObjectDetails = SpawnsSpawn[i].Split('='); alSpawn.Add(new EclSpawnEntry(SpawnObjectDetails[0], new ArrayList(), int.Parse(SpawnObjectDetails[1]))); } } ESpawner spawner = new ESpawner(iMaxAmount, SpawnMinDelay, SpawnMaxDelay, iTeam, bGroup, iHomeRange, alSpawn, iMaxAmount > 0 ? true : false, visibilityLevel); spawner.TryFlip = bTryFlip; spawner.IgnoreWorldSpawn = bIgnoreWorldSpawn; if (iWayPoint != 0) { bool bFound = false; foreach (Item i in World.Items.Values) { if (i is WayPoint && ((WayPoint)i).Serial.Value == iWayPoint) { spawner.WayPoint = (WayPoint)i; spawner.MoveToWorld(new Point3D(iX, iY, iZ), SpawnMap); bFound = true; } } if (!bFound) // Error... waypoint not found { spawner.Delete(); from.SendMessage(m_iErrorHue, "Could not find the WayPoint for the spawner... Spawner deleted."); continue; } } else spawner.MoveToWorld(new Point3D(iX, iY, iZ), SpawnMap); if (iContSerial != 0) { bool bFound = false; foreach (Item i in World.Items.Values) { if (i is Container && ((Container)i).Serial.Value == iContSerial) { ((Container)i).DropItem(spawner); bFound = true; } } if (!bFound) // Error... container not found { spawner.Delete(); from.SendMessage(m_iErrorHue, "Could not find the parent container for the spawner... Spawner deleted."); continue; } } else spawner.MoveToWorld(new Point3D(iX, iY, iZ), SpawnMap); } } fs.Close(); from.SendMessage(m_iNormalHue, string.Format("Done... Loaded {0} spawners from {1}", TotalCount, fileName)); } else from.SendMessage(m_iErrorHue, "Could not find file {0}.", fileName); }
public ESpawnerTimer(ESpawner spawner, TimeSpan delay) : base(delay) { if (spawner.IsFull(false)) Priority = TimerPriority.FiveSeconds; else Priority = TimerPriority.OneSecond; m_Spawner = spawner; }