View Full Version: Spawneurs en masse

RunUO.FR Support > comment on fait ... > Spawneurs en masse


Title: Spawneurs en masse


Injall - May 31, 2004 08:58 PM (GMT)
J'ai utilisé le génialissime auto-spawner Nero'Disturn, me créant des spawners par tonnes à travers tout trammel.

Seulement je trouve que tous ces spawners sont réglés pour respawner beaucoup trop rapidement (MinDelay / MaxDelay), et j'aimerais modifier ces configurations pour avoir disons 25 minutes en MinDelay et 35 minutes en MaxDelay.

Je sais que je dois passer par le serialize/deserialize de l'item "Spawner", mais je ne sais pas du tout quoi mettre pour appliquer ces changements. :( quelqu'un saurait-il m'aider?

Didi - June 1, 2004 01:31 AM (GMT)
bah, dans le deserialize, a la toute fin ...
Variable = valeur;

Ex:
QUOTE
  public override void Deserialize( GenericReader reader )
  {
  base.Deserialize( reader );

  int version = reader.ReadInt();
// Tout le blablabla
MinDelay = 25;
  }


Le seul truc, c'est que la ce sera absolumenbt tout tes spawneur qui seront regler pareil.

Injall - June 1, 2004 07:14 AM (GMT)
oki, merci je pensais pas que ct si bête :D

Injall - June 1, 2004 08:22 AM (GMT)
:/ j'ai rajouté ca :

CODE

switch ( version )
  {
   case 3:
   {
    m_MinDelay = 25; // <<<<<<<<<<<<<<
    m_MaxDelay = 45; // <<<<<<<<<<<<<<
    m_SpawnRange = reader.ReadInt();
// ----------------------------------------
    m_SpawnID = reader.ReadInt();
// ----------------------------------------

    goto case 2;
   }

   case 2:
   {
    m_WayPoint = reader.ReadItem() as WayPoint;

    goto case 1;
   }

   case 1:
   {
    m_Group = reader.ReadBool();
   
    goto case 0;
   }

   case 0:
   {
    m_MinDelay = reader.ReadTimeSpan();
    m_MaxDelay = reader.ReadTimeSpan();
    m_Count = reader.ReadInt();
    m_Team = reader.ReadInt();
    m_HomeRange = reader.ReadInt();
    m_Running = reader.ReadBool();

    TimeSpan ts = TimeSpan.Zero;


il me fait l'erreur :
QUOTE

L 662 : Cannot implicitly convert type 'int' to 'System.TimeSpan'

Didi - June 1, 2004 04:32 PM (GMT)
Premierement javais préciser a la toute fin, pas au début :P

Ensuite, il faut y mettre tout le timespan. la ligne correspondant au timer.

Injall - June 1, 2004 06:35 PM (GMT)
QUOTE (Didi @ Jun 1 2004, 05:32 PM)
Ensuite, il faut y mettre tout le timespan. la ligne correspondant au timer.

:blink: :unsure: Tout le timespan tu veux dire quoi par là?

Injall - June 2, 2004 06:33 PM (GMT)
j'ai mit ca :
CODE

 public override void Deserialize( GenericReader reader )
 {
  base.Deserialize( reader );

  int version = reader.ReadInt();

  switch ( version )
  {
   case 3:
   {
    m_SpawnRange = reader.ReadInt();
// ----------------------------------------
    m_SpawnID = reader.ReadInt();
// ----------------------------------------

    goto case 2;
   }

   case 2:
   {
    m_WayPoint = reader.ReadItem() as WayPoint;

    goto case 1;
   }

   case 1:
   {
    m_Group = reader.ReadBool();
   
    goto case 0;
   }

   case 0:
   {
    m_MinDelay = reader.ReadTimeSpan();
    m_MaxDelay = reader.ReadTimeSpan();
    m_Count = reader.ReadInt();
    m_Team = reader.ReadInt();
    m_HomeRange = reader.ReadInt();
    m_Running = reader.ReadBool();

    TimeSpan ts = TimeSpan.Zero;

    if ( m_Running )
     ts = reader.ReadDeltaTime() - DateTime.Now;
   
    int size = reader.ReadInt();

    m_CreaturesName = new ArrayList( size );

    for ( int i = 0; i < size; ++i )
    {
     string typeName = reader.ReadString();

     m_CreaturesName.Add( typeName );

     if ( SpawnerType.GetType( typeName ) == null )
     {
      if ( m_WarnTimer == null )
       m_WarnTimer = new WarnTimer();

      m_WarnTimer.Add( Location, Map, typeName );
     }
    }

    int count = reader.ReadInt();

    m_Creatures = new ArrayList( count );

    for ( int i = 0; i < count; ++i )
    {
     IEntity e = World.FindEntity( reader.ReadInt() );

     if ( e != null )
      m_Creatures.Add( e );
    }

    if ( m_Running )
     DoTimer( ts );

    break;
   }
  }

  m_SpawnRange = ( version <= 2 ? m_HomeRange : m_SpawnRange ); //fix SpawnRange until first Deserialize of ver 3
  m_MinDelay = 25;
  m_MaxDelay = 45;
 }


mais ca ne marche pas tu veux dire quoi par mettre tous les timespan? :unsure:

Didi - June 2, 2004 10:00 PM (GMT)
bah, faudrait que je trouve un exemple, je connais pas la syntax par coeur.

la ligne qui contient le FromSeconds / minutes / hours

Injall - June 3, 2004 12:03 PM (GMT)
je vois pas :(

Didi - June 4, 2004 01:23 AM (GMT)
essai

CODE
m_MinDelay = TimeSpan.FromMinutes( 25.0 );
m_MaxDelay = TimeSpan.FromMinutes( 45.0 );




* Hosted for free by InvisionFree