View Full Version: Pierre pour Arene

RunUO.FR Support > System > Pierre pour Arene


Title: Pierre pour Arene


Sna - July 1, 2003 02:20 PM (GMT)
bon ben tout est dans le titre
il suffit de definir le point de destination du player 1, 2, la map de destination, et les emplacements sur le podium :)
tous des points 3D sauf la map

euh j'ai fait ca d'une traite today, je vous garantis pas un bug-free mais une compilation correcte :)
je le teste ce soir

j'ai refait ce script because celui du forum runuo me balancait un overflow quelque part et j'aime pas debuger le code des autres :) deja la mien... :P
j'en ai aussi profite pour rajouter 2 ou 3 choses, comme le fait d'etre rez a la fin du combat, recuperer son corps et son cheval (et tous les autres followers mais ca fo pas le dire :D )
CODE

using System;
using Server.Mobiles;
using Server.Gumps;
using Server.Network;
using Server.Targeting;
using System.Collections;

namespace Server.Items
{
public class ArenaStone : Item
{
 private Map m_MapFrom;
 private Map m_MapTo;
 private bool m_Active;
 private Point3D m_Player1Dest;
 private Point3D m_Player2Dest;
 private Point3D m_ExitWinner;
 private Point3D m_ExitLooser;
 private int m_Gold;
 private PlayerMobile m_Player1;
 private PlayerMobile m_Player2;
 
 private int m_1Kills = 0;
 private int m_1Fame = 0;
 private int m_1Karma = 0;
 private int m_1ShortMurders = 0;
 private int m_2Kills = 0;
 private int m_2Fame = 0;
 private int m_2Karma = 0;
 private int m_2ShortMurders = 0;
 
 [CommandProperty( AccessLevel.GameMaster )]
 public bool Active
 {
  get { return m_Active; }
  set { m_Active = value; InvalidateProperties(); }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public Map MapFrom
 {
  get { return m_MapFrom; }
  set { m_MapFrom = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public Map MapTo
 {
  get { return m_MapTo; }
  set { m_MapTo = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public int Gold
 {
  get { return m_Gold; }
  set { m_Gold = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public Point3D Player1Dest
 {
  get { return m_Player1Dest; }
  set { m_Player1Dest = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public Point3D Player2Dest
 {
  get { return m_Player2Dest; }
  set { m_Player2Dest = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public Point3D ExitWinner
 {
  get { return m_ExitWinner; }
  set { m_ExitWinner = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public Point3D ExitLooser
 {
  get { return m_ExitLooser; }
  set { m_ExitLooser = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public PlayerMobile Player1
 {
  get { return m_Player1; }
  set { m_Player1 = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public PlayerMobile Player2
 {
  get { return m_Player2; }
  set { m_Player2 = value; }
 }

 [CommandProperty( AccessLevel.GameMaster )]
 public int LongKills1
 {
  get { return m_1Kills; }
  set { m_1Kills = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public int LongKills2
 {
  get { return m_2Kills; }
  set { m_2Kills = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public int ShortKills1
 {
  get { return m_1ShortMurders; }
  set { m_1ShortMurders = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public int ShortKills2
 {
  get { return m_2ShortMurders; }
  set { m_2ShortMurders = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public int Karma1
 {
  get { return m_1Karma; }
  set { m_1Karma = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public int Karma2
 {
  get { return m_2Karma; }
  set { m_2Karma = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public int Fame1
 {
  get { return m_1Fame; }
  set { m_1Fame = value; }
 }
 [CommandProperty( AccessLevel.GameMaster )]
 public int Fame2
 {
  get { return m_2Fame; }
  set { m_2Fame = value; }
 }



 [Constructable]
 public ArenaStone() : base( 0xED4 )
 {
  Movable = false;
  Hue = 0;
  Name = "a challenge stone";
  Active = false;
 }
 public override void OnDoubleClick( Mobile from )
 {
  if (from is PlayerMobile)
  {
   //this.Active = false;
   if ( !from.InRange( GetWorldLocation(), 3 ) )
   {
    from.SendLocalizedMessage( 500446 ); // That is too far away.
    //this.Active = true;
   }
 
   else if ( this.m_Active == false )
   {
    from.SendMessage( "Cette pierre est en court d'utilisation !" );
    //this.Active = true;
   }
   else if (( this.MapTo == null ) || ( this.Player1Dest == Point3D.Zero ) || ( this.Player2Dest == Point3D.Zero )
    || (this.ExitWinner == Point3D.Zero ) || (this.ExitLooser == Point3D.Zero ))
   {
    from.SendMessage( "Pierre mal configurée , appellez un GM pour corriger cela !");
    //this.Active = true;
   }
   else
   {
    this.Active = false;
    from.SendGump( new ArenaGump( from, this ) );
   }
  }
 }
 public ArenaStone( Serial serial ) : base( serial )
 {
 }

 public override void Serialize( GenericWriter writer )
 {
  base.Serialize( writer );

  writer.Write( (int) 0 );// version
 
  writer.Write( m_MapTo );
  writer.Write( m_Active );
  writer.Write( m_Player1Dest );
  writer.Write( m_Player2Dest );
  writer.Write( m_ExitWinner );
  writer.Write( m_ExitLooser );
 }
 public override void Deserialize( GenericReader reader )
 {
  base.Deserialize( reader );

  int version = reader.ReadInt();
 
  switch ( version )
  {
   case 0:
   {
    m_MapTo = reader.ReadMap();
    m_Active = reader.ReadBool();
    m_Player1Dest = reader.ReadPoint3D();
    m_Player2Dest = reader.ReadPoint3D();
    m_ExitWinner = reader.ReadPoint3D();
    m_ExitLooser = reader.ReadPoint3D();
    break;
   }
  }
 }
 private class ArenaGump : Gump
 {
  private Mobile m_Player1;
  private ArenaStone m_Item;
 
  public ArenaGump( Mobile from, ArenaStone item ) : base( 10, 30 )  
  {
   m_Player1 = from;
   m_Item = item;

   this.Closable = false;

   AddBackground( 200, 100, 340, 250, 2600 );

   AddLabel( 285, 125, 0x384, string.Format("Provoquer en Duel votre opposant"));
         
   AddButton( 250, 310, 0xF3, 0xF2, 0, GumpButtonType.Reply, 0 );
   
   AddButton( 260, 165, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0 );
   AddLabel( 295, 168, 0x384, "1000 gold");

   AddButton( 380, 165, 0xFA5, 0xFA7, 2, GumpButtonType.Reply, 0 );
   AddLabel( 415, 168, 0x384, "2000 gold");

   AddButton( 260, 215, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0 );
   AddLabel( 295, 218, 0x384, "3000 gold");

   AddButton( 380, 215, 0xFA5, 0xFA7, 4, GumpButtonType.Reply, 0 );
   AddLabel( 415, 218, 0x384, "5000 gold");

   AddButton( 260, 265, 0xFA5, 0xFA7, 5, GumpButtonType.Reply, 0 );
   AddLabel( 295, 268, 0x384, "10000 gold");

  }
  public override void OnResponse( NetState state, RelayInfo info ) //Function for GumpButtonType.Reply Buttons
  {
   Mobile from = state.Mobile;
   switch ( info.ButtonID )
   {
    case 6:
    {
     if( from is PlayerMobile )
     {
      PlayerMobile m = ( PlayerMobile ) from;
      Container bp = from.Backpack;
      if (bp != null)
      {
       int gold = 0;
       gold = bp.GetAmount(typeof(Gold));
       
       if ( gold >= m_Item.Gold )
       {
        m.Hidden = false;
        m_Item.Player1 = m;
        m.Target = new ArenaTarget( m_Player1, m_Item );
        m.SendMessage( "Choisissez votre Opposant s'il vous plait" );
        break;
       }
       else
       {
        m.SendMessage( "Vous n'avez pas assez d'or" );
        m.SendGump( new ArenaGump( from, m_Item ) );
        break;
       }
      }
     }
     else
     {
      from.SendMessage( "Abandon!!");
      m_Item.Active = true;
      break;
     }
     break;
    }
    case 5:
    {
     m_Item.Gold = 10000;
     goto case 6;
    }
     
    case 4:
    {
     m_Item.Gold = 5000;
     goto case 6;
    }
   
    case 3:
    {
     m_Item.Gold = 3000;
     goto case 6;
    }
   
    case 2:
    {
     m_Item.Gold = 2000;
     goto case 6;
    }
   
    case 1:
    {
     m_Item.Gold = 1000;
     goto case 6;
    }
   
    case 0:
    {
     m_Item.Active = true;
     from.SendMessage( "Fermé !!" );
     break;
    }
   }
  }
 }
 private class ArenaTarget : Target
 {
  private Mobile m_Player1;
  private ArenaStone m_Item;

  public ArenaTarget( Mobile from, ArenaStone item ) :  base ( 6, false, TargetFlags.None )
  {
   m_Player1 = from;
   m_Item = item;
  }
   
  protected override void OnTargetCancel (Mobile from, TargetCancelType Canceled )
  {
   from.SendMessage(43, "Duel abandonné!" );
   m_Item.Active = true;
   m_Item.Player1 = null;
  }

  protected override void OnCantSeeTarget (Mobile from, object target )
  {
   from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
   m_Item.Active = true;
   m_Item.Player1 = null;
  }

  protected override void OnNonlocalTarget (Mobile from, object target )
  {
   from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
   m_Item.Active = true;
   m_Item.Player1 = null;
  }

  protected override void OnTargetNotAccessible (Mobile from, object target )
  {
   from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
   m_Item.Active = true;
   m_Item.Player1 = null;
  }

  protected override void OnTargetOutOfLOS (Mobile from, object target )
  {
   from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
   m_Item.Active = true;
   m_Item.Player1 = null;
  }

  protected override void OnTargetOutOfRange (Mobile from, object target )
  {
   from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
   m_Item.Active = true;
   m_Item.Player1 = null;
  }

  protected override void OnTargetUntargetable (Mobile from, object target )
  {
   from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
   m_Item.Active = true;
   m_Item.Player1 = null;
  }

  protected override void OnTargetDeleted (Mobile from, object target )
  {
   from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
   m_Item.Active = true;
   m_Item.Player1 = null;
  }
  protected override void OnTarget( Mobile from, object target )
  {
   if( target is Item )
   {
    from.SendMessage( "Vous ne pouvez choisir cela !" );
    from.Target = new ArenaTarget( m_Player1, m_Item );
   }
   if ( target is PlayerMobile )
   {
    PlayerMobile m = (PlayerMobile) target;
    if ( !m.InRange ( m_Item, 3 ) )
    {
     from.SendMessage( "Ce joueur est trop loin.  Duel abandonné.." );
     m_Item.Player1 = null;
     m_Item.Active = true;
    }
    else if ( !from.CheckAlive() || !m.CheckAlive() )
    {
     if ( !from.CheckAlive() )
     {
      from.SendMessage( "Vous devez être vivant pour defier quelqu'un.  Duel abandonné." );
      m_Item.Player1 = null;
      m_Item.Active = true;
     }
     if ( !m.CheckAlive() )
     {
      from.SendMessage( "Votre opposant doit être en vie pour le défier.  Duel abandonné" );
      m_Item.Player1 = null;
      m_Item.Active = true;
     }  
    }
    else
    {
     m.SendGump( new ArenaAcceptGump( m, m_Player1, m_Item ) );
    }
   }
  }
 }
 private class ArenaAcceptGump : Gump
 {
  private Mobile m_Player2;
  private Mobile m_Player1;
  private ArenaStone m_Item;

  public ArenaAcceptGump( Mobile opponent, Mobile challenger, ArenaStone item ) : base( 20, 30 )
  {
   m_Player2 = opponent;
   m_Player1 = challenger;
   m_Item = item;
   this.Closable = false;

   AddBackground( 200, 200, 300, 150, 2600 );

   AddLabel( 260, 220, 0, string.Format("La mise est de {0} pièce d'or", m_Item.Gold) );

   AddButton( 320, 270, 0xF9, 0xF8, 1, GumpButtonType.Reply, 0 );

   AddButton( 320, 300, 0xF3, 0xF2, 2, GumpButtonType.Reply, 0 );

  }
  public override void OnResponse( NetState state, RelayInfo info ) //Function for GumpButtonType.Reply Buttons
  {
   Mobile from = state.Mobile;

   switch ( info.ButtonID )
   {
    case 2:
    {
     from.SendMessage( "Le duel est abandonné." );
     m_Player1.SendMessage( "Le duel est abandonné." );
     m_Item.Player1 = null;
     m_Item.Active = true;
     break;
    }
    case 1:
    {
     PlayerMobile m = (PlayerMobile)from;
     Container bp = m.Backpack;
     if (bp != null)
     {
      int gold = 0;
      gold = bp.GetAmount(typeof(Gold));
      if ( gold >= m_Item.Gold )
      {
       m.Hidden = false;
       m_Item.Player2 = m;
       m_Item.MapFrom = m_Item.Player2.Map;
       m_Player1.SendMessage( "Le défi est acepté. Que le combat commence!" );
       m_Player2.SendMessage( "Le défi est acepté. Que le combat commence!" );
       bp.ConsumeUpTo( typeof( Gold ), m_Item.Gold );
       bp = m_Player1.Backpack;
       bp.ConsumeUpTo( typeof( Gold ), m_Item.Gold );
       m_Item.ShortKills1 = m_Item.Player1.ShortTermMurders;
       m_Item.ShortKills2 = m_Item.Player2.ShortTermMurders;
       m_Item.LongKills1 = m_Item.Player1.Kills;
       m_Item.LongKills2 = m_Item.Player2.Kills;
       m_Item.Karma1 = m_Item.Player1.Karma;
       m_Item.Karma2 = m_Item.Player2.Karma;
       m_Item.Fame1 = m_Item.Player1.Fame;
       m_Item.Fame2 = m_Item.Player2.Fame;
       m_Player1.Map = m_Item.MapTo;
       m_Player2.Map = m_Item.MapTo;
       m_Player1.Location = m_Item.Player1Dest;
       m_Player2.Location = m_Item.Player2Dest;
       m_Item.Player1.Kills = 10;
       m_Item.Player2.Kills = 10;
       InternalTimer timer = new InternalTimer( m_Item );
       timer.Start();
       break;
      }
      else
      {
       m.SendMessage( "Vous n'avez pas assez d'or" );
       m_Item.Player1 = null;
       m_Item.Active = true;
       break;
      }
     }
     break;
    }
   }
  }
 }
 private class InternalTimer : Timer
 {
  private int m_Seconds = 3600;
  private int m_Count;
  private ArenaStone m_Item;

  public InternalTimer( ArenaStone item ) : base( TimeSpan.FromSeconds( 1.0 ), TimeSpan.FromSeconds( 1.0 ))
  {
   m_Item = item;
  }
  protected override void OnTick()
  {
   m_Seconds--;
   m_Count = (int)(m_Seconds / 60);
   bool finish = false;
   if ( !m_Item.Player1.Alive )
   {
    if (!m_Item.Player2.Alive) //Match Nul 2 morts
    {
     Stop();

     Mobile m = (Mobile)m_Item.Player1;
     m.PlaySound( 0x214 );
     m.FixedEffect( 0x376A, 10, 16 );
     m.Resurrect();
     Corpse corpse = null;
     IPooledEnumerable eable = m.Map.GetItemsInRange( m.Location, 10 );
     foreach ( Item item in eable )
     {
      if ( item is Corpse )
      {
       Corpse tempCorpse = item as Corpse;
       if(tempCorpse.Owner == m)
       {
        corpse = tempCorpse;
        break;
       }
      }
     }
     eable.Free();
     if( corpse != null)
     {
      foreach ( Item equipment in corpse.EquipItems )
       m.EquipItem( equipment );
      ArrayList list = new ArrayList( corpse.Items );
      foreach ( Item backpackItem in list )
       m.AddToBackpack( backpackItem );
      corpse.Delete();
     }
     m = (Mobile)m_Item.Player2;
     m.PlaySound( 0x214 );
     m.FixedEffect( 0x376A, 10, 16 );
     m.Resurrect();
     corpse = null;
     eable = m.Map.GetItemsInRange( m.Location, 10 );
     foreach ( Item item in eable )
     {
      if ( item is Corpse )
      {
       Corpse tempCorpse = item as Corpse;
       if(tempCorpse.Owner == m)
       {
        corpse = tempCorpse;
        break;
       }
      }
     }
     eable.Free();
     if( corpse != null)
     {
      foreach ( Item equipment in corpse.EquipItems )
       m.EquipItem( equipment );
      ArrayList list = new ArrayList( corpse.Items );
      foreach ( Item backpackItem in list )
       m.AddToBackpack( backpackItem );
      corpse.Delete();
     }
     m_Item.Player1.SendMessage( "Vous avez tué votre opposant mais etes également mort. Le duel est fini et l'or restitué" );
     m_Item.Player2.SendMessage( "Vous avez tué votre opposant mais etes également mort. Le duel est fini et l'or restitué" );
     Gold gold1 = new Gold( m_Item.Gold );
     Gold gold2 = new Gold( m_Item.Gold );
     m_Item.Player1.AddToBackpack( gold1 );
     m_Item.Player2.AddToBackpack( gold2 );
     m_Item.Player1.Location = m_Item.ExitWinner;
     m_Item.Player2.Location = m_Item.ExitLooser;
     finish = true;
    }
    else    //Gain Player 2
    {
     Stop();
     Mobile m = (Mobile)m_Item.Player1;
     m.PlaySound( 0x214 );
     m.FixedEffect( 0x376A, 10, 16 );
     m.Resurrect();
     Corpse corpse = null;
     IPooledEnumerable eable = m.Map.GetItemsInRange( m.Location, 10 );
     foreach ( Item item in eable )
     {
      if ( item is Corpse )
      {
       Corpse tempCorpse = item as Corpse;
       if(tempCorpse.Owner == m)
       {
        corpse = tempCorpse;
        break;
       }
      }
     }
     eable.Free();
     if( corpse != null)
     {
      foreach ( Item equipment in corpse.EquipItems )
       m.EquipItem( equipment );
      ArrayList list = new ArrayList( corpse.Items );
      foreach ( Item backpackItem in list )
       m.AddToBackpack( backpackItem );
      corpse.Delete();
     }
     m_Item.Player1.SendMessage( "Vous avez Perdu" );
     m_Item.Player2.SendMessage( "Vous gagnez le combat et {0} piéces d'or", (m_Item.Gold*2) );
     //BankCheck gold1 = new BankCheck( m_Item.Gold );
     BankCheck gold2 = new BankCheck( (m_Item.Gold*2) );
     //m_Item.Player1.AddToBackpack( gold1 );
     m_Item.Player2.AddToBackpack( gold2 );
     m_Item.Player2.Location = m_Item.ExitWinner;
     m_Item.Player1.Location = m_Item.ExitLooser;
     finish = true;
    }
   }
   else
   {
    if (!m_Item.Player2.Alive) //Gain Player 1
    {
     Stop();
     Mobile m = (Mobile)m_Item.Player2;
     m.PlaySound( 0x214 );
     m.FixedEffect( 0x376A, 10, 16 );
     m.Resurrect();
     Corpse corpse = null;
     IPooledEnumerable eable = m.Map.GetItemsInRange( m.Location, 10 );
     foreach ( Item item in eable )
     {
      if ( item is Corpse )
      {
       Corpse tempCorpse = item as Corpse;
       if(tempCorpse.Owner == m)
       {
        corpse = tempCorpse;
        break;
       }
      }
     }
     eable.Free();
     if( corpse != null)
     {
      foreach ( Item equipment in corpse.EquipItems )
       m.EquipItem( equipment );
      ArrayList list = new ArrayList( corpse.Items );
      foreach ( Item backpackItem in list )
       m.AddToBackpack( backpackItem );
      corpse.Delete();
     }
     m_Item.Player2.SendMessage( "Vous avez Perdu" );
     m_Item.Player1.SendMessage( "Vous gagnez le combat et {0} piéces d'or", (m_Item.Gold*2) );
     BankCheck gold1 = new BankCheck( (m_Item.Gold*2) );
     //BankCheck gold2 = new BankCheck( m_Item.Gold );
     m_Item.Player1.AddToBackpack( gold1 );
     //m_Item.Player2.AddToBackpack( gold2 );
     m_Item.Player2.Location = m_Item.ExitWinner;
     m_Item.Player1.Location = m_Item.ExitLooser;
     finish = true;
    }
   }
   if ( finish == false )
   {
    if ( (m_Count == ( 30 )) || (m_Count == ( 20 )) ||(m_Count == ( 15 )) || ((m_Count <= ( 10 )) && (m_Count >= (2))))
    {
     m_Item.Player1.SendMessage( "Le duel se termine dans {0} minutes", m_Count );
     m_Item.Player2.SendMessage( "Le duel se termine dans {0} minutes", m_Count );
    }
    if ( m_Count == ( 1 ))
    {
     m_Item.Player1.SendMessage( "Il reste {0} minutes", m_Count );
     m_Item.Player2.SendMessage( "Il reste {0} minutes", m_Count );
    }
    if ( m_Count == 0 && m_Seconds == 0 ) //Match Nul
    {
     Stop();
     m_Item.Player1.SendMessage( "Vous n'avez pas réussi a tuer votre adversaire le défi est annulé, l'or restitué" );
     m_Item.Player2.SendMessage( "Vous n'avez pas réussi a tuer votre adversaire le défi est annulé, l'or restitué" );
     m_Item.Player1.Karma = m_Item.Karma1;
     m_Item.Player2.Karma = m_Item.Karma2;
     m_Item.Player1.Fame = m_Item.Fame1;
     m_Item.Player2.Fame = m_Item.Fame2;
     m_Item.Player1.ShortTermMurders = m_Item.ShortKills1;
     m_Item.Player2.ShortTermMurders = m_Item.ShortKills2;
     m_Item.Player1.Kills = m_Item.LongKills1;
     m_Item.Player2.Kills = m_Item.LongKills2;
     Gold gold1 = new Gold( m_Item.Gold );
     Gold gold2 = new Gold( m_Item.Gold );
     m_Item.Player1.AddToBackpack( gold1 );
     m_Item.Player2.AddToBackpack( gold2 );
     m_Item.Player1.Map = m_Item.MapFrom;
     m_Item.Player2.Map = m_Item.MapFrom;
     m_Item.Player1.Location = m_Item.ExitWinner;
     m_Item.Player2.Location = m_Item.ExitLooser;
     Server.Scripts.Commands.CommandHandlers.GetFollowers_OnTarget( m_Item.Player1, m_Item.Player1 );
     Server.Scripts.Commands.CommandHandlers.GetFollowers_OnTarget( m_Item.Player2, m_Item.Player2 );
     m_Item.Player1 = null;
     m_Item.Player2 = null;
     m_Item.Karma1 = 0;
     m_Item.Karma2 = 0;
     m_Item.Fame1 = 0;
     m_Item.Fame2 = 0;
     m_Item.ShortKills1 = 0;
     m_Item.ShortKills2 = 0;
     m_Item.LongKills1 = 0;
     m_Item.LongKills2 = 0;
     m_Item.Gold = 0;
     m_Item.MapFrom = null;
     m_Item.Active = true;
    }
   }
   else
   {
    m_Item.Player1.Karma = m_Item.Karma1;
    m_Item.Player2.Karma = m_Item.Karma2;
    m_Item.Player1.Fame = m_Item.Fame1;
    m_Item.Player2.Fame = m_Item.Fame2;
    m_Item.Player1.ShortTermMurders = m_Item.ShortKills1;
    m_Item.Player2.ShortTermMurders = m_Item.ShortKills2;
    m_Item.Player1.Kills = m_Item.LongKills1;
    m_Item.Player2.Kills = m_Item.LongKills2;
    m_Item.Player1.Map = m_Item.MapFrom;
    m_Item.Player2.Map = m_Item.MapFrom;
    Server.Scripts.Commands.CommandHandlers.GetFollowers_OnTarget( m_Item.Player1, m_Item.Player1 );
    Server.Scripts.Commands.CommandHandlers.GetFollowers_OnTarget( m_Item.Player2, m_Item.Player2 );
    m_Item.Player1 = null;
    m_Item.Player2 = null;
    m_Item.Karma1 = 0;
    m_Item.Karma2 = 0;
    m_Item.Fame1 = 0;
    m_Item.Fame2 = 0;
    m_Item.ShortKills1 = 0;
    m_Item.ShortKills2 = 0;
    m_Item.LongKills1 = 0;
    m_Item.LongKills2 = 0;
    m_Item.Gold = 0;
    m_Item.MapFrom = null;
    m_Item.Active = true;
   }
  }
 }
}
}
 


ah oui j'ai tout fait en une fois avec des classes internes c plus propre je trouve, mais c personnel :P

crystal - July 1, 2003 03:14 PM (GMT)
mais pourquoi tu la fait en anglais ?

je vais le traduire :P

crystal - July 1, 2003 03:59 PM (GMT)
Françisé et corrigé .

CODE
using System;
using Server.Mobiles;
using Server.Gumps;
using Server.Network;
using Server.Targeting;
using System.Collections;

namespace Server.Items
{
public class ArenaStone : Item
{
private Map m_MapFrom;
private Map m_MapTo;
private bool m_Active;
private Point3D m_Player1Dest;
private Point3D m_Player2Dest;
private Point3D m_ExitWinner;
private Point3D m_ExitLooser;
private int m_Gold;
private PlayerMobile m_Player1;
private PlayerMobile m_Player2;

private int m_1Kills = 0;
private int m_1Fame = 0;
private int m_1Karma = 0;
private int m_1ShortMurders = 0;
private int m_2Kills = 0;
private int m_2Fame = 0;
private int m_2Karma = 0;
private int m_2ShortMurders = 0;

[CommandProperty( AccessLevel.GameMaster )]
public bool Active
{
 get { return m_Active; }
 set { m_Active = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public Map MapFrom
{
 get { return m_MapFrom; }
 set { m_MapFrom = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Map MapTo
{
 get { return m_MapTo; }
 set { m_MapTo = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int Gold
{
 get { return m_Gold; }
 set { m_Gold = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D Player1Dest
{
 get { return m_Player1Dest; }
 set { m_Player1Dest = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D Player2Dest
{
 get { return m_Player2Dest; }
 set { m_Player2Dest = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D ExitWinner
{
 get { return m_ExitWinner; }
 set { m_ExitWinner = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D ExitLooser
{
 get { return m_ExitLooser; }
 set { m_ExitLooser = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public PlayerMobile Player1
{
 get { return m_Player1; }
 set { m_Player1 = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public PlayerMobile Player2
{
 get { return m_Player2; }
 set { m_Player2 = value; }
}

[CommandProperty( AccessLevel.GameMaster )]
public int LongKills1
{
 get { return m_1Kills; }
 set { m_1Kills = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int LongKills2
{
 get { return m_2Kills; }
 set { m_2Kills = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int ShortKills1
{
 get { return m_1ShortMurders; }
 set { m_1ShortMurders = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int ShortKills2
{
 get { return m_2ShortMurders; }
 set { m_2ShortMurders = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int Karma1
{
 get { return m_1Karma; }
 set { m_1Karma = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int Karma2
{
 get { return m_2Karma; }
 set { m_2Karma = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int Fame1
{
 get { return m_1Fame; }
 set { m_1Fame = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int Fame2
{
 get { return m_2Fame; }
 set { m_2Fame = value; }
}



[Constructable]
public ArenaStone() : base( 0xED4 )
{
 Movable = false;
 Hue = 0;
 Name = "Pierre d'arene";
 Active = false;
}
public override void OnDoubleClick( Mobile from )
{
 if (from is PlayerMobile)
 {
  if ( !from.InRange( GetWorldLocation(), 3 ) )
  {
   from.SendLocalizedMessage( 500446 ); // That is too far away.
   //this.Active = true;
  }

  else if ( this.m_Active == false && this.MapTo != null )
  {
   from.SendMessage( "Cette pierre est en court d'utilisation !" );
  }
  else if (( this.MapFrom == null ) || ( this.Player1Dest == Point3D.Zero ) || ( this.Player2Dest == Point3D.Zero )
   || (this.ExitWinner == Point3D.Zero ) || (this.ExitLooser == Point3D.Zero ))
  {
   from.SendMessage( "Pierre mal confidurée , appellez un GM pour corrigé cela !");
  }
  else
  {
   this.Active = false;
   from.SendGump( new ArenaGump( from, this ) );
  }
 }
}
public ArenaStone( Serial serial ) : base( serial )
{
}

public override void Serialize( GenericWriter writer )
{
 base.Serialize( writer );

 writer.Write( (int) 0 );// version

 writer.Write( m_MapTo );
 writer.Write( m_Active );
 writer.Write( m_Player1Dest );
 writer.Write( m_Player2Dest );
 writer.Write( m_ExitWinner );
 writer.Write( m_ExitLooser );
}
public override void Deserialize( GenericReader reader )
{
 base.Deserialize( reader );

 int version = reader.ReadInt();

 switch ( version )
 {
  case 0:
  {
   m_MapTo = reader.ReadMap();
   m_Active = reader.ReadBool();
   m_Player1Dest = reader.ReadPoint3D();
   m_Player2Dest = reader.ReadPoint3D();
   m_ExitWinner = reader.ReadPoint3D();
   m_ExitLooser = reader.ReadPoint3D();
   break;
  }
 }
}
private class ArenaGump : Gump
{
 private Mobile m_Player1;
 private ArenaStone m_Item;

 public ArenaGump( Mobile from, ArenaStone item ) : base( 10, 30 )  
 {
  m_Player1 = from;
  m_Item = item;

  this.Closable = false;

  AddBackground( 200, 100, 340, 250, 2600 );

  AddLabel( 285, 125, 0x384, string.Format("Provoquer en Duel votre opposant"));
       
  AddButton( 250, 310, 0xF3, 0xF2, 0, GumpButtonType.Reply, 0 );
 
  AddButton( 260, 165, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0 );
  AddLabel( 295, 168, 0x384, "1000 gold");

  AddButton( 380, 165, 0xFA5, 0xFA7, 2, GumpButtonType.Reply, 0 );
  AddLabel( 415, 168, 0x384, "2000 gold");

  AddButton( 260, 215, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0 );
  AddLabel( 295, 218, 0x384, "3000 gold");

  AddButton( 380, 215, 0xFA5, 0xFA7, 4, GumpButtonType.Reply, 0 );
  AddLabel( 415, 218, 0x384, "5000 gold");

  AddButton( 260, 265, 0xFA5, 0xFA7, 5, GumpButtonType.Reply, 0 );
  AddLabel( 295, 268, 0x384, "10000 gold");

 }
 public override void OnResponse( NetState state, RelayInfo info ) //Function for GumpButtonType.Reply Buttons
 {
  Mobile from = state.Mobile;
  switch ( info.ButtonID )
  {
   case 6:
   {
    if( from is PlayerMobile )
    {
     PlayerMobile m = ( PlayerMobile ) from;
     Container bp = from.Backpack;
     if (bp != null)
     {
      int gold = 0;
      gold = bp.GetAmount(typeof(Gold));
     
      if ( gold >= m_Item.Gold )
      {
       m.Hidden = false;
       m_Item.Player1 = m;
       m.Target = new ArenaTarget( m_Player1, m_Item );
       m.SendMessage( " Choisissez votre Opposant s'il vous plait " );
       break;
      }
      else
      {
       m.SendMessage( "Vous n'avez pas assez d'or" );
       m.SendGump( new ArenaGump( from, m_Item ) );
       break;
      }
     }
    }
    else
    {
     from.SendMessage( "Abandon!!");
     m_Item.Active = true;
     break;
    }
    break;
   }
   case 5:
   {
    m_Item.Gold = 10000;
    goto case 6;
   }
   
   case 4:
   {
    m_Item.Gold = 5000;
    goto case 6;
   }
 
   case 3:
   {
    m_Item.Gold = 3000;
    goto case 6;
   }
 
   case 2:
   {
    m_Item.Gold = 2000;
    goto case 6;
   }
 
   case 1:
   {
    m_Item.Gold = 1000;
    goto case 6;
   }
 
   case 0:
   {
    m_Item.Active = true;
    from.SendMessage( "Fermé !!" );
    break;
   }
  }
 }
}
private class ArenaTarget : Target
{
 private Mobile m_Player1;
 private ArenaStone m_Item;

 public ArenaTarget( Mobile from, ArenaStone item ) :  base ( 6, false, TargetFlags.None )
 {
  m_Player1 = from;
  m_Item = item;
 }
 
 protected override void OnTargetCancel (Mobile from, TargetCancelType Canceled )
 {
  from.SendMessage(43, "Duel abandonné!" );
  m_Item.Active = true;
 }

 protected override void OnCantSeeTarget (Mobile from, object target )
 {
  from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
  m_Item.Active = true;
 }

 protected override void OnNonlocalTarget (Mobile from, object target )
 {
  from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
  m_Item.Active = true;
 }

 protected override void OnTargetNotAccessible (Mobile from, object target )
 {
  from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
  m_Item.Active = true;
 }

 protected override void OnTargetOutOfLOS (Mobile from, object target )
 {
  from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
  m_Item.Active = true;
 }

 protected override void OnTargetOutOfRange (Mobile from, object target )
 {
  from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
  m_Item.Active = true;
 }

 protected override void OnTargetUntargetable (Mobile from, object target )
 {
  from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
  m_Item.Active = true;
 }

 protected override void OnTargetDeleted (Mobile from, object target )
 {
  from.SendMessage( 43, "Opposant innaccessible , Duel abandonné." );
  m_Item.Active = true;
 }
 protected override void OnTarget( Mobile from, object target )
 {
  if( target is Item )
  {
   from.SendMessage( "Vous ne pouvez choisir cela !" );
   from.Target = new ArenaTarget( m_Player1, m_Item );
  }
  if ( target is PlayerMobile )
  {
   PlayerMobile m = (PlayerMobile) target;
   if ( !m.InRange ( m_Item, 3 ) )
   {
    from.SendMessage( " Ce joueurs est trop loin.  Duel abandonné.." );
    m_Item.Player1 = null;
    m_Item.Active = true;
   }
   else if ( !from.CheckAlive() || !m.CheckAlive() )
   {
    if ( !from.CheckAlive() )
    {
     from.SendMessage( "Vous devez être vivant pour cela.  Duel abandonné." );
     m_Item.Player1 = null;
     m_Item.Active = true;
    }
    if ( !m.CheckAlive() )
    {
     from.SendMessage( "Votre opposant doit être en vie pour le défié.  Duel abandonné " );
     m_Item.Player1 = null;
     m_Item.Active = true;
    }  
   }
   else
   {
    m.SendGump( new ArenaAcceptGump( m, m_Player1, m_Item ) );
   }
  }
 }
}
private class ArenaAcceptGump : Gump
{
 private Mobile m_Player2;
 private Mobile m_Player1;
 private ArenaStone m_Item;

 public ArenaAcceptGump( Mobile opponent, Mobile challenger, ArenaStone item ) : base( 20, 30 )
 {
  m_Player2 = opponent;
  m_Player1 = challenger;
  m_Item = item;
  this.Closable = false;

  AddBackground( 200, 200, 300, 150, 2600 );

  AddLabel( 260, 220, 0, string.Format("La mise est de {0} pièce d'or", m_Item.Gold) );

  AddButton( 320, 270, 0xF9, 0xF8, 1, GumpButtonType.Reply, 0 );

  AddButton( 320, 300, 0xF3, 0xF2, 2, GumpButtonType.Reply, 0 );

 }
 public override void OnResponse( NetState state, RelayInfo info ) //Function for GumpButtonType.Reply Buttons
 {
  Mobile from = state.Mobile;

  switch ( info.ButtonID )
  {
   case 2:
   {
    from.SendMessage( "Le duel est abandonné." );
    m_Player1.SendMessage( "Le duel est abandonné." );
    m_Item.Player1 = null;
    m_Item.Active = true;
    break;
   }
   case 1:
   {
    PlayerMobile m = (PlayerMobile)from;
    Container bp = m.Backpack;
    if (bp != null)
    {
     int gold = 0;
     gold = bp.GetAmount(typeof(Gold));
     if ( gold >= m_Item.Gold )
     {
      m.Hidden = false;
      m_Item.Player2 = m;
      m_Item.MapFrom = m_Item.Player2.Map;
      m_Player1.SendMessage( "Le défi est acepté. Que le combat commence!" );
      m_Player2.SendMessage( "Le défi est acepté. Que le combat commence!" );
      bp.ConsumeUpTo( typeof( Gold ), m_Item.Gold );
      bp = m_Player1.Backpack;
      bp.ConsumeUpTo( typeof( Gold ), m_Item.Gold );
      m_Item.ShortKills1 = m_Item.Player1.ShortTermMurders;
      m_Item.ShortKills2 = m_Item.Player2.ShortTermMurders;
      m_Item.LongKills1 = m_Item.Player1.Kills;
      m_Item.LongKills2 = m_Item.Player2.Kills;
      m_Item.Karma1 = m_Item.Player1.Karma;
      m_Item.Karma2 = m_Item.Player2.Karma;
      m_Item.Fame1 = m_Item.Player1.Fame;
      m_Item.Fame2 = m_Item.Player2.Fame;
      m_Player1.Map = m_Item.MapTo;
      m_Player2.Map = m_Item.MapTo;
      m_Player1.Location = m_Item.Player1Dest;
      m_Player2.Location = m_Item.Player2Dest;
      m_Item.Player1.Kills = 10;
      m_Item.Player2.Kills = 10;
      InternalTimer timer = new InternalTimer( m_Item );
      timer.Start();
      break;
     }
     else
     {
      m.SendMessage( "vous n'avez pas assez d'or" );
      m_Item.Player1 = null;
      m_Item.Active = true;
      break;
     }
    }
    break;
   }
  }
 }
}
private class InternalTimer : Timer
{
 private int m_Seconds = 3600;
 private int m_Count;
 private ArenaStone m_Item;

 public InternalTimer( ArenaStone item ) : base( TimeSpan.FromSeconds( 1.0 ), TimeSpan.FromSeconds( 1.0 ))
 {
  m_Item = item;
 }
 protected override void OnTick()
 {
  m_Seconds--;
  m_Count = (int)(m_Seconds / 60);
  bool finish = false;
  if ( !m_Item.Player1.Alive )
  {
   if (!m_Item.Player2.Alive) //Match Nul 2 morts
   {
    Stop();

    Mobile m = (Mobile)m_Item.Player1;
    m.PlaySound( 0x214 );
    m.FixedEffect( 0x376A, 10, 16 );
    m.Resurrect();
    Corpse corpse = null;
    IPooledEnumerable eable = m.Map.GetItemsInRange( m.Location, 10 );
    foreach ( Item item in eable )
    {
     if ( item is Corpse )
     {
      Corpse tempCorpse = item as Corpse;
      if(tempCorpse.Owner == m)
      {
       corpse = tempCorpse;
       break;
      }
     }
    }
    eable.Free();
    if( corpse != null)
    {
     foreach ( Item equipment in corpse.EquipItems )
      m.EquipItem( equipment );
     ArrayList list = new ArrayList( corpse.Items );
     foreach ( Item backpackItem in list )
      m.AddToBackpack( backpackItem );
     corpse.Delete();
    }
    m = (Mobile)m_Item.Player2;
    m.PlaySound( 0x214 );
    m.FixedEffect( 0x376A, 10, 16 );
    m.Resurrect();
    corpse = null;
    eable = m.Map.GetItemsInRange( m.Location, 10 );
    foreach ( Item item in eable )
    {
     if ( item is Corpse )
     {
      Corpse tempCorpse = item as Corpse;
      if(tempCorpse.Owner == m)
      {
       corpse = tempCorpse;
       break;
      }
     }
    }
    eable.Free();
    if( corpse != null)
    {
     foreach ( Item equipment in corpse.EquipItems )
      m.EquipItem( equipment );
     ArrayList list = new ArrayList( corpse.Items );
     foreach ( Item backpackItem in list )
      m.AddToBackpack( backpackItem );
     corpse.Delete();
    }
    m_Item.Player1.SendMessage( "Vous avez tué votre opposant mais etes également mort. Le duel est finni et l'or restitué " );
    m_Item.Player2.SendMessage( "Vous avez tué votre opposant mais etes également mort. Le duel est finni et l'or restitué " );
    Gold gold1 = new Gold( m_Item.Gold );
    Gold gold2 = new Gold( m_Item.Gold );
    m_Item.Player1.AddToBackpack( gold1 );
    m_Item.Player2.AddToBackpack( gold2 );
    m_Item.Player1.Location = m_Item.ExitWinner;
    m_Item.Player2.Location = m_Item.ExitLooser;
    finish = true;
   }
   else    //Gain Player 2
   {
    Stop();
    Mobile m = (Mobile)m_Item.Player1;
    m.PlaySound( 0x214 );
    m.FixedEffect( 0x376A, 10, 16 );
    m.Resurrect();
    Corpse corpse = null;
    IPooledEnumerable eable = m.Map.GetItemsInRange( m.Location, 10 );
    foreach ( Item item in eable )
    {
     if ( item is Corpse )
     {
      Corpse tempCorpse = item as Corpse;
      if(tempCorpse.Owner == m)
      {
       corpse = tempCorpse;
       break;
      }
     }
    }
    eable.Free();
    if( corpse != null)
    {
     foreach ( Item equipment in corpse.EquipItems )
      m.EquipItem( equipment );
     ArrayList list = new ArrayList( corpse.Items );
     foreach ( Item backpackItem in list )
      m.AddToBackpack( backpackItem );
     corpse.Delete();
    }
    m_Item.Player1.SendMessage( "Vous avez Perdu" );
    m_Item.Player2.SendMessage( "Vous gagnez le combat et {0} piéces d'or ", (m_Item.Gold*2) );
    //BankCheck gold1 = new BankCheck( m_Item.Gold );
    BankCheck gold2 = new BankCheck( (m_Item.Gold*2) );
    //m_Item.Player1.AddToBackpack( gold1 );
    m_Item.Player2.AddToBackpack( gold2 );
    m_Item.Player2.Location = m_Item.ExitWinner;
    m_Item.Player1.Location = m_Item.ExitLooser;
    finish = true;
   }
  }
  else
  {
   if (!m_Item.Player2.Alive) //Gain Player 1
   {
    Stop();
    Mobile m = (Mobile)m_Item.Player2;
    m.PlaySound( 0x214 );
    m.FixedEffect( 0x376A, 10, 16 );
    m.Resurrect();
    Corpse corpse = null;
    IPooledEnumerable eable = m.Map.GetItemsInRange( m.Location, 10 );
    foreach ( Item item in eable )
    {
     if ( item is Corpse )
     {
      Corpse tempCorpse = item as Corpse;
      if(tempCorpse.Owner == m)
      {
       corpse = tempCorpse;
       break;
      }
     }
    }
    eable.Free();
    if( corpse != null)
    {
     foreach ( Item equipment in corpse.EquipItems )
      m.EquipItem( equipment );
     ArrayList list = new ArrayList( corpse.Items );
     foreach ( Item backpackItem in list )
      m.AddToBackpack( backpackItem );
     corpse.Delete();
    }
    m_Item.Player2.SendMessage( "Vous avez Perdu" );
    m_Item.Player1.SendMessage( "Vous gagnez le combat et {0} piéces d'or  ", (m_Item.Gold*2) );
    BankCheck gold1 = new BankCheck( (m_Item.Gold*2) );
    //BankCheck gold2 = new BankCheck( m_Item.Gold );
    m_Item.Player1.AddToBackpack( gold1 );
    //m_Item.Player2.AddToBackpack( gold2 );
    m_Item.Player2.Location = m_Item.ExitWinner;
    m_Item.Player1.Location = m_Item.ExitLooser;
    finish = true;
   }
  }
  if ( finish == false )
  {
   if ( (m_Count == ( 30 )) || (m_Count == ( 20 )) ||(m_Count == ( 15 )) || ((m_Count <= ( 10 )) && (m_Count >= (2))))
   {
    m_Item.Player1.SendMessage( " Le duel se termine dans {0} minutes ", m_Count );
    m_Item.Player2.SendMessage( " Le duel se termine dans {0} minutes ", m_Count );
   }
   if ( m_Count == ( 1 ))
   {
    m_Item.Player1.SendMessage( "Il reste {0} minutes", m_Count );
    m_Item.Player2.SendMessage( "Il reste {0} minutes", m_Count );
   }
   if ( m_Count == 0 && m_Seconds == 0 ) //Match Nul
   {
    Stop();
    m_Item.Player1.SendMessage( "Vous n'avez pas réussi a tué votre adversaire le défi est annulé,l'or restitué" );
    m_Item.Player2.SendMessage( "Vous n'avez pas réussi a tué votre adversaire le défi est annulé,l'or restitué" );
    m_Item.Player1.Karma = m_Item.Karma1;
    m_Item.Player2.Karma = m_Item.Karma2;
    m_Item.Player1.Fame = m_Item.Fame1;
    m_Item.Player2.Fame = m_Item.Fame2;
    m_Item.Player1.ShortTermMurders = m_Item.ShortKills1;
    m_Item.Player2.ShortTermMurders = m_Item.ShortKills2;
    m_Item.Player1.Kills = m_Item.LongKills1;
    m_Item.Player2.Kills = m_Item.LongKills2;
    Gold gold1 = new Gold( m_Item.Gold );
    Gold gold2 = new Gold( m_Item.Gold );
    m_Item.Player1.AddToBackpack( gold1 );
    m_Item.Player2.AddToBackpack( gold2 );
    m_Item.Player1.Map = m_Item.MapFrom;
    m_Item.Player2.Map = m_Item.MapFrom;
    m_Item.Player1.Location = m_Item.ExitWinner;
    m_Item.Player2.Location = m_Item.ExitLooser;
    Server.Scripts.Commands.CommandHandlers.GetFollowers_OnTarget( m_Item.Player1, m_Item.Player1 );
    Server.Scripts.Commands.CommandHandlers.GetFollowers_OnTarget( m_Item.Player2, m_Item.Player2 );
    m_Item.Active = true;
   }
  }
  else
  {
   m_Item.Player1.Karma = m_Item.Karma1;
   m_Item.Player2.Karma = m_Item.Karma2;
   m_Item.Player1.Fame = m_Item.Fame1;
   m_Item.Player2.Fame = m_Item.Fame2;
   m_Item.Player1.ShortTermMurders = m_Item.ShortKills1;
   m_Item.Player2.ShortTermMurders = m_Item.ShortKills2;
   m_Item.Player1.Kills = m_Item.LongKills1;
   m_Item.Player2.Kills = m_Item.LongKills2;
   m_Item.Player1.Map = m_Item.MapFrom;
   m_Item.Player2.Map = m_Item.MapFrom;
   Server.Scripts.Commands.CommandHandlers.GetFollowers_OnTarget( m_Item.Player1, m_Item.Player1 );
   Server.Scripts.Commands.CommandHandlers.GetFollowers_OnTarget( m_Item.Player2, m_Item.Player2 );
   m_Item.Player1 = null;
   m_Item.Player2 = null;
   m_Item.Karma1 = 0;
   m_Item.Karma2 = 0;
   m_Item.Fame1 = 0;
   m_Item.Fame2 = 0;
   m_Item.ShortKills1 = 0;
   m_Item.ShortKills2 = 0;
   m_Item.LongKills1 = 0;
   m_Item.LongKills2 = 0;
   m_Item.Gold = 0;
   m_Item.MapTo = null;
   m_Item.Active = true;
  }
 }
}
}
}


en belge francophone .

Sna - July 1, 2003 05:01 PM (GMT)
hehe sorry g trop l'habitude de coder en anglais :)
pi bon copy paste power du script existant :)

et apres test y a une ou 2 erreurs
ligne 166 transformer this.MapTo == null en this.MapFrom == null
ligne 717 ajouter m_Item.Active = true; a la liste
ligne 746 ajouter m_Item.Active = true; a la liste

je penses que c tout :)

Sna - July 2, 2003 06:28 AM (GMT)
j'ai edite le premier post pour y inclure la traduction francaise (merci crycry) et les quelques modifications pour eviter les bugs :)

bon amusement

Sna - July 3, 2003 06:02 AM (GMT)
bon pour finir reedition qd meme y'avait encore un bug :)




* Hosted for free by InvisionFree