| | Ajout de nouveaux métaux | |
| | Auteur | Message |
---|
Scriptiz
Messages : 102 Date d'inscription : 02/09/2008 Localisation : Belgium
| Sujet: 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 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\masonryIdem que pour le Ore.cs 7.Elementaires lié a vos metauxOuvrez 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. | |
| | | elferades
Messages : 3 Date d'inscription : 14/02/2009
| Sujet: 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 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 ? | |
| | | Scriptiz
Messages : 102 Date d'inscription : 02/09/2008 Localisation : Belgium
| Sujet: 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
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 Si tu as besoin de plus de détails n'hésite pas. | |
| | | Plume
Messages : 37 Date d'inscription : 05/09/2008
| Sujet: 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 | |
| | | Contenu sponsorisé
| Sujet: Re: Ajout de nouveaux métaux | |
| |
| | | | Ajout de nouveaux métaux | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |