RunUO-FR

Forum de support pour RunUO en français.
 
AccueilAccueil  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  Connexion  

Partagez | 
 

 Ajout de nouveaux métaux

Aller en bas 
AuteurMessage
Scriptiz

avatar

Messages : 101
Date d'inscription : 02/09/2008
Localisation : Belgium

MessageSujet: Ajout de nouveaux métaux   Mar 2 Sep - 10:53

Ajout de nouveaux métaux (Traduction d'un tutorial de runuo.com par Sna)
Note : J'avais suivi ce tuto à l'époque sous RunUO 1 et ça marchait après quelques corrections post-tuto. Je ne sais pas ce qu'il en est sous RunUO 2 si quelqu'un souhaite mettre à jour certaines choses ou apporter des corrections ce serait sympa.

1.D'abord commencez par faire une liste des métaux que vous voulez en partant du plus courant jusqu'au plus rare.

2. Dans le \scripts\misc\oreinfo.cs trouvez la section qui ressemble a celle-ci :

Code:
namespace Server.Items
{
  public enum CraftResource
  {
    None = 0,
    Iron = 1,
    DullCopper,
    ShadowIron,
    Copper,
    Bronze,
    Sandstone,


Editez cette liste en fonction des métaux désirés et ce, tout en respectant la mise en page. Continuez de faire défiler le script jusqu'a cette section:

Code:
public static readonly CraftAttributeInfo Blank, DullCopper, ShadowIron, Copper, Bronze, Sandstone,

Insérez-y vos métaux...
Un peu plus bas vous allez trouvez ceci:

Code:
static CraftAttributeInfo()
    {
        Blank = new CraftAttributeInfo();

        CraftAttributeInfo dullCopper = DullCopper = new CraftAttributeInfo();

        dullCopper.ArmorPhysicalResist = 6;
        dullCopper.ArmorDurability = 50;
        dullCopper.ArmorLowerRequirements = 20;
        dullCopper.WeaponDurability = 100;
        dullCopper.WeaponLowerRequirements = 50;

Chacun de vos métaux doit être défini comme ci-dessus sinon il sera forger avec les attributs du fer,servez vous du bloc d'information placez au dessus de ces section pour éditez les propriétés selon votre bon plaisir.

Plus bas dans le script vous allez trouvez ce gros bloc:

Code:
public class CraftResources
  {
    private static CraftResourceInfo[] m_MetalInfo = new CraftResourceInfo[]
        {
          new CraftResourceInfo( 0x000, 1053109, "Iron",        CraftAttributeInfo.Blank,  CraftResource.Iron,        typeof( IronIngot ),      typeof( IronOre ),      typeof( Granite ) ),
          new CraftResourceInfo( 0x973, 1053108, "Dull Copper",      CraftAttributeInfo.DullCopper,  CraftResource.DullCopper,      typeof( DullCopperIngot ),  typeof( DullCopperOre ),  typeof( DullCopperGranite ) ),
          new CraftResourceInfo( 0x966, 1053107, "Shadow Iron",      CraftAttributeInfo.ShadowIron,  CraftResource.ShadowIron,      typeof( ShadowIronIngot ),  typeof( ShadowIronOre ),  typeof( ShadowIronGranite ) ),
          new CraftResourceInfo( 0x96D, 1053106, "Copper",      CraftAttributeInfo.Copper,  CraftResource.Copper,        typeof( CopperIngot ),      typeof( CopperOre ),      typeof( CopperGranite ) ),
          new CraftResourceInfo( 0x972, 1053105, "Bronze",      CraftAttributeInfo.Bronze,  CraftResource.Bronze,        typeof( BronzeIngot ),      typeof( BronzeOre ),      typeof( BronzeGranite ) ),
          new CraftResourceInfo( 0x8AB, 0, "Sandstone",      CraftAttributeInfo.Sandstone,  CraftResource.Sandstone,      typeof( SandstoneIngot ),  typeof( SandstoneOre ),      typeof( SandstoneGranite ) ),


Decomposons une partie:
Code:
new CraftResourceInfo( 0x96D, 1053106, "Copper",      CraftAttributeInfo.Copper,  CraftResource.Copper,        typeof( CopperIngot ),      typeof( CopperOre ),      typeof( CopperGranite ) ),

Cela donne :"nouveaux type de ressource ( couleur, CliLocName, Nom normal, référence attribut, référence ressource, TypeLingot, TypeMinerai, TypeGranite)"

Vous devez rajouter une ligne semblable pour chaque métal,et utilisez 0 pour le cliloc name pour que le serveur utilise le nom normal à la place.

Plus bas vous trouverez:
Code:
public static CraftResourceType GetType( CraftResource resource )
    {
        if ( resource >= CraftResource.Iron && resource <= CraftResource.Valorite )
          return CraftResourceType.Metal;

Vous devez remplacer "Valorite" par le dernier de vos métaux

Ensuite:
Code:
public static CraftResource GetFromOreInfo( OreInfo info )
    {
        if ( info.Name.IndexOf( "Spined" ) >= 0 )
          return CraftResource.SpinedLeather;
        else if ( info.Name.IndexOf( "Horned" ) >= 0 )
          return CraftResource.HornedLeather;
        else if ( info.Name.IndexOf( "Barbed" ) >= 0 )
          return CraftResource.BarbedLeather;
        else if ( info.Name.IndexOf( "Leather" ) >= 0 )
          return CraftResource.RegularLeather;

        if ( info.Level == 0 )
          return CraftResource.Iron;
        else if ( info.Level == 1 )
          return CraftResource.DullCopper;
        else if ( info.Level == 2 )
          return CraftResource.ShadowIron;
        else if ( info.Level == 3 )
          return CraftResource.Copper;
        else if ( info.Level == 4 )
          return CraftResource.Bronze;
        else if ( info.Level == 5 )
          return CraftResource.Sandstone;
        else if ( info.Level == 6 )

Placez vos métaux ici en respectant l'ordre et la mise en page
Et enfin:

Code:
// NOTE: This class is only for compatability with very old RunUO versions.
  // No changes to it should be required for custom resources.
  public class OreInfo
  {
    public static readonly OreInfo Iron      = new OreInfo( 0, 0x000, "Iron" );
    public static readonly OreInfo DullCopper  = new OreInfo( 1, 0x973, "Dull Copper" );
    public static readonly OreInfo ShadowIron  = new OreInfo( 2, 0x966, "Shadow Iron" );
    public static readonly OreInfo Copper      = new OreInfo( 3, 0x96D, "Copper" );
    public static readonly OreInfo Bronze      = new OreInfo( 4, 0x972, "Bronze" );
    public static readonly OreInfo Sandstone  = new OreInfo( 5, 0x8A5, "Sandstone" );

Idem qu'avant,placez vos métaux dans l'ordre et en respectant la mise en page.

Sauvegardez votre script, on passe au suivant Rolling Eyes

3.Ouvrez le Mining.cs dans \script\engines\harvest\ et rendez vous a cette section :
Code:
res = new HarvestResource[]
          {
              new HarvestResource( 00.0, 00.0, 100.0, 1007072, typeof( IronOre ),      typeof( Granite ) ),//0
              new HarvestResource( 30.0, 25.0, 105.0, 1007073, typeof( DullCopperOre ),  typeof( DullCopperGranite ),      typeof( DullCopperElemental ) ),//1
              new HarvestResource( 35.0, 30.0, 110.0, 1007074, typeof( ShadowIronOre ),  typeof( ShadowIronGranite ),      typeof( ShadowIronElemental ) ),//2
              new HarvestResource( 40.0, 35.0, 115.0, 1007075, typeof( CopperOre ),      typeof( CopperGranite ),      typeof( CopperElemental ) ),//3
              new HarvestResource( 42.0, 40.0, 120.0, 1007076, typeof( BronzeOre ),      typeof( BronzeGranite ),      typeof( BronzeElemental ) ),//4
              new new HarvestResource( 44.0, 45.0, 125.0, "you dig some sandstone ore and put it in your backpack", typeof( SandstoneOre ),  typeof( SandstoneGranite ),      typeof( SandstoneElemental ) ),//5

En traduit ca donne:
Ressourced'extraction=(skill neccessaire pour trouvez,skill min pour reussir,skill max pour reussir,message de reussite,type de minerai, type de granite, monstre associer)

Creer une ligne similaire pour chacun de vos métaux.

La partie suivante concerne les pourcentage de trouver les minerais :

Code:
veins = new HarvestVein[]
          {
              new HarvestVein( 16.0, res[0], null  ), // Iron
              new HarvestVein( 7.0, res[1], res[0] ), // Dull Copper
              new HarvestVein( 6.0, res[2], res[0] ), // Shadow Iron
              new HarvestVein( 5.0, res[3], res[0] ), // Copper
              new HarvestVein( 5.0, res[4], res[0] ), // Bronze
              new HarvestVein( 4.5, res[5], res[0] ), // Sandstone

Rajoutez vos metaux en vous assurant qu'au final le pourcentage ne depasse pas 100.
Sauvegardez le tout. La visite continue.

4. Ouvrez le Ore.cs dans \scripts\items\resources\blacksmithing\
Code:
case 0:
          {
              OreInfo info;

              switch ( reader.ReadInt() )
              {
                case 0: info = OreInfo.Iron; break;
                case 1: info = OreInfo.DullCopper; break;
                case 2: info = OreInfo.ShadowIron; break;
                case 3: info = OreInfo.Copper; break;
                case 4: info = OreInfo.Bronze; break;
                case 5: info = OreInfo.Sandstone; break;


Une fois encore, rajoutez vos métaux en respectant l'ordre et la mise en page

Ensuite trouvez cette section:
Code:
public override int LabelNumber
    {
        get
        {
          if ( m_Resource >= CraftResource.DullCopper && m_Resource <= CraftResource.Valorite )
              return 1042845 + (int)(m_Resource - CraftResource.DullCopper);

Remplacez "Valorite" par votre dernier metal

Code:
if ( targeted.GetType().IsDefined( typeof( ForgeAttribute ), false ) )
          {
              double maxSkill = 50 * ( 1 + ( (double)CraftResources.GetIndex( m_Ore.Resource ) / 32 ) );
              double minSkill = maxSkill - 50;

Voici la partie qui calcule les chance de réussite des fontes, modifier les parametre jusqu'a obtention du taux de reussite desiré.

La section suivante definit vos minerais :
Code:
public class DullCopperOre : BaseOre
  {
    [Constructable]
    public DullCopperOre() : this( 1 )
    {
    }

    [Constructable]
    public DullCopperOre( int amount ) : base( CraftResource.DullCopper, amount )
    {
    }

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

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

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

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

        int version = reader.ReadInt();
    }

    public override Item Dupe( int amount )
    {
        return base.Dupe( new DullCopperOre( amount ), amount );
    }

    public override BaseIngot GetIngot()
    {
        return new DullCopperIngot();
    }

Il vous suffit de copier coller cette section en remplacant a chaque fois le dullcopper par le minerai desiré .
Vous sauvegardez.

5.ouvrez le Ingots.cs dans \scripts\items\resources\blacksmithing\
Ce fichier est similaire au Ore.cs ,refaite la meme chose que pour celui-ci pour definir les lingots.

6.ouvrez le Granite.cs dans \scripts\items\resources\masonry
Idem que pour le Ore.cs

7.Elementaires lié a vos metaux

Ouvrez le \scripts\mobiles\monster\Ore elementals\ et copier coller un des elementaire deja present, editez le selon votre inspiration...

8.le menu BS
Code:
        // Add every material you want the player to be able to chose from
        // This will overide the overidable material
        AddSubRes( typeof( IronIngot ),        "IRON", 00.0, 1044267 );
        AddSubRes( typeof( DullCopperIngot ),      "DULLCOPPER", 20.0, 1044268 );
        AddSubRes( typeof( ShadowIronIngot ),      "SHADOWIRON", 35.0, 1044268 );
        AddSubRes( typeof( CopperIngot ),      "COPPER", 40.0, 1044268 );
        AddSubRes( typeof( BronzeIngot ),      "BRONZE", 45.0, 1044268 );
        AddSubRes( typeof( SandstoneIngot ),      "SANDSTONE", 50.0, 1044268 );

Rajoutez vos métaux en respectant l'ordre et la mise en page.

Voila à présent tout devrait se compiler normalement et votre jeu sera agrémenter d'un nouveau metal.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://uoclassic.free.fr/
elferades



Messages : 3
Date d'inscription : 14/02/2009

MessageSujet: Re: Ajout de nouveaux métaux   Sam 14 Fév - 17:43

Merci jbloquer sur le changement de nom dans le menu blacksmith ^^'
( jtraduit tous les metaux de bases la deja )

petite precision pour les nouveau comme moi :p

Citation :
// Add every material you want the player to be able to chose from
// This will overide the overidable material
AddSubRes( typeof( IronIngot ), "IRON", 00.0, 1044267 );
AddSubRes( typeof( DullCopperIngot ), "DULLCOPPER", 20.0, 1044268 );
AddSubRes( typeof( ShadowIronIngot ), "SHADOWIRON", 35.0, 1044268 );
AddSubRes( typeof( CopperIngot ), "COPPER", 40.0, 1044268 );
AddSubRes( typeof( BronzeIngot ), "BRONZE", 45.0, 1044268 );
AddSubRes( typeof( SandstoneIngot ), "SANDSTONE", 50.0, 1044268 );

prenon exemple une ligne :

Citation :
AddSubRes( typeof( IronIngot ), "IRON", 00.0, 1044267 );

Le 00.0 apres "IRON" correspond au skills necessaire pour forger ce metal Smile

mais je voit toujours pas a quoi sert le chiffre d'apres :s

( si certain veulent la traduction des metaux mp moi )


Pour autre chose : Y a pas quelque chose a modifier dans BaseArmor et Baseweapons pour les crafts ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Scriptiz

avatar

Messages : 101
Date d'inscription : 02/09/2008
Localisation : Belgium

MessageSujet: Re: Ajout de nouveaux métaux   Sam 21 Fév - 13:18

elferades a écrit:
Code:
AddSubRes( typeof( IronIngot ),        "IRON", 00.0, 1044267 );
]

Le 00.0 apres "IRON" correspond au skills necessaire pour forger ce metal Smile

mais je voit toujours pas a quoi sert le chiffre d'apres :s
Voici les trois signatures de la méthode AddSubRes (dans la doc de RunUO) :
Code:
void AddSubRes( Type type, int name, double reqSkill, object message )
void AddSubRes( Type type, string name, double reqSkill, object message )
void AddSubRes( Type type, int name, double reqSkill, int genericName, object message )
Tu vois qu'il s'agit donc de object message

elferades a écrit:
Pour autre chose : Y a pas quelque chose a modifier dans BaseArmor et Baseweapons pour les crafts ?
Probablement, ce tuto date de RunUO1 et il y avait déjà quelques trucs à adapter si je me souviens bien. Si tu souhaite l'adapter à RunUO2 c'est sympa de le poster ici Smile

Si tu as besoin de plus de détails n'hésite pas.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://uoclassic.free.fr/
Plume



Messages : 37
Date d'inscription : 05/09/2008

MessageSujet: Re: Ajout de nouveaux métaux   Jeu 26 Fév - 17:34

La meilleure solution est de suivre un métal dans son projet RunUO (si on utilise Visual C# express) et connaître ainsi les fichiers à modifier.

J'en ferai tout de même une liste une fois rendu à l'école.

Quant à ton dernier chiffre, il s'agit d'une entrée cliloc. Pour la voir, il te faudra ouvrir ce dernier à l'aide d'un outil comme cliloc editor ou UO Localization
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Ajout de nouveaux métaux   

Revenir en haut Aller en bas
 
Ajout de nouveaux métaux
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Ajout de nouveaux serveurs
» Ajout de l'icône de sujet sur la page "Voir les nouveaux messages depuis votre dernière visite"
» Bienvenue à tous les nouveaux membres
» Ajout carte sur carte mémoire SD
» Les nouveaux Forfaits "Sensation" de Bouygues Telecom sont en ligne !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RunUO-FR :: Tutoriaux Scripts :: Tutoriaux RunUO-
Sauter vers: