View Full Version: Timer encore un timer...

RunUO.FR Support > Probleme de script > Timer encore un timer...


Title: Timer encore un timer...
Description: 2 erreures quasiment identique ?


Dinoz - September 11, 2004 03:29 AM (GMT)
Je veux changer un peu le nightsight et pour cela je dois avoir un timer qui enlève la lightsource que j'ajoute en ayant caster le sort. Je recois toujours 2 erreurs que je n'arrive pas a comprendre. Quelqu'un saurait m'aider ça serait vraiment apprécier.

Erreur:
QUOTE

- Error: Scripts\Spells\First\NightSight.cs: CS0120: (line 55, column 7) An obj
ect reference is required for the nonstatic field, method, or property 'Server.T
imer.Start()'
- Error: Scripts\Spells\First\NightSight.cs: CS0120: (line 76, column 69) An ob
ject reference is required for the nonstatic field, method, or property 'Server.
Spells.First.NightSightSpell.NsightTimer.temps'



NightSight.cs
CODE

using System;
using Server.Targeting;
using Server.Network;
using Server.Items;
using Server;

namespace Server.Spells.First
{
public class NightSightSpell : Spell
{
 private static SpellInfo m_Info = new SpellInfo(
   "Night Sight", "In Lor",
   SpellCircle.First,
   236,
   9031,
   Reagent.SulfurousAsh,
   Reagent.SpidersSilk
  );

 public NightSightSpell( Mobile caster, Item scroll ) : base( caster, scroll, m_Info )
 {
 }

 public override void OnCast()
 {
  Caster.Target = new NightSightTarget( this );
 }

 private class NightSightTarget : Target
 {
  private Spell m_Spell;

  public NightSightTarget( Spell spell ) : base( 10, false, TargetFlags.None )
  {
   m_Spell = spell;
  }

  protected override void OnTarget( Mobile from, object targeted )
  {
   if ( targeted is Mobile && m_Spell.CheckSequence() )
   {
    Mobile targ = (Mobile)targeted;
    SpellHelper.Turn( m_Spell.Caster, targ );

    Item nsight = targ.FindItemOnLayer( Layer.Unused_x9 );
     
    if ( nsight != null )
    {
     from.SendMessage( "{0} already have nightsight.", from == targ ? "You" : "They" );
         }
    else
    {
     targ.AddItem( new LightSource2() );
     
     NsightTimer.Start();
     
     targ.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
     targ.PlaySound( 0x1E3 );
    }
   }

   m_Spell.FinishSequence();
  }

  protected override void OnTargetFinish( Mobile from )
  {
   m_Spell.FinishSequence();
  }
 }
 
 private class NsightTimer : Timer
 {
      private Mobile m_player;
      private double temps;

      public NsightTimer( Mobile m ) : base( TimeSpan.FromSeconds( temps ) )
      {
          Priority = TimerPriority.OneMinute;

          m_player = m;
          temps = ( m_player.Skills[SkillName.Magery].Base / 5 );
      }

      protected override void OnTick()
      {
          if ( ( m_player != null ) && ( !m_player.Deleted ) )
          {
    Item nsight = m_player.FindItemOnLayer( Layer.Unused_x9 );
         if ( nsight != null )
         {
            nsight.Delete();
         }
          }        
          else Stop();
      }
 }
}
}

slade15 - September 11, 2004 09:14 AM (GMT)
cela devrai regler tes error

CODE

using System;
using Server.Targeting;
using Server.Network;
using Server.Items;
using Server;

namespace Server.Spells.First
{
public class NightSightSpell : Spell
{
private static SpellInfo m_Info = new SpellInfo(
  "Night Sight", "In Lor",
  SpellCircle.First,
  236,
  9031,
  Reagent.SulfurousAsh,
  Reagent.SpidersSilk
 );

public NightSightSpell( Mobile caster, Item scroll ) : base( caster, scroll, m_Info )
{
}

public override void OnCast()
{
 Caster.Target = new NightSightTarget( this );
}

private class NightSightTarget : Target
{
 private Spell m_Spell;

 public NightSightTarget( Spell spell ) : base( 10, false, TargetFlags.None )
 {
  m_Spell = spell;
 }

 protected override void OnTarget( Mobile from, object targeted )
 {
  if ( targeted is Mobile && m_Spell.CheckSequence() )
  {
   Mobile targ = (Mobile)targeted;
   SpellHelper.Turn( m_Spell.Caster, targ );

   Item nsight = targ.FindItemOnLayer( Layer.Unused_x9 );
   
   if ( nsight != null )
   {
    from.SendMessage( "{0} already have nightsight.", from == targ ? "You" : "They" );
        }
   else
   {
    targ.AddItem( new LightSource2() );
     
    NsightTimer time = new NsightTimer(from);
    time.Start();
   
    targ.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
    targ.PlaySound( 0x1E3 );
   }
  }

  m_Spell.FinishSequence();
 }

 protected override void OnTargetFinish( Mobile from )
 {
  m_Spell.FinishSequence();
 }
}

private class NsightTimer : Timer
{
     private Mobile m_player;
     private double temps;

     public NsightTimer( Mobile m ) : base( TimeSpan.FromSeconds( temps ) )
     {
         Priority = TimerPriority.OneMinute;

         m_player = m;
         temps = ( m_player.Skills[SkillName.Magery].Base / 5 );
     }

     protected override void OnTick()
     {
         if ( ( m_player != null ) && ( !m_player.Deleted ) )
         {
   Item nsight = m_player.FindItemOnLayer( Layer.Unused_x9 );
        if ( nsight != null )
        {
           nsight.Delete();
        }
         }        
         else Stop();
     }
}
}
}

Dinoz - September 11, 2004 03:30 PM (GMT)
Je reçois encore la 2e etteur qui fait référence à temps

La partie du code:
CODE

public NsightTimer( Mobile m ) : base( TimeSpan.FromSeconds( temps ) )
 {
  Priority = TimerPriority.OneMinute;

  m_player = m;
  temps = ( m_player.Skills[SkillName.Magery].Base / 5 );
 }


L'erreur qui me fourre tout:
QUOTE

- Error: Scripts\Spells\First\NightSight.cs: CS0120: (line 77, column 64) An ob
ject reference is required for the nonstatic field, method, or property 'Server.
Spells.First.NightSightSpell.NsightTimer.temps'



Voila j'espert que vous saurez comment arranger cela et une petite explication de l'erreur serait très apprécier :)

Didi - September 11, 2004 03:43 PM (GMT)
QUOTE (slade15 @ Sep 11 2004, 10:14 AM)
cela devrai regler tes error

CODE

using System;
using Server.Targeting;
using Server.Network;
using Server.Items;
using Server;

namespace Server.Spells.First
{
public class NightSightSpell : Spell
{
private static SpellInfo m_Info = new SpellInfo(
  "Night Sight", "In Lor",
  SpellCircle.First,
  236,
  9031,
  Reagent.SulfurousAsh,
  Reagent.SpidersSilk
 );

public NightSightSpell( Mobile caster, Item scroll ) : base( caster, scroll, m_Info )
{
}

public override void OnCast()
{
 Caster.Target = new NightSightTarget( this );
}

private class NightSightTarget : Target
{
 private Spell m_Spell;

 public NightSightTarget( Spell spell ) : base( 10, false, TargetFlags.None )
 {
  m_Spell = spell;
 }

 protected override void OnTarget( Mobile from, object targeted )
 {
  if ( targeted is Mobile && m_Spell.CheckSequence() )
  {
   Mobile targ = (Mobile)targeted;
   SpellHelper.Turn( m_Spell.Caster, targ );

   Item nsight = targ.FindItemOnLayer( Layer.Unused_x9 );
   
   if ( nsight != null )
   {
    from.SendMessage( "{0} already have nightsight.", from == targ ? "You" : "They" );
        }
   else
   {
    targ.AddItem( new LightSource2() );
     
    NsightTimer time = new NsightTimer(from);
    time.Start();
   
    targ.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
    targ.PlaySound( 0x1E3 );
   }
  }

  m_Spell.FinishSequence();
 }

 protected override void OnTargetFinish( Mobile from )
 {
  m_Spell.FinishSequence();
 }
}

private class NsightTimer : Timer
{
     private Mobile m_player;

     public NsightTimer( Mobile m ) : base( TimeSpan.FromSeconds( m_player.Skills[SkillName.Magery].Base / 5  ) )
     {
         Priority = TimerPriority.OneMinute;

         m_player = m;
     }

     protected override void OnTick()
     {
         if ( ( m_player != null ) && ( !m_player.Deleted ) )
         {
   Item nsight = m_player.FindItemOnLayer( Layer.Unused_x9 );
        if ( nsight != null )
        {
           nsight.Delete();
        }
         }        
         else Stop();
     }
}
}
}

comme sa plutot

Dinoz - September 11, 2004 05:16 PM (GMT)
Il y avait la même erreur avec le m_player mais j'ai réussi à l'arranger j'ai compris. La valeur temps était défini après qu'elle soit utiliser donc on pouvais pas lui définir une valeur et pareil pour m_player.

Didi - September 15, 2004 01:50 PM (GMT)
oui c'est bien sa, jétais distrait pour m_player:P




Hosted for free by InvisionFree