Full Version : Crash on server on its own
xmlspawner >>Scripting Support >>Crash on server on its own


<< Prev | Next >>

Erica- 04-01-2008
Ok today i was just doing stuff no one was on and then i saw console reboot meaning shard crashed on its own heres crash report can you tell me what to fix .

CODE
Exception:
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at System.Collections.ArrayList.get_Item(Int32 index)
  at Server.Engines.CannedEvil.ChampionSpawnController.Randomize(ArrayList list) in c:\Program Files\RunUO SVN 286 Mondain's Legacy\Scripts\Nerun's Distro v5.0.5\New\Commands\ChampionSpawnController\ChampionSpawnController.cs:line 419
  at Server.Engines.CannedEvil.ChampionSpawnController.Slice() in c:\Program Files\RunUO SVN 286 Mondain's Legacy\Scripts\Nerun's Distro v5.0.5\New\Commands\ChampionSpawnController\ChampionSpawnController.cs:line 444
  at Server.Engines.CannedEvil.RandomizeTimer.OnTick() in c:\Program Files\RunUO SVN 286 Mondain's Legacy\Scripts\Nerun's Distro v5.0.5\New\Commands\ChampionSpawnController\RandomizeTimer.cs:line 20
  at Server.Timer.Slice()
  at Server.Core.Main(String[] args)

Clients:
- Count: 0

Also here are those scripts .
CODE
using System;
using System.Collections;
using Server;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
using Server.Engines.CannedEvil;

namespace Server.Engines.CannedEvil
{
public class ChampionSpawnController : Item
{
 bool m_Active;

 private ArrayList m_AllSpawn;
 private ArrayList m_DungeonsSpawn;
 private ArrayList m_LostLandsSpawn;
 private ArrayList m_IlshenarSpawn;
 private ArrayList m_TokunoSpawn;

 //private int m_SpawnRange;
 private TimeSpan m_ExpireDelay;
 private TimeSpan m_RestartDelay;

 private TimeSpan m_RandomizeDelay;

 private int m_ActiveAltars;

 private RandomizeTimer m_Timer;

 public struct SpawnRecord
 {
  public int type,x,y,z;

  public SpawnRecord( int type, int x, int y, int z )  
  {
   this.type = type;
   this.x = x;
   this.y = y;
   this.z = z;
  }
 }

 private SpawnRecord[] m_Dungeons = new SpawnRecord[]
 {
  new SpawnRecord( (int)ChampionSpawnType.UnholyTerror, 5178, 708, 20 ),
  new SpawnRecord( (int)ChampionSpawnType.VerminHorde, 5558, 823, 65 ),
  new SpawnRecord( (int)ChampionSpawnType.ColdBlood, 5207, 3637, 20 ),
  new SpawnRecord( (int)ChampionSpawnType.Abyss, 5813, 1350, 0 ),
  new SpawnRecord( (int)ChampionSpawnType.Arachnid, 5188, 1607, 20 ),
 };

 private SpawnRecord[] m_LostLands = new SpawnRecord[]
 {
  //new SpawnRecord( 0xff, 5636, 2916, 37 ), // Desert
  //new SpawnRecord( 0xff, 5724, 3991, 42 ), // Tortoise
  //new SpawnRecord( 0xff, 5511, 2360, 40 ), // Ice West

  //new SpawnRecord( 0xff, 5549, 2640, 15 ), // Oasis
  //new SpawnRecord( 0xff, 6035, 2944, 52 ), // Terra Sanctum
  new SpawnRecord( (int)ChampionSpawnType.ForestLord, 5559, 3757, 21 ), // Lord Oaks

  //new SpawnRecord( 0xff, 5267, 3171, 104 ), // Marble
  //new SpawnRecord( 0xff, 5954, 3475, 25 ), // Hoppers Boog
  //new SpawnRecord( 0xff, 5982, 3882, 20 ), // Khaldun

  //new SpawnRecord( 0xff, 6038, 2400, 46 ), // Ice East
  //new SpawnRecord( 0xff, 5281, 3368, 51 ), // Damwin
  //new SpawnRecord( 0xff, 5207, 3637, 20 ), // City of Death
 };

