1017 lines
27 KiB
C#
1017 lines
27 KiB
C#
/////////////////////////////////////
|
|
// 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<string> CreateArray( RelayInfo info, Mobile from )
|
|
{
|
|
List<string> creaturesName = new List<string>();
|
|
|
|
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, "" );
|
|
}
|
|
}
|
|
}
|