///////////////////////////////////// // SPAWN EDITOR // // This SpawnEditor is a huge mod // // of "ZenArcher's SpawnEditor v2" // // By Nerun // ///////////////////////////////////// using System; using System.IO; using System.Collections; using System.Collections.Generic; using Server; using Server.Items; using Server.Mobiles; using Server.Network; using Server.Regions; using Server.Commands; namespace Server.Gumps { public class SpawnEditorGump : Gump { private int m_page; private ArrayList m_tempList; public Item m_selSpawner; public int page { get{ return m_page; } set{ m_page = value; } } public Item selSpawner { get{ return m_selSpawner; } set{ m_selSpawner = value; } } public ArrayList tempList { get{ return m_tempList; } set{ m_tempList = value; } } public static void Initialize() { CommandSystem.Register( "SpawnEditor", AccessLevel.GameMaster, new CommandEventHandler( SpawnEditor_OnCommand ) ); CommandSystem.Register( "Editor", AccessLevel.GameMaster, new CommandEventHandler( SpawnEditor_OnCommand ) ); } public static void Register( string command, AccessLevel access, CommandEventHandler handler ) { CommandSystem.Register( command, access, handler ); } [Usage( "SpawnEditor" )] [Aliases( "Editor" )] [Description( "Used to find and edit spawns" )] public static void SpawnEditor_OnCommand( CommandEventArgs e ) { Mobile from = e.Mobile; SpawnEditor_OnCommand( from ); } public static void SpawnEditor_OnCommand( Mobile from ) { ArrayList worldList = new ArrayList(); ArrayList facetList = new ArrayList(); Type type = ScriptCompiler.FindTypeByName( "PremiumSpawner", true ); if ( type == typeof( Item ) || type.IsSubclassOf( typeof( Item ) ) ) { bool isAbstract = type.IsAbstract; foreach ( Item item in World.Items.Values ) { if ( isAbstract ? item.GetType().IsSubclassOf( type ) : item.GetType() == type ) worldList.Add( item ); } } foreach( PremiumSpawner worldSpnr in worldList ) { if( worldSpnr.Map == from.Map ) facetList.Add( worldSpnr ); } //TODO: Sort spawner list SpawnEditor_OnCommand( from, 0, facetList ); } public static void SpawnEditor_OnCommand( Mobile from, int page, ArrayList currentList ) { SpawnEditor_OnCommand( from, page, currentList, 0 ); } public static void SpawnEditor_OnCommand( Mobile from, int page, ArrayList currentList, int selected ) { SpawnEditor_OnCommand( from, page, currentList, selected, null ); } public static void SpawnEditor_OnCommand( Mobile from, int page, ArrayList currentList, int selected, Item selSpawner ) { from.SendGump( new SpawnEditorGump( from, page, currentList, selected, selSpawner ) ); } public SpawnEditorGump( Mobile from, int page, ArrayList currentList, int selected, Item spwnr ) : base( 50, 40 ) { tempList = new ArrayList(); Mobile m = from; m_page = page; Region r = from.Region; Map map = from.Map; int buttony = 60; int buttonID = 1; int listnum = 0; tempList = currentList; selSpawner = spwnr; AddPage(0); AddBackground( 0, 0, 600, 450, 5054 ); AddImageTiled( 8, 8, 584, 40, 2624 ); AddAlphaRegion( 8, 8, 584, 40 ); AddImageTiled( 8, 50, 250, 396, 2624 ); AddAlphaRegion( 8, 50, 250, 396 ); AddImageTiled( 260, 50, 332, 396, 2624 ); AddAlphaRegion( 260, 50, 332, 396 ); AddLabel( 220, 20, 52, "PREMIUM SPAWNER EDITOR" ); AddButton( 550, 405, 0x158A, 0x158B, 10002, GumpButtonType.Reply, 1 ); //Quit Button AddButton( 275, 412, 0x845, 0x846, 10008, GumpButtonType.Reply, 0 ); // Refresh button AddLabel( 300, 410, 52, "Refresh" ); if( currentList.Count == 0 ) AddLabel( 50, 210, 52, "No Premium Spawners Found" ); else { if( page == 0 ) { if( currentList.Count < 15 ) listnum = currentList.Count; else listnum = 15; for( int x = 0; x < listnum; x++ ) { Item spawnr = null; if( currentList[x] is Item ) spawnr = currentList[x] as Item; string gumpMsg = ""; Point3D spawnr3D = new Point3D( ( new Point2D( spawnr.X, spawnr.Y ) ), spawnr.Z ); Region spawnrRegion = Region.Find( spawnr3D, map ); if( spawnrRegion.ToString() == "" ) gumpMsg = "PremiumSpawner at " + spawnr.X.ToString() + ", " + spawnr.Y.ToString(); else gumpMsg = spawnrRegion.ToString(); AddButton( 25, buttony, 0x845, 0x846, buttonID, GumpButtonType.Reply, 0 ); AddLabel( 55, buttony, 52, gumpMsg ); buttony += 25; buttonID += 1; } } else if( page > 0 ) { if( currentList.Count < 15 + ( 15 * page ) ) listnum = currentList.Count; else listnum = 15 + ( 15 * page ); for( int x = 15 * page; x < listnum; x++ ) { Item spawnr = null; buttonID = x+1; if( currentList[x] is Item ) spawnr = currentList[x] as Item; string gumpMsg = ""; Point3D spawnr3D = new Point3D( ( new Point2D( spawnr.X, spawnr.Y ) ), spawnr.Z ); Region spawnrRegion = Region.Find( spawnr3D, map ); if( spawnrRegion.ToString() == "" ) gumpMsg = "PremiumSpawner at " + spawnr.X.ToString() + ", " + spawnr.Y.ToString(); else gumpMsg = spawnrRegion.ToString(); AddButton( 25, buttony, 0x845, 0x846, buttonID, GumpButtonType.Reply, 0 ); AddLabel( 55, buttony, 52, gumpMsg ); buttony += 25; } } } if( page == 0 && currentList.Count > 15 ) AddButton( 450, 20, 0x15E1, 0x15E5, 10000, GumpButtonType.Reply, 0 ); else if( page > 0 && currentList.Count > 15 + ( page * 15 ) ) AddButton( 450, 20, 0x15E1, 0x15E5, 10000, GumpButtonType.Reply, 0 ); if( page != 0 ) AddButton( 150, 20, 0x15E3, 0x15E7, 10001, GumpButtonType.Reply, 0 ); int pageNum = (int)currentList.Count / 15; int rem = currentList.Count % 15; int totPages = 0; string stotPages = ""; if( rem > 0 ) { totPages = pageNum + 1; stotPages = totPages.ToString(); } else stotPages = pageNum.ToString(); string pageText = "Page " + ( page + 1 ) + " of " + stotPages; AddLabel( 40, 20, 52, pageText ); if( selected == 0 ) InitializeStartingRightPanel(); else if( selected == 1 ) InitializeSelectedRightPanel(); } public void InitializeStartingRightPanel() { AddLabel( 275, 65, 52, "Filter to current region only" ); AddButton( 500, 65, 0x15E1, 0x15E5, 10003, GumpButtonType.Reply, 0 ); AddTextField( 275, 140, 50, 20, 0 ); AddLabel( 275, 115, 52, "Filter by Distance" ); AddButton( 500, 115, 0x15E1, 0x15E5, 10004, GumpButtonType.Reply, 0 ); AddTextField( 275, 190, 120, 20, 1 ); AddLabel( 275, 165, 52, "Search Spawners by Creature" ); AddButton( 500, 165, 0x15E1, 0x15E5, 10009, GumpButtonType.Reply, 0 ); AddTextField( 275, 240, 50, 20, 2 ); AddLabel( 275, 215, 52, "Search Spawners by SpawnID" ); AddButton( 500, 215, 0x15E1, 0x15E5, 10010, GumpButtonType.Reply, 0 ); } public void InitializeSelectedRightPanel() { string spX = selSpawner.X.ToString(); string spY = selSpawner.Y.ToString(); string spnText = "PremiumSpawner at " + spX + ", " + spY; AddLabel( 350, 65, 52, spnText ); PremiumSpawner initSpn = selSpawner as PremiumSpawner; int strNum = 0; string spns = "Containing: "; string spnsNEW = ""; string spns1 = ""; string spns2 = ""; string spns3 = ""; for( int i = 0; i < initSpn.CreaturesName.Count; i++ ) { if( strNum == 0 ) { if( i < initSpn.CreaturesName.Count - 1 ) { if( spns.Length + initSpn.CreaturesName[i].ToString().Length < 50 ) spnsNEW += (string)initSpn.CreaturesName[i] + ", "; else { strNum = 1; spns1 += (string)initSpn.CreaturesName[i] + ", "; } } else spnsNEW += (string)initSpn.CreaturesName[i]; } else if( strNum == 1 ) { if( i < initSpn.CreaturesName.Count - 1 ) { if( spns1.Length + initSpn.CreaturesName[i].ToString().Length < 50 ) spns1 += (string)initSpn.CreaturesName[i] + ", "; else { strNum = 2; spns2 += (string)initSpn.CreaturesName[i] + ", "; } } else { if( spns1.Length + initSpn.CreaturesName[i].ToString().Length < 50 ) spns1 += (string)initSpn.CreaturesName[i]; else { strNum = 3; spns2 += (string)initSpn.CreaturesName[i]; } } } else if( strNum == 2 ) { if( i < initSpn.CreaturesName.Count - 1 ) { if( spns2.Length + initSpn.CreaturesName[i].ToString().Length < 50 ) spns2 += (string)initSpn.CreaturesName[i] + ", "; else { strNum = 3; spns3 += (string)initSpn.CreaturesName[i] + ", "; } } else { if( spns2.Length + initSpn.CreaturesName[i].ToString().Length < 50 ) spns2 += (string)initSpn.CreaturesName[i]; else { strNum = 4; spns3 += (string)initSpn.CreaturesName[i]; } } } else if( strNum == 3 ) { if( i < initSpn.CreaturesName.Count - 1 ) spns3 += (string)initSpn.CreaturesName[i] + ", "; else spns3 += (string)initSpn.CreaturesName[i]; } } string spnsNEWa = ""; string spns1a = ""; string spns2a = ""; string spns3a = ""; for( int i = 0; i < initSpn.SubSpawnerA.Count; i++ ) { if( strNum == 0 ) { if( i < initSpn.SubSpawnerA.Count - 1 ) { if( spns.Length + initSpn.SubSpawnerA[i].ToString().Length < 50 ) spnsNEWa += (string)initSpn.SubSpawnerA[i] + ", "; else { strNum = 1; spns1a += (string)initSpn.SubSpawnerA[i] + ", "; } } else spnsNEWa += (string)initSpn.SubSpawnerA[i]; } else if( strNum == 1 ) { if( i < initSpn.SubSpawnerA.Count - 1 ) { if( spns1a.Length + initSpn.SubSpawnerA[i].ToString().Length < 50 ) spns1a += (string)initSpn.SubSpawnerA[i] + ", "; else { strNum = 2; spns2a += (string)initSpn.SubSpawnerA[i] + ", "; } } else { if( spns1a.Length + initSpn.SubSpawnerA[i].ToString().Length < 50 ) spns1a += (string)initSpn.SubSpawnerA[i]; else { strNum = 3; spns2a += (string)initSpn.SubSpawnerA[i]; } } } else if( strNum == 2 ) { if( i < initSpn.SubSpawnerA.Count - 1 ) { if( spns2a.Length + initSpn.SubSpawnerA[i].ToString().Length < 50 ) spns2a += (string)initSpn.SubSpawnerA[i] + ", "; else { strNum = 3; spns3a += (string)initSpn.SubSpawnerA[i] + ", "; } } else { if( spns2a.Length + initSpn.SubSpawnerA[i].ToString().Length < 50 ) spns2a += (string)initSpn.SubSpawnerA[i]; else { strNum = 4; spns3a += (string)initSpn.SubSpawnerA[i]; } } } else if( strNum == 3 ) { if( i < initSpn.SubSpawnerA.Count - 1 ) spns3a += (string)initSpn.SubSpawnerA[i] + ", "; else spns3a += (string)initSpn.SubSpawnerA[i]; } } string spnsNEWb = ""; string spns1b = ""; string spns2b = ""; string spns3b = ""; for( int i = 0; i < initSpn.SubSpawnerB.Count; i++ ) { if( strNum == 0 ) { if( i < initSpn.SubSpawnerB.Count - 1 ) { if( spns.Length + initSpn.SubSpawnerB[i].ToString().Length < 50 ) spnsNEWb += (string)initSpn.SubSpawnerB[i] + ", "; else { strNum = 1; spns1b += (string)initSpn.SubSpawnerB[i] + ", "; } } else spnsNEWb += (string)initSpn.SubSpawnerB[i]; } else if( strNum == 1 ) { if( i < initSpn.SubSpawnerB.Count - 1 ) { if( spns1b.Length + initSpn.SubSpawnerB[i].ToString().Length < 50 ) spns1b += (string)initSpn.SubSpawnerB[i] + ", "; else { strNum = 2; spns2b += (string)initSpn.SubSpawnerB[i] + ", "; } } else { if( spns1b.Length + initSpn.SubSpawnerB[i].ToString().Length < 50 ) spns1b += (string)initSpn.SubSpawnerB[i]; else { strNum = 3; spns2b += (string)initSpn.SubSpawnerB[i]; } } } else if( strNum == 2 ) { if( i < initSpn.SubSpawnerB.Count - 1 ) { if( spns2b.Length + initSpn.SubSpawnerB[i].ToString().Length < 50 ) spns2b += (string)initSpn.SubSpawnerB[i] + ", "; else { strNum = 3; spns3b += (string)initSpn.SubSpawnerB[i] + ", "; } } else { if( spns2b.Length + initSpn.SubSpawnerB[i].ToString().Length < 50 ) spns2b += (string)initSpn.SubSpawnerB[i]; else { strNum = 4; spns3b += (string)initSpn.SubSpawnerB[i]; } } } else if( strNum == 3 ) { if( i < initSpn.SubSpawnerB.Count - 1 ) spns3b += (string)initSpn.SubSpawnerB[i] + ", "; else spns3b += (string)initSpn.SubSpawnerB[i]; } } string spnsNEWc = ""; string spns1c = ""; string spns2c = ""; string spns3c = ""; for( int i = 0; i < initSpn.SubSpawnerC.Count; i++ ) { if( strNum == 0 ) { if( i < initSpn.SubSpawnerC.Count - 1 ) { if( spns.Length + initSpn.SubSpawnerC[i].ToString().Length < 50 ) spnsNEWc += (string)initSpn.SubSpawnerC[i] + ", "; else { strNum = 1; spns1c += (string)initSpn.SubSpawnerC[i] + ", "; } } else spnsNEWc += (string)initSpn.SubSpawnerC[i]; } else if( strNum == 1 ) { if( i < initSpn.SubSpawnerC.Count - 1 ) { if( spns1c.Length + initSpn.SubSpawnerC[i].ToString().Length < 50 ) spns1c += (string)initSpn.SubSpawnerC[i] + ", "; else { strNum = 2; spns2c += (string)initSpn.SubSpawnerC[i] + ", "; } } else { if( spns1c.Length + initSpn.SubSpawnerC[i].ToString().Length < 50 ) spns1c += (string)initSpn.SubSpawnerC[i]; else { strNum = 3; spns2c += (string)initSpn.SubSpawnerC[i]; } } } else if( strNum == 2 ) { if( i < initSpn.SubSpawnerC.Count - 1 ) { if( spns2c.Length + initSpn.SubSpawnerC[i].ToString().Length < 50 ) spns2c += (string)initSpn.SubSpawnerC[i] + ", "; else { strNum = 3; spns3c += (string)initSpn.SubSpawnerC[i] + ", "; } } else { if( spns2c.Length + initSpn.SubSpawnerC[i].ToString().Length < 50 ) spns2c += (string)initSpn.SubSpawnerC[i]; else { strNum = 4; spns3c += (string)initSpn.SubSpawnerC[i]; } } } else if( strNum == 3 ) { if( i < initSpn.SubSpawnerC.Count - 1 ) spns3c += (string)initSpn.SubSpawnerC[i] + ", "; else spns3c += (string)initSpn.SubSpawnerC[i]; } } string spnsNEWd = ""; string spns1d = ""; string spns2d = ""; string spns3d = ""; for( int i = 0; i < initSpn.SubSpawnerD.Count; i++ ) { if( strNum == 0 ) { if( i < initSpn.SubSpawnerD.Count - 1 ) { if( spns.Length + initSpn.SubSpawnerD[i].ToString().Length < 50 ) spnsNEWd += (string)initSpn.SubSpawnerD[i] + ", "; else { strNum = 1; spns1d += (string)initSpn.SubSpawnerD[i] + ", "; } } else spnsNEWd += (string)initSpn.SubSpawnerD[i]; } else if( strNum == 1 ) { if( i < initSpn.SubSpawnerD.Count - 1 ) { if( spns1d.Length + initSpn.SubSpawnerD[i].ToString().Length < 50 ) spns1d += (string)initSpn.SubSpawnerD[i] + ", "; else { strNum = 2; spns2d += (string)initSpn.SubSpawnerD[i] + ", "; } } else { if( spns1d.Length + initSpn.SubSpawnerD[i].ToString().Length < 50 ) spns1d += (string)initSpn.SubSpawnerD[i]; else { strNum = 3; spns2d += (string)initSpn.SubSpawnerD[i]; } } } else if( strNum == 2 ) { if( i < initSpn.SubSpawnerD.Count - 1 ) { if( spns2d.Length + initSpn.SubSpawnerD[i].ToString().Length < 50 ) spns2d += (string)initSpn.SubSpawnerD[i] + ", "; else { strNum = 3; spns3d += (string)initSpn.SubSpawnerD[i] + ", "; } } else { if( spns2d.Length + initSpn.SubSpawnerD[i].ToString().Length < 50 ) spns2d += (string)initSpn.SubSpawnerD[i]; else { strNum = 4; spns3d += (string)initSpn.SubSpawnerD[i]; } } } else if( strNum == 3 ) { if( i < initSpn.SubSpawnerD.Count - 1 ) spns3d += (string)initSpn.SubSpawnerD[i] + ", "; else spns3d += (string)initSpn.SubSpawnerD[i]; } } string spnsNEWe = ""; string spns1e = ""; string spns2e = ""; string spns3e = ""; for( int i = 0; i < initSpn.SubSpawnerE.Count; i++ ) { if( strNum == 0 ) { if( i < initSpn.SubSpawnerE.Count - 1 ) { if( spns.Length + initSpn.SubSpawnerE[i].ToString().Length < 50 ) spnsNEWe += (string)initSpn.SubSpawnerE[i] + ", "; else { strNum = 1; spns1e += (string)initSpn.SubSpawnerE[i] + ", "; } } else spnsNEWe += (string)initSpn.SubSpawnerE[i]; } else if( strNum == 1 ) { if( i < initSpn.SubSpawnerE.Count - 1 ) { if( spns1e.Length + initSpn.SubSpawnerE[i].ToString().Length < 50 ) spns1e += (string)initSpn.SubSpawnerE[i] + ", "; else { strNum = 2; spns2e += (string)initSpn.SubSpawnerE[i] + ", "; } } else { if( spns1e.Length + initSpn.SubSpawnerE[i].ToString().Length < 50 ) spns1e += (string)initSpn.SubSpawnerE[i]; else { strNum = 3; spns2e += (string)initSpn.SubSpawnerE[i]; } } } else if( strNum == 2 ) { if( i < initSpn.SubSpawnerE.Count - 1 ) { if( spns2e.Length + initSpn.SubSpawnerE[i].ToString().Length < 50 ) spns2e += (string)initSpn.SubSpawnerE[i] + ", "; else { strNum = 3; spns3e += (string)initSpn.SubSpawnerE[i] + ", "; } } else { if( spns2e.Length + initSpn.SubSpawnerE[i].ToString().Length < 50 ) spns2e += (string)initSpn.SubSpawnerE[i]; else { strNum = 4; spns3e += (string)initSpn.SubSpawnerE[i]; } } } else if( strNum == 3 ) { if( i < initSpn.SubSpawnerE.Count - 1 ) spns3e += (string)initSpn.SubSpawnerE[i] + ", "; else spns3e += (string)initSpn.SubSpawnerE[i]; } } AddLabel( 275, 85, 52, spns ); AddLabel( 280, 110, 52, "[1]" ); AddLabel( 280, 180, 52, "[2]" ); AddLabel( 280, 250, 52, "[3]" ); AddLabel( 425, 110, 52, "[4]" ); AddLabel( 425, 180, 52, "[5]" ); AddLabel( 425, 250, 52, "[6]" ); AddHtml( 300, 110, 115, 65, spnsNEW, true, true ); AddHtml( 300, 180, 115, 65, spnsNEWa, true, true ); AddHtml( 300, 250, 115, 65, spnsNEWb, true, true ); AddHtml( 445, 110, 115, 65, spnsNEWc, true, true ); AddHtml( 445, 180, 115, 65, spnsNEWd, true, true ); AddHtml( 445, 250, 115, 65, spnsNEWe, true, true ); if( spns1 != "" ) AddLabel( 275, 105, 200, spns1 ); if( spns2 != "" ) AddLabel( 275, 125, 200, spns2 ); if( spns3 != "" ) AddLabel( 275, 145, 200, spns3 ); AddLabel( 320, 320, 52, "Go to Spawner" ); AddButton( 525, 320, 0x15E1, 0x15E5, 10005, GumpButtonType.Reply, 1 ); AddLabel( 320, 345, 52, "Delete Selected Spawner" ); AddButton( 525, 345, 0x15E1, 0x15E5, 10006, GumpButtonType.Reply, 0 ); AddLabel( 320, 370, 52, "Edit Spawns" ); AddButton( 525, 370, 0x15E1, 0x15E5, 10007, GumpButtonType.Reply, 0 ); } public List CreateArray( RelayInfo info, Mobile from ) { List creaturesName = new List(); for ( int i = 0; i < 13; i++ ) { TextRelay te = info.GetTextEntry( i ); if ( te != null ) { string str = te.Text; if ( str.Length > 0 ) { str = str.Trim(); Type type = SpawnerType.GetType( str ); if ( type != null ) creaturesName.Add( str ); else AddLabel( 70, 230, 39, "Invalid Search String" ); } } } return creaturesName; } public override void OnResponse( NetState state, RelayInfo info ) { Mobile from = state.Mobile; int buttonNum = 0; ArrayList currentList = new ArrayList( tempList ); int page = m_page; if( info.ButtonID > 0 && info.ButtonID < 10000 ) buttonNum = 1; else buttonNum = info.ButtonID; switch( buttonNum ) { case 0: { //Close break; } case 1: { selSpawner = currentList[ info.ButtonID - 1 ] as Item; SpawnEditor_OnCommand( from, page, currentList, 1, selSpawner ); break; } case 10000: { if( m_page * 10 < currentList.Count ) { page = m_page += 1; SpawnEditor_OnCommand( from, page, currentList ); } break; } case 10001: { if( m_page != 0 ) { page = m_page -= 1; SpawnEditor_OnCommand( from, page, currentList ); } break; } case 10002: { //Close break; } case 10003: // Filter to current region only { FilterByRegion( from, tempList, from.Region, from.Map, page ); break; } case 10004: // Filter by Distance { TextRelay oDis = info.GetTextEntry( 0 ); string sDis = ( oDis == null ? "" : oDis.Text.Trim() ); if( sDis != "" ) { try { int distance = Convert.ToInt32( sDis ); FilterByDistance( tempList, from, distance, page ); } catch { from.SendMessage( "Distance must be a number" ); SpawnEditor_OnCommand( from, page, currentList ); } } else { from.SendMessage( "You must specify a distance" ); SpawnEditor_OnCommand( from, page, currentList ); } break; } case 10005: // Go to Spawner { from.Location = new Point3D( selSpawner.X, selSpawner.Y, selSpawner.Z ); SpawnEditor_OnCommand( from, page, currentList, 1, selSpawner ); break; } case 10006: // Delete Selected Spawner { selSpawner.Delete(); SpawnEditor_OnCommand( from ); break; } case 10007: // Edit Spawns (Premium Sapwner Gump) { from.SendGump( new PremiumSpawnerGump( selSpawner as PremiumSpawner ) ); SpawnEditor_OnCommand( from, page, currentList, 1, selSpawner ); break; } case 10008: // Refresh button { SpawnEditor_OnCommand( from ); break; } case 10009: // Search Spawners by Creature { TextRelay oSearch = info.GetTextEntry( 1 ); string sSearch = ( oSearch == null ? null : oSearch.Text.Trim() ); SearchByName( tempList, from, sSearch, page ); break; } case 10010: // Search Spawners by SpawnID { TextRelay oID = info.GetTextEntry( 2 ); string sID = ( oID == null ? "" : oID.Text.Trim() ); if( sID != "" ) { try { int SearchID = Convert.ToInt32( sID ); SearchByID( tempList, from, SearchID, page ); } catch { from.SendMessage( "SpawnID must be a number" ); SpawnEditor_OnCommand( from, page, currentList ); } } else { from.SendMessage( "You must specify a SpawnID" ); SpawnEditor_OnCommand( from, page, currentList ); } break; } } } public static void FilterByRegion( Mobile from, ArrayList facetList, Region regr, Map regmap, int page ) { ArrayList filregList = new ArrayList(); foreach( Item regItem in facetList ) { Point2D p2 = new Point2D( regItem.X, regItem.Y ); Point3D p = new Point3D( p2, regItem.Z ); if( Region.Find( p, regmap ) == regr ) filregList.Add( regItem ); } from.SendGump( new SpawnEditorGump( from, 0, filregList, 0, null ) ); } public static void FilterByDistance( ArrayList currentList, Mobile m, int dis, int page ) { ArrayList fildisList = new ArrayList(); for( int z = 0; z < currentList.Count; z ++ ) { Item disItem = currentList[z] as Item; if( disItem.X >= m.X - dis && disItem.X <= m.X + dis && disItem.Y >= m.Y - dis && disItem.Y <= m.Y + dis ) fildisList.Add( disItem ); } m.SendGump( new SpawnEditorGump( m, 0, fildisList, 0, null ) ); } public static void SearchByName( ArrayList currentList, Mobile from, string search, int page ) { ArrayList searchList = new ArrayList(); foreach( PremiumSpawner spn in currentList ) { foreach( string str in spn.CreaturesName ) { if( str.ToLower().IndexOf( search ) >= 0 ) searchList.Add( spn ); } foreach( string str in spn.SubSpawnerA ) { if( str.ToLower().IndexOf( search ) >= 0 ) searchList.Add( spn ); } foreach( string str in spn.SubSpawnerB ) { if( str.ToLower().IndexOf( search ) >= 0 ) searchList.Add( spn ); } foreach( string str in spn.SubSpawnerC ) { if( str.ToLower().IndexOf( search ) >= 0 ) searchList.Add( spn ); } foreach( string str in spn.SubSpawnerD ) { if( str.ToLower().IndexOf( search ) >= 0 ) searchList.Add( spn ); } foreach( string str in spn.SubSpawnerE ) { if( str.ToLower().IndexOf( search ) >= 0 ) searchList.Add( spn ); } } from.SendGump( new SpawnEditorGump( from, 0, searchList, 0, null ) ); } public static void SearchByID( ArrayList currentList, Mobile from, int SearchID, int page ) { ArrayList searchList = new ArrayList(); foreach( PremiumSpawner spn in currentList ) { if ( ((PremiumSpawner)spn).SpawnID == SearchID ) { searchList.Add( spn ); } } from.SendGump( new SpawnEditorGump( from, 0, searchList, 0, null ) ); } public void AddTextField( int x, int y, int width, int height, int index ) { AddBackground( x - 2, y - 2, width + 4, height + 4, 0x2486 ); AddTextEntry( x + 2, y + 2, width - 4, height - 4, 0, index, "" ); } } }