 private SpawnRecord[] m_Ilshenar = new SpawnRecord[]
 {
  //new SpawnRecord( 0xff, 383, 329, -30 ), // Valor
  //new SpawnRecord( 0xff, 462, 926, -67 ), // Humility
  new SpawnRecord( (int)ChampionSpawnType.ForestLord, 2210, 1260, 22 ), // Twisted Weald
       new SpawnRecord( (int)ChampionSpawnType.ForestLord, 1644, 1103, 6 ), // Spirituality
           };

 private SpawnRecord[] m_Tokuno = new SpawnRecord[]
 {
  new SpawnRecord( (int)ChampionSpawnType.SleepingDragon, 947, 436, 28 ), // Isamu Jima
 };

 [CommandProperty( AccessLevel.GameMaster )]
 public bool Active
 {
  get
  {
   return m_Active;
  }
  set
  {
   if ( value )
    Start();
   else
    Stop();

   InvalidateProperties();
  }
 }

 [CommandProperty( AccessLevel.GameMaster )]
 public int ActiveAltars
 {
  get
  {
   return m_ActiveAltars;
  }
  set
  {
   m_ActiveAltars = value;
  }
 }

 /*[CommandProperty( AccessLevel.GameMaster )]
 public int SpawnRange
 {
  get
  {
   return m_SpawnRange;
  }
  set
  {
   m_SpawnRange = value;

   foreach( ChampionSpawn cs in m_AllSpawn )
   {
    cs.SpawnRange = m_SpawnRange;
   }
  }
 }*/

 [CommandProperty( AccessLevel.GameMaster )]
 public TimeSpan ExpireDelay
 {
  get
  {
   return m_ExpireDelay;
  }
  set
  {
   m_ExpireDelay = value;

   foreach( ChampionSpawn cs in m_AllSpawn )
   {
    cs.ExpireDelay = m_ExpireDelay;
   }
  }
 }

 [CommandProperty( AccessLevel.GameMaster )]
 public TimeSpan RestartDelay
 {
  get
  {
   return m_RestartDelay;
  }
  set
  {
   m_RestartDelay = value;

   foreach( ChampionSpawn cs in m_IlshenarSpawn )
   {
    cs.RestartDelay = m_RestartDelay;
   }

   foreach( ChampionSpawn cs in m_TokunoSpawn )
   {
    cs.RestartDelay = m_RestartDelay;
   }
  }
 }

 [CommandProperty( AccessLevel.GameMaster )]
 public TimeSpan RandomizeDelay
 {
  get
  {
   return m_RandomizeDelay;
  }
  set
  {
   m_RandomizeDelay = value;
  }
 }

 [Constructable]
 public ChampionSpawnController() : base( 0x1B7A )
 {
  if ( Check() )
  {
   World.Broadcast( 0x35, true, "Another champion spawn controller exist in the world !" );
   Delete();
   return;
  }

  Visible = false;
  Movable = false;
  Name = "champion spawn controller";

  m_Active = false;

  m_AllSpawn = new ArrayList();
  m_DungeonsSpawn = new ArrayList();
  m_LostLandsSpawn = new ArrayList();
  m_IlshenarSpawn = new ArrayList();
  m_TokunoSpawn = new ArrayList();

  m_ActiveAltars = 1;

  //m_SpawnRange = 24;
  m_ExpireDelay = TimeSpan.FromMinutes( 10.0 );
  m_RestartDelay = TimeSpan.FromMinutes( 5.0 );

  m_RandomizeDelay = TimeSpan.FromHours( 72.0 );
                     
  DeleteAll();
  Generate();

  World.Broadcast( 0x35, true, "Champion spawn generation complete. Old spawns removed." );
 }

 private bool Check()
 {
  foreach ( Item item in World.Items.Values )
  {
   if ( item is ChampionSpawnController && !item.Deleted && item != this )
     return true;
  }

  return false;
 }

 private void DeleteAll()
 {
  ArrayList list = new ArrayList();

  foreach ( Item item in World.Items.Values )
  {
   if ( item is ChampionSpawn && !item.Deleted )
     list.Add( item );
  }

  foreach ( ChampionSpawn cs in list )
  {
   cs.Delete();
  }
 }

 private ChampionSpawn CreateAltar( SpawnRecord r, Map m, bool restartdisable )
 {
  ChampionSpawn cs = new ChampionSpawn();

  Point3D loc = new Point3D( r.x, r.y, r.z );

  if ( r.type == 0xff )
  {
   cs.RandomizeType = true;

   switch ( Utility.Random( 5 ) )
   {
    case 0: cs.Type = ChampionSpawnType.VerminHorde; break;
    case 1: cs.Type = ChampionSpawnType.UnholyTerror; break;
    case 2: cs.Type = ChampionSpawnType.ColdBlood; break;
    case 3: cs.Type = ChampionSpawnType.Abyss; break;
    case 4: cs.Type = ChampionSpawnType.Arachnid; break;
   }
  }
  else
  {
   cs.RandomizeType = false;
   cs.Type = (ChampionSpawnType)r.type;
  }

// Prevent autorestart of felucca & t2a the spawns

  if ( restartdisable )
   cs.RestartDelay = TimeSpan.FromDays( 9999 );

  cs.MoveToWorld( loc, m );

  return cs;
 }

 private void Generate()
 {
  int i = 0;

  for ( i = 0; i<m_Dungeons.Length; i++ )
  {      
   ChampionSpawn cs = CreateAltar( m_Dungeons[i], Map.Felucca, true );

   m_AllSpawn.Add( cs );
   m_DungeonsSpawn.Add( cs );
  }

  for ( i = 0; i<m_LostLands.Length; i++ )
  {
   ChampionSpawn cs = CreateAltar( m_LostLands[i], Map.Felucca, true );

   m_AllSpawn.Add( cs );
   m_LostLandsSpawn.Add( cs );
  }

  for ( i = 0; i<m_Ilshenar.Length; i++ )
  {
   ChampionSpawn cs = CreateAltar( m_Ilshenar[i], Map.Ilshenar, false );
   
   m_IlshenarSpawn.Add( cs );
   m_AllSpawn.Add( cs  );
  }

  for ( i = 0; i<m_Tokuno.Length; i++ )
  {
   ChampionSpawn cs = CreateAltar( m_Tokuno[i], Map.Tokuno, false );
 
   m_TokunoSpawn.Add( cs );
   m_AllSpawn.Add( cs );
  }
 }

 public ChampionSpawnController( Serial serial ) : base( serial )
 {
 }

 public override void GetProperties( ObjectPropertyList list )
 {
  base.GetProperties( list );

  if ( m_Active )
  {
   list.Add( 1060742 ); // active
  }
  else
  {
   list.Add( 1060743 ); // inactive
  }
 }

 public override void OnDelete()
 {
  Stop();

  if ( m_AllSpawn != null )
  {
   foreach( ChampionSpawn cs in m_AllSpawn )
   {
    if ( !cs.Deleted ) cs.Delete();
   }
  }

  base.OnDelete();
 }

 public void Start()
 {
  if ( m_Active || Deleted ) return;

  m_Active = true;

  if (m_Timer == null)
  {
   m_Timer = new RandomizeTimer( this, m_RandomizeDelay );
  }

  Randomize( m_DungeonsSpawn );
  Randomize( m_LostLandsSpawn );

  foreach( ChampionSpawn cs in m_IlshenarSpawn )
  {
   if ( !cs.Deleted )
    cs.Active = true;
  }

  foreach( ChampionSpawn cs in m_TokunoSpawn )
  {
   if ( !cs.Deleted )
    cs.Active = true;
  }

  m_Timer.Start();
 }

 public void Stop()
 {
  if ( !m_Active || Deleted ) return;

  m_Active = false;

  if ( m_Timer != null ) m_Timer.Stop();

  foreach( ChampionSpawn cs in m_AllSpawn )
  {
   if ( !cs.Deleted && cs.Active )
   {
    cs.Active = false;
    //cs.IsValorUsed = false;
   }
  }
 }

 public void Randomize( ArrayList list )
 {
  foreach( ChampionSpawn cs in list )
  {
   if ( !cs.Deleted && cs.Active )
    cs.Active = false;
  }

  for ( int i=0; i<m_ActiveAltars; i++ )
  {
   int trynum = 0;

   while( trynum < 7 )
   {
    int index = Utility.Random( list.Count );

    if ( !((ChampionSpawn)list[index]).Active )
    {
     ((ChampionSpawn)list[index]).Active = true;
     break;
    }

    trynum++;
   }
  }
 }

 public void Slice()
 {
  if ( !m_Active || Deleted )
  {
   if ( m_Timer != null ) m_Timer.Stop();
   return;
  }

  foreach( ChampionSpawn cs in m_AllSpawn )
  {
   //cs.IsValorUsed = false;
  }

  Randomize( m_DungeonsSpawn );
  Randomize( m_LostLandsSpawn );

  m_Timer.Start();
 }

 public override void OnDoubleClick( Mobile from )
 {
  from.SendGump( new PropertiesGump( from, this ) );
 }

 public override void Serialize( GenericWriter writer )
 {
  base.Serialize( writer );
  writer.Write( (int) 0 ); // version

  writer.Write ( m_Active );

  writer.WriteItemList( m_AllSpawn );
  writer.WriteItemList( m_DungeonsSpawn );
  writer.WriteItemList( m_LostLandsSpawn );
  writer.WriteItemList( m_IlshenarSpawn );
  writer.WriteItemList( m_TokunoSpawn );

  writer.Write( m_RandomizeDelay );

  writer.Write( m_ActiveAltars );
 }

 public override void Deserialize( GenericReader reader )
 {
  base.Deserialize( reader );
  int version = reader.ReadInt();

  m_Active  = reader.ReadBool();

  m_AllSpawn = reader.ReadItemList();
  m_DungeonsSpawn = reader.ReadItemList();
  m_LostLandsSpawn = reader.ReadItemList();
  m_IlshenarSpawn = reader.ReadItemList();
  m_TokunoSpawn = reader.ReadItemList();

  m_RandomizeDelay = reader.ReadTimeSpan();

  m_ActiveAltars = reader.ReadInt();

  //m_SpawnRange = 24;
  m_ExpireDelay = TimeSpan.FromMinutes( 10.0 );
  m_RestartDelay = TimeSpan.FromMinutes( 5.0 );

  if ( m_Active )
  {
   m_Timer = new RandomizeTimer( this, m_RandomizeDelay );

   m_Timer.Start();
  }
 }
}
}



And heres the other one.

CODE
using System;
using System.Collections;
using Server;
using Server.Items;

namespace Server.Engines.CannedEvil
{
public class RandomizeTimer : Timer
{
 private ChampionSpawnController m_Controller;

 public RandomizeTimer( ChampionSpawnController controller, TimeSpan delay ) : base( delay )
 {
  m_Controller = controller;
  Priority = TimerPriority.FiveSeconds;
 }

 protected override void OnTick()
 {
  m_Controller.Slice();
 }
}
}

So can you tell me what i have to change Thanks.

Erica- 04-11-2008
I'll just remove this script i guess and add the champions by hand.