| QUOTE |
| Je sais plus ou j'ai trouvé sa met sa ma bcp aidé au début . ( je crois que c'est Ren qui la documenté ). using System; using Server.Network; using Server.Items; //on va creer un nouvel item, il sera creé dans l'espace de nom Server.Item (la ou sont placés tous les items) namespace Server.Items { //la ligne suivante entre crochet decris les deux gumps de l'item (image de l'item dans ses deux orientation possible quand il est au sol) (ce sont les ID en Hexadecimal de l'item) //on peut les trouver en utilisant InsideUO dans la categorie gumps [FlipableAttribute( 0x1401, 0x1400 )] //ici on declare l'objet proprement dit : un KryssEscri. les ":" apres KryssEscri indique que cet item aura pour base un Item de type BaseSword //Ceci permet de ne pas avoir a retapper plusieurs lignes de codes identiques pour toutes les epées par exemple //En effet l'item KryssEscri possedera toutes les proprietés de l'objet BaseSword public class KryssEscri : BaseSword { //La ligne suivant indique que l'item sera fabricable ou invocable [Constructable] //maintenant on arrive a la creation de l'objet (fonction appelée constructeur, juste pour les connaisseurs) //public Kryss() signifie qu'on pourra creer directement l'item en jeu par la commande .add KryssEscri //base ( ........) correspond a tous les parametres qu'il faut donner initialiser certaines variables de l'item de base //on va les numeroter de 1 a 11. //1 (3)-> dommages minimums de l'arme //2 (28)-> dommages maximums de l'arme //3 (53)-> vitesse de frappe de l'arme //4 (0x23C) -> ID du son quand la cible est touchée //5 (0238) -> Id du son quand la cible est ratée //6 (1) -> Rayon maximum d'action de frappe //7 (SkillName.Fencing) -> Skill solicitée //8 (WeaponType.Piercing) -> Type d'arme (ici arme perforante) //9 (WeaponAnimation.Pierce1H) -> type d'animation de l'arme //10 (0x1401) -> ID de l'item //11 (Layer.OneHanded) -> utilisation a une seule main public KryssEscri() : base( 9, 29, 53, 0x23C, 0x238, 1, SkillName.Fencing, WeaponType.Piercing, WeaponAnimation.Pierce1H, 0x1401, Layer.OneHanded ) { //ici on donne un poids a l'arme disons 3 Weight = 3; //on lui donne un nom Name = "Lame du Grand Escrimeur"; //choix de la couleur Hue = 0x84D; } //Ici on creer un item unique avec son numero de serie unique public KryssEscri( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); // version } //ici on libere le numero de serie assigné a l'item quand on le retire du jeu (pas sur de moi mais je pense) public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } //Toutes les fonctions de ce type, pas besoin d'etre affolé, suffit de les reprendre pour tous les scripts crees sans se poser de questions. //fin de la "serialization" de l'item //Ici on va effectuer des actions quand le perso va prendre le kryss //la focntion recoit comme parametre le perso complet qui aura pour nom "from" public override bool OnEquip(Mobile from) { //from.Skills veut dire que l'on va aller voir les propriétés d'une skill //SkillName.Fencing c'est bah la skill Fencing //BaseFixedPoint c'est la valeur de la skill //+= 150 veut dire qu'on lui ajoute 15 ! from.Skills[SkillName.Fencing].BaseFixedPoint += 150; //la on envoye un message pas besoin de details from.SendMessage("Tu porte une Lame du Grand Ecrimeur"); //la on renvoie vrai, mais on s'en fiche, la fonction doit renvoyer vrai ou faux alors peut importe dans notre cas return true; } //Ici on va effectuer des actions quand le perso va enlever le kryss //la focntion recoit comme parametre le perso complet qui aura pour nom "from" public override bool OnDragLift(Mobile from) { //la fonction OnUnequip n'existe pas alors on contourne le probleme //quand l'item est dans la main il a comme particularité d'avoir comme coordonées (0,0,0) //alors on cree une variable de reference avec ces coordonnées Point3D handLocation = new Point3D(0,0,0); //Si la position de l'objet sur la carte (Location) est la meme que celle de la main (handLocation) if(Location == handLocation) { //alors on baisse la skill Fencing de 15 de la meme facon qu'on la augmenté from.Skills[SkillName.Fencing].BaseFixedPoint -= 150; //on envoye un message en plus from.SendMessage("Tu ne sens meme pas que tu laches cette arme"); } return true; } //ici on va donner les restrictions pour equiper le perso //la fonction canEquip renvoie "faux" si le perso ne peut pas porter le kryss et "vrai" s'il peut //elle recoit comme parametre le perso complet qui aura pour nom "from" public override bool CanEquip(Mobile from) { //on test la force du perso if(from.Str < 10) { //Si c'est inferieur a 10, on empecher de porter le kryss from.SendMessage("Cette arme est trop lourde pour vous!"); return false; } else //si c'est superieur on autorise return true; } } } |