View Full Version: Pour ajouter un menu

RunUO.FR Support > comment on fait ... > Pour ajouter un menu


Title: Pour ajouter un menu


Vortal - September 18, 2004 03:29 AM (GMT)
Je voudrais ajouter un menu, un peu comme celui du craftsystem. Une petite fenêtre, avec du texte et des choix. Je n'ai trouvé aucun tutorial sur le sujet, et après avoir regardé le code pour le craftsystem, j'ai préféré venir demandé un peu d'aide..

Quelqu'un pourrait m'éclairer ou me donner un exemple de script simple ?

Merci beaucoup !

Kaervek - September 18, 2004 06:05 AM (GMT)
Heeeeu ca dépend... Tu veux qqc qui permet la fabrication d'objets facilement en étant lié à une skill ou pas du tout?

Si tu le veux, regère toi à ceci:
CODE
using System;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Craft
{
public class AlchimieSys : CraftSystem
{
 public override SkillName MainSkill
 {
  get { return SkillName.Alchemy; }
 }

 public override int GumpTitleNumber
 {
  get { return 1044001; } // <CENTER>ALCHEMY MENU</CENTER>
 }

 private static CraftSystem m_CraftSystem;

 public static CraftSystem CraftSystem
 {
  get
  {
   if ( m_CraftSystem == null )
    m_CraftSystem = new AlchimieSys();

   return m_CraftSystem;
  }
 }

 public override double GetChanceAtMin( CraftItem item )
 {
  return 0.0; // 0%
 }

 private AlchimieSys() : base( 1, 1, 3.1 )
 {
 }

 public override int CanCraft( Mobile from, BaseTool tool, Type itemType )
 {
  if ( tool.Deleted || tool.UsesRemaining < 0 )
   return 1044038; // You have worn out your tool!

  return 0;
 }

 public override void PlayCraftEffect( Mobile from )
 {
  from.PlaySound( 0x242 );
 }

 public override int PlayEndingEffect( Mobile from, bool failed, bool lostMaterial, bool toolBroken, int quality, bool makersMark, CraftItem item )
 {
//*************************************
  //artisan
  //PlayerMobile player = (PlayerMobile) from;
  //player.DonnerArt(0); //numero de l'artisanat
 
  if ( toolBroken )
   from.SendLocalizedMessage( 1044038 ); // You have worn out your tool

  if ( failed )
  {
   from.AddToBackpack( new Bottle() );

   return 500287; // You fail to create a useful potion.
  }
  else
  {
   from.PlaySound( 0x240 ); // Sound of a filling bottle

   return 500279; // You pour the potion into a bottle...
  }
 }

 public override void InitCraftList()
 {
  int index = -1;


  //Potions de Soins
  index = AddCraft( typeof( PotionSoinsMineurs ), "Soins", "Soins Légers", 00.0, 20.0, typeof( RacinedeGinka ), "Racine de Ginka", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( TigedeKadura ), "Tige de Kadura", 1, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionSoins ), "Soins", "Soins", 40.0, 60.0, typeof( RacinedeGinka ), "Racine de Ginka", 2, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( TigedeKadura ), "Tige de Kadura", 2, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionSoinsGraves ), "Soins", "Soins Graves", 60.0, 80.0, typeof( RacinedeGinka ), "Racine de Ginka", 5, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( TigedeKadura ), "Tige de Kadura", 5, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionSoinsDivins ), "Soins", "Soins Divins", 90.0, 110.0, typeof( RacinedeGinka ), "Racine de Ginka", 10, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( TigedeKadura ), "Tige de Kadura", 10, "Il vous faut plus de ressources..." );
 
  //Potion d'Ether
  index = AddCraft( typeof( PotionEtherLeger ), "Ether", "Ether Léger", 00.0, 20.0, typeof( HerbeaSorcieres ), "Herbe à Sorcières", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( ChampignonBleuferret ), "Champignon Bleuferret", 1, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionEther ), "Ether", "Ether", 20.0, 40.0, typeof( HerbeaSorcieres  ), "Herbe à Sorcières", 2, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( ChampignonBleuferret ), "Champignon Bleuferret", 2, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionEtherSuperieur ), "Ether", "Ether Supérieur", 50.0, 70.0, typeof( HerbeaSorcieres  ), "Herbe à Sorcières", 5, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( ChampignonBleuferret ), "Champignon Bleuferret", 5, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionEtherX ), "Ether", "Ether X", 70.0, 90.0, typeof( HerbeaSorcieres  ), "Herbe à Sorcières", 10, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( ChampignonBleuferret ), "Champignon Bleuferret", 10, "Il vous faut plus de ressources..." );
 
  //Potions de Recharge
  index = AddCraft( typeof( PotionRechargeFaible ), "Recharge", "Recharge Faible", 00.0, 20.0, typeof( FeuilledeCoca ), "Feuille de Coca", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( FeuilledeTabac ), "Feuille de Tabac", 1, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionRecharge ), "Recharge", "Recharge", 10.0, 30.0, typeof( FeuilledeCoca  ), "Feuille de Coca", 2, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( FeuilledeTabac ), "Feuille de Tabac", 2, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionRechargeElevee ), "Recharge", "Recharge Elevée", 30.0, 50.0, typeof( FeuilledeCoca  ), "Feuille de Coca ", 5, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( FeuilledeTabac ), "Feuille de Tabac", 5, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionRechargeDivine ), "Recharge", "Recharge Divine", 60.0, 80.0, typeof( FeuilledeCoca  ), "Feuille de Coca", 10, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( FeuilledeTabac ), "Feuille de Tabac", 10, "Il vous faut plus de ressources..." );
 
  //Potions de peau de...
  index = AddCraft( typeof( PotionPeauCuir ), "Peau", "Peau de Cuir", 10.0, 30.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( TigedeKadura ), "Tige de Kadura", 2, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionPeauPierre ), "Peau", "Peau de Pierre", 30.0, 50.0, typeof( FeuilledAnamorphe  ), "Feuille d'Anamorphe", 2, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( TigedeKadura ), "Tige de Kadura", 4, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionPeauFer ), "Peau", "Peau de Fer", 60.0, 80.0, typeof( FeuilledAnamorphe  ), "Feuille d'Anamorphe", 5, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( TigedeKadura ), "Tige de Kadura", 10, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionPeauDiamant ), "Peau", "Peau de Diamant", 90.0, 110.0, typeof( FeuilledAnamorphe  ), "Feuille d'Anamorphe", 10, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( TigedeKadura ), "Tige de Kadura", 20, "Il vous faut plus de ressources..." );
 
  //Potions de Force
  index = AddCraft( typeof( PotionForce ), "F-D-I-B-M", "Force", 30.0, 50.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 5, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( PoussedeFreoline ), "Pousse de Fréoline", 5, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionForceX ), "F-D-I-B-M", "Force Divine", 70.0, 90.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 10, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( PoussedeFreoline ), "Pousse de Fréoline", 10, "Il vous faut plus de ressources..." );
  //Potions de Dexterite
  index = AddCraft( typeof( PotionDexterite ), "F-D-I-B-M", "Dextérité", 30.0, 50.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 5, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( PoussedeTengulier ), "Pousse de Tengulier", 5, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionDexteriteX ), "F-D-I-B-M", "Dextérité Divine", 70.0, 90.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 10, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( PoussedeTengulier ), "Pousse de Tengulier", 10, "Il vous faut plus de ressources..." );
  //Potions de Intelligence
  index = AddCraft( typeof( PotionIntelligence ), "F-D-I-B-M", "Intelligence", 30.0, 50.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 5, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( HerbeaSorcieres ), "Herbe à Sorcières", 5, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionIntelligenceX ), "F-D-I-B-M", "Intelligence Divine", 70.0, 90.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 10, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( HerbeaSorcieres ), "Herbe à Sorcières", 10, "Il vous faut plus de ressources..." );
  //Potions de Bénédiction
  index = AddCraft( typeof( PotionBenediction ), "F-D-I-B-M", "Bénédiction", 50.0, 70.0, typeof( ChampignonBleuferret ), "Champignon Bleuferret", 10, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( HerbeaSorcieres ), "Herbe à Sorcières", 10, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionBenedictionDivine ), "F-D-I-B-M", "Bénédiction Divine", 90.0, 100.0, typeof( ChampignonBleuferret ), "Champignon Bleuferret", 20, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( HerbeaSorcieres ), "Herbe à Sorcières", 20, "Il vous faut plus de ressources..." );
 
  //Potions d'Infravision
  index = AddCraft( typeof( PotionInfraVisionLegere ), "Infravision", "Infravision Légère", -10.0, 10.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 1, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionInfraVision ), "Infravision", "Infravision", 00.0, 20.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 2, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
  index = AddCraft( typeof( PotionInfraVisionConcentree ), "Infravision", "Infravision Concentrée", 20.0, 40.0, typeof( FeuilledAnamorphe ), "Feuille d'Anamorphe", 5, "Il vous faut plus de ressources..." );
  AddRes( index, typeof ( Bottle ), "Bouteille", 1, "Il vous faut plus de ressources..." );
 }
}
}







Si ca n'a rien à voir avec un menu pour fabriquer des objets en étant lié à une compétence, alors il s'agit de "gumps" (techniquement l'autre aussi en est un, oui... mais bon, il est différent quoi :P). En voici un exemple:
CODE
using System;
using Server;
using Server.Gumps;
using Server.Targeting;
using Server.Mobiles;
using Server.Network;
using Server.Scripts.Commands;

namespace Server.Scripts.Commands
{
 public class LevelUpCommand
 {
    public static void Initialize()
    {
       Server.Commands.Register( "LvlUp", AccessLevel.Player, new CommandEventHandler(LvlUp_OnCommand ) );
    }

    [Usage( "LvlUp" )]
    [Description( "LvlUp" )]
    public static void LvlUp_OnCommand( CommandEventArgs e )
    {
       Mobile from = e.Mobile;
       from.SendGump( new LevelUpGump ( from ) );

    }

 }
}


namespace Server.Gumps
{
public class LevelUpGump : Gump
{


 public void AddBlueBack( int width, int height )
 {
  AddBackground (  55,  60, width-00, height-00, 0xE10 );
   AddBackground (  63,  65, width-16, height-11, 0x053 );
   AddImageTiled ( 70, 74, width-29, height-29, 0xE14 );
   AddAlphaRegion( 70, 74, width-29, height-29 );
 }
 
 public LevelUpGump(Mobile m) : base ( 0, 0)
{

   PlayerMobile from = ( PlayerMobile ) m;
 
 // Fond
 AddBlueBack( 800, 500 );
 
 //Titre
  AddLabel( 150, 55, 0x26, "Choissez votre voie." );
  AddLabel( 80, 70, 1150, string.Format( "(PS) Points de Stats à distribuer: {0}", Convert.ToString(from.m_PointStat)));
 
 
 
  /////STATS//////
  AddLabel( 100, 90, 0x34, string.Format( "Force: {0}", Convert.ToString(from.BaseStr)));
  AddLabel( 100, 110, 0x34, string.Format( "Dexterite: {0}", Convert.ToString(from.BaseDex)));
  AddLabel( 100, 130, 0x34, string.Format( "Intelligence: {0}", Convert.ToString(from.BaseInt)));
 
 
 if(from.Classe=="Artisan")
 {
   AddLabel( 200, 90, 0x34, string.Format( " Art_Str restant {0}", Convert.ToString(1000-from.Art_Str)));
   AddLabel( 200, 110, 0x34, string.Format( " Art_Dex restant {0}", Convert.ToString(1000-from.Art_Dex)));
   AddLabel( 200, 130, 0x34, string.Format( " Art_Int restant {0}", Convert.ToString(1000-from.Art_Int)));
 }
 else
 {
  AddButton( 80, 89, 0x2623, 0x2622, 1, GumpButtonType.Reply, 0 );
  AddButton( 80, 109, 0x2623, 0x2622, 2, GumpButtonType.Reply, 0 );  
  AddButton( 80, 129, 0x2623, 0x2622, 3, GumpButtonType.Reply, 0 );    
 }
 //////COMPETENCES//////////
 AddLabel( 100, 150, 1150, string.Format( "(PC) Points de Competence à distribuer: "));
 
 AddLabel( 100, 180, 33, string.Format( "Magiques"));
 AddLabel( 100, 200, 0x34, string.Format( "Ecole des Flammes"));
 AddLabel( 100, 220, 0x34, string.Format( "Ecole des Glaces"));
 AddLabel( 100, 240, 0x34, string.Format( "Ecole des Ténèbres"));
 AddLabel( 100, 260, 0x34, string.Format( "Ecole de la Lumière"));
 AddLabel( 100, 280, 0x34, string.Format( "Ecole de la Nature"));
 AddLabel( 100, 300, 0x34, string.Format( "Ecole d'Invocation"));
 AddLabel( 100, 320, 0x34, string.Format( "Ecole des Ilusions"));
 AddLabel( 100, 340, 0x34, string.Format( "Ecole des Runes"));
 AddLabel( 100, 360, 0x34, string.Format( "Ecole des Cartes"));
 
 AddButton( 80, 200, 0x2623, 0x2622, 10, GumpButtonType.Reply, 0 );
 AddButton( 80, 220, 0x2623, 0x2622, 11, GumpButtonType.Reply, 0 );
 AddButton( 80, 240, 0x2623, 0x2622, 12, GumpButtonType.Reply, 0 );
 AddButton( 80, 260, 0x2623, 0x2622, 13, GumpButtonType.Reply, 0 );
 AddButton( 80, 280, 0x2623, 0x2622, 14, GumpButtonType.Reply, 0 );
 AddButton( 80, 300, 0x2623, 0x2622, 15, GumpButtonType.Reply, 0 );
 AddButton( 80, 320, 0x2623, 0x2622, 16, GumpButtonType.Reply, 0 );
 AddButton( 80, 340, 0x2623, 0x2622, 17, GumpButtonType.Reply, 0 );
 AddButton( 80, 360, 0x2623, 0x2622, 18, GumpButtonType.Reply, 0 );
 
 
AddLabel( 300, 180, 33, string.Format( "Guerrières"));  
 AddLabel( 300, 200, 0x34, string.Format( "Maitrise des Lames"));
 AddLabel( 300, 220, 0x34, string.Format( "Maitrise des Haches"));
 AddLabel( 300, 240, 0x34, string.Format( "Maitrise des Lances"));
 AddLabel( 300, 260, 0x34, string.Format( "Maitrise des Dagues"));
 AddLabel( 300, 280, 0x34, string.Format( "Armure Lourde"));
 AddLabel( 300, 300, 0x34, string.Format( "Armure Intermédiaire"));
 AddLabel( 300, 320, 0x34, string.Format( "Armure Légère"));
 AddLabel( 300, 340, 0x34, string.Format( "Maitrise Arcs"));
 AddLabel( 300, 360, 0x34, string.Format( "Maitrise Arbalètes"));

 AddButton( 280, 200, 0x2623, 0x2622, 19, GumpButtonType.Reply, 0 );
 AddButton( 280, 220, 0x2623, 0x2622, 20, GumpButtonType.Reply, 0 );
 AddButton( 280, 240, 0x2623, 0x2622, 21, GumpButtonType.Reply, 0 );
 AddButton( 280, 260, 0x2623, 0x2622, 22, GumpButtonType.Reply, 0 );
 AddButton( 280, 280, 0x2623, 0x2622, 23, GumpButtonType.Reply, 0 );
 AddButton( 280, 300, 0x2623, 0x2622, 24, GumpButtonType.Reply, 0 );
 AddButton( 280, 320, 0x2623, 0x2622, 25, GumpButtonType.Reply, 0 );
 AddButton( 280, 340, 0x2623, 0x2622, 26, GumpButtonType.Reply, 0 );
 AddButton( 280, 360, 0x2623, 0x2622, 27, GumpButtonType.Reply, 0 );
 
AddLabel( 500, 180, 33, string.Format( "Autres"));
 AddLabel( 500, 200, 0x34, string.Format( "Eloquence"));
 AddLabel( 500, 220, 0x34, string.Format( "Equitation"));
 AddLabel( 500, 240, 0x34, string.Format( "Furtivité"));
 AddLabel( 500, 260, 0x34, string.Format( "Soins aux Reptiles"));
 AddLabel( 500, 280, 0x34, string.Format( "Soins aux Arachnides"));
 AddLabel( 500, 300, 0x34, string.Format( "Soins aux Mammifères"));
 
 AddButton( 480, 200, 0x2623, 0x2622, 28, GumpButtonType.Reply, 0 );
 AddButton( 480, 220, 0x2623, 0x2622, 29, GumpButtonType.Reply, 0 );
 AddButton( 480, 240, 0x2623, 0x2622, 30, GumpButtonType.Reply, 0 );
 AddButton( 480, 260, 0x2623, 0x2622, 31, GumpButtonType.Reply, 0 );
 AddButton( 480, 280, 0x2623, 0x2622, 32, GumpButtonType.Reply, 0 );
 AddButton( 480, 300, 0x2623, 0x2622, 33, GumpButtonType.Reply, 0 );

  }
 
 public override void OnResponse( NetState state, RelayInfo info )
{
    Mobile from = state.Mobile;
 PlayerMobile m = ( PlayerMobile ) from;
    int val = info.ButtonID;
 
 switch(val)
   {
    case 0: break;
 /////////////////////////////////STATS//////////////////////////////
    case 1:
     {
 
   if (m.m_PointStat > 0)
 {
   ///////////////Anti-Bug des sorts/Potions et autres//////////////
   m.Str = m.BaseStr;
   m.PotionForce = 0;
   /////////////FIn Anti-Bug/////////////////////////////////////////
 
      m.Str +=1;
   m.BaseStr +=1;
   m.SendMessage("Vous Gagnez 1 point de Force");
   m.m_PointStat -=1;
      m.SendGump( new LevelUpGump( from ) );
    }
      break;
     }
    case 2:
     {
   if (m.m_PointStat > 0)
 {
 ///////////////Anti-Bug des sorts/Potions et autres//////////////
   m.Dex = m.BaseDex;
   m.PotionDexterite = 0;
   /////////////FIn Anti-Bug/////////////////////////////////////////
      m.Dex +=1;
   m.BaseDex +=1;
   m.SendMessage("Vous Gagnez 1 point de Dexterite");
   m.m_PointStat -=1;
      m.SendGump( new LevelUpGump( from ) );
    }
      break;
     }
 case 3:
     {
   if (m.m_PointStat > 0)
 {
 ///////////////Anti-Bug des sorts/Potions et autres//////////////
   m.Int = m.BaseInt;
   m.PotionIntelligence = 0;
   /////////////FIn Anti-Bug/////////////////////////////////////////
      m.Int +=1;
   m.BaseInt +=1;
   m.SendMessage("Vous Gagnez 1 point d'Intelligence");
   m.m_PointStat -=1;
      m.SendGump( new LevelUpGump( from ) );
    }
      break;
     }
     case 10:
      {
          m.m_ComB_EcoleFlammes++;
          m.m_Com_EcoleFlammes = m.m_ComB_EcoleFlammes;
     m.SendGump( new LevelUpGump( from ) );

       break;
      }
     case 11:
      {
          m.m_ComB_EcoleGlaces++;
          m.m_Com_EcoleGlaces = m.m_ComB_EcoleGlaces;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 12:
      {
        m.m_ComB_EcoleTenebres++;
          m.m_Com_EcoleTenebres = m.m_ComB_EcoleTenebres;
     m.SendGump( new LevelUpGump( from ) );

     break;
      }
     case 13:
      {
          m.m_ComB_EcoleLumiere++;
          m.m_Com_EcoleLumiere = m.m_ComB_EcoleLumiere;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 14:
      {
          m.m_ComB_EcoleNature++;
          m.m_Com_EcoleNature=m.m_ComB_EcoleNature;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 15:
      {  
          m.m_ComB_EcoleInvocation++;
          m.m_Com_EcoleInvocation=m.m_ComB_EcoleInvocation;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 16:
      {
          m.m_ComB_EcoleIlusions++;
          m.m_Com_EcoleIlusions=m.m_ComB_EcoleIlusions;
     m.SendGump( new LevelUpGump( from ) );
     
       break;
      }
     case 17:
      {
          m.m_ComB_EcoleRunes++;
          m.m_Com_EcoleRunes=m.m_ComB_EcoleRunes;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 18:
      {
          m.m_ComB_EcoleCartes++;
          m.m_Com_EcoleCartes=m.m_ComB_EcoleCartes;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 19:
      {
          m.m_ComB_MaitriseLames++;
          m.m_Com_MaitriseLames=m.m_ComB_MaitriseLames;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 20:
      {
          m.m_ComB_MaitriseHaches++;
          m.m_Com_MaitriseHaches=m.m_ComB_MaitriseHaches;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 21:
      {
          m.m_ComB_MaitriseLances++;
          m.m_Com_MaitriseLances=m.m_ComB_MaitriseLances;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 22:
      {
          m.m_ComB_MaitriseDagues++;
          m.m_Com_MaitriseDagues=m.m_ComB_MaitriseDagues;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 23:
      {
     m.m_ComB_ArmureLourde++;
          m.m_Com_ArmureLourde=m.m_ComB_ArmureLourde;
     m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 24:
      {
       m.m_ComB_ArmureIntermediaire++;
       m.m_Com_ArmureIntermediaire=m.m_ComB_ArmureIntermediaire;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 25:
      {
       m.m_ComB_ArmureLegere++;
       m.m_Com_ArmureLegere=m.m_ComB_ArmureLegere;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 26:
      {
       m.m_ComB_MaitriseArcs++;
       m.m_Com_MaitriseArcs=m.m_ComB_MaitriseArcs;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 27:
      {
       m.m_ComB_MaitriseArbaletes++;
       m.m_Com_MaitriseArbaletes=m.m_ComB_MaitriseArbaletes;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 28:
      {
       m.m_ComB_Eloquence++;
       m.m_Com_Eloquence=m.m_ComB_Eloquence;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 29:
      {
       m.m_ComB_Equitation++;
       m.m_Com_Equitation=m.m_ComB_Equitation;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 30:
      {
       m.m_ComB_Furtivite++;
       m.m_Com_Furtivite=m.m_ComB_Furtivite;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 31:
      {
       m.m_ComB_SoinsReptiles++;
       m.m_Com_SoinsReptiles=m.m_ComB_SoinsReptiles;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 32:
      {
       m.m_ComB_SoinsArachnides++;
       m.m_Com_SoinsArachnides=m.m_ComB_SoinsArachnides;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
     case 33:
      {
       m.m_ComB_SoinsMammiferes++;
       m.m_Com_SoinsMammiferes=m.m_ComB_SoinsMammiferes;
  m.SendGump( new LevelUpGump( from ) );
       break;
      }
 
 
 }
}


}
}

Ce qui en image donne:
user posted image

Vortal - September 18, 2004 06:59 AM (GMT)
QUOTE (Kaervek @ Sep 18 2004, 02:05 AM)
Heeeeu ca dépend... Tu veux qqc qui permet la fabrication d'objets facilement en étant lié à une skill ou pas du tout?

Non en fait, je cherche à faire un menu qui permettrait de choisir sa classe, sa race et de setter les différentes propriétés qui y sont attribuées puis de téléporter le joueur au lieu approprié dépendamment de ses choix. Ce menu apparaîtrait à la création d'un personnage, cela va sans dire.

Merci pour tes exemples, je crois bien que je vais réussir à m'en sortir avec ça. Si j'ai d'autres questions, je les posterai ici-même.

Vortal - September 18, 2004 08:04 AM (GMT)
Édité.

Vortal - September 18, 2004 09:19 AM (GMT)
Bon, j'ai une question, finalement. Alors voilà : j'essaie d'ajouter différentes "pages" au gump mais runUo me lance un message d'erreur disant que ma page n'est pas définie. Voici ce à quoi ressemble le code :

QUOTE
using System;
using Server;
using Server.Gumps;
using Server.Targeting;
using Server.Mobiles;
using Server.Network;
using Server.Scripts.Commands;

namespace Server.Scripts.Commands
{
public class TestCommand
{
  public static void Initialize()
  {
   Server.Commands.Register( "test", AccessLevel.GameMaster, new CommandEventHandler(Test_OnCommand ) );
  }

  [Usage( "test" )]
  [Description( "test" )]
  public static void Test_OnCommand( CommandEventArgs e )
  {
   Mobile from = e.Mobile;
   from.SendGump( new TestGump ( from ) );
  }
}
}

namespace Server.Gumps
{
public class TestGump : Gump
{
  public void AddBlueBack( int width, int height )
  {
   AddBackground(0, 0, width, height, 9270);
   Closable=true;
   Disposable=true;
   Dragable=true;
   Resizable=false;
  }

  public TestGump(Mobile m) : base ( 0, 0)
  {
   PlayerMobile from = ( PlayerMobile ) m;

   AddPage( 0 );
   AddBlueBack( 400, 250 );

   AddLabel( 150, 55, 1150, "Choissez votre voie." );
   AddLabel( 80, 70, 1150, string.Format( "(PS) Points de Stats à distribuer: {0}", "666"));

   AddLabel( 100, 90, 1150, string.Format( "Force: {0}", "666"));
   AddLabel( 100, 110, 1150, string.Format( "Dexterite: {0}", "666"));
   AddLabel( 100, 130, 1150, string.Format( "Intelligence: {0}", "666"));

   AddButton( 80, 89, 0x2623, 0x2622, 0, GumpButtonType.page, 1 );
   AddButton( 80, 109, 0x2623, 0x2622, 0, GumpButtonType.page, 1 );
   AddButton( 80, 129, 0x2623, 0x2622, 0, GumpButtonType.page, 1 );


  AddPage( 1 );
  AddLabel( 100, 90, 1150, string.Format( "Force: {0}", "666"));
  AddLabel( 100, 110, 1150, string.Format( "Dexterite: {0}", "666"));
  AddLabel( 100, 130, 1150, string.Format( "Intelligence: {0}", "666"));
  }
 
  public override void OnResponse( NetState state, RelayInfo info )
  {
   Mobile from = state.Mobile;
   PlayerMobile m = ( PlayerMobile ) from;
   int val = info.ButtonID;

   switch(val)
   {
    case 0: break;
    case 1:
    {
     m.Str +=1;
     m.SendMessage("Vous Gagnez 1 point de Force");
     m.SendGump( new TestGump( from ) );
     break;
    }
   }
  }
}
}


Quelqu'un voit l'erreur ? Elle est sûrement toute bête mais j'avance à tâton, j'ai pas beaucoup de théorie :blink: Pour info, de mémoire, l'erreur était qu'il manquait la définition de 'page'


(Naturellement le texte et les effets sont bidons, je me suis servi temporairement du script de Kaervek)

Kaervek - September 18, 2004 02:15 PM (GMT)
Essaie ca:
CODE
GumpButtonType.Page

Au lieu de
CODE
GumpButtonType.page


C'est très sensible aux majuscules ces bébêtes ^^

Belladonne - September 19, 2004 02:30 PM (GMT)
un peu tard peut etre mais il y a dans le fofo un post avec script d'une pierre de race qui génére un menu du type que tu désires.

Vortal - September 19, 2004 05:24 PM (GMT)
C'est gentil mais j'ai réglé mes problèmes ! Tout fonctionne merveilleusement bien.

Merci quand même !

Vortal - September 25, 2004 07:25 AM (GMT)
Bon, je voudrais que mon Gump s'affiche à la création d'un personnage. J'ai donc ajouté cette ligne :

CODE
newChar.SendGump( new CharCreationGump( newChar ) );


À la fin de EventSink_CharacterCreated dans le CharacterCreation.cs


Tout compile sans problème, sauf que le Gump ne s'ouvre jamais.. :huh: Quelqu'un peut me filer un coup de main svp ?

Merci !!

slade15 - September 25, 2004 05:53 PM (GMT)
nous on a conturné ca , au lieux de s'afficher au depart on affiche sur la pierre de race (pierre où le joueur doit obligatoirement cliquer apres creation)

Vortal - September 25, 2004 07:00 PM (GMT)
Heu oui mais je veux pas contourner, je veux que ça marche !! :P

Vortal - September 26, 2004 04:07 AM (GMT)
On continue le sujet ici : http://invisionfree.com/forums/Hyel_dev/in...p?showtopic=539 vu le nombre de problèmes croissants.

Merci !




Hosted for free by InvisionFree