RunUO-FR
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
RunUO-FR

Forum de support pour RunUO en français.
 
AccueilAccueil  Dernières imagesDernières images  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -39%
Ordinateur portable ASUS Chromebook Vibe CX34 Flip
Voir le deal
399 €

 

 [Réglé]Ajouter une description sous le nom d'un item

Aller en bas 
4 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedVen 12 Sep - 23:00

J'ai décidé de le mettre en commande. mais j'obtiens cette erreur bidon:

J'essaie d'ajouter une description, en dessous du nom. Mais ça marche, est-ce que ça va toujours ajouter une description de plus? ou remplacer l'ancienne? (ce serait mieux la deuxième idée)

[Réglé]Ajouter une description sous le nom d'un item Erreursxw0

Code:
using System;
using Server;
using System.Reflection;
using Server.Targeting;
using Server.Prompts;

namespace Server.Items
{

    //pas quand c'est locker
    //Quand c'est proche
    //renommage sur le runebook
   public class DescriptionCommandHandlers
   {

      public static void Initialize()
      {
         Server.Commands.Register( "Description", AccessLevel.Player, new CommandEventHandler( Description_OnCommand ) );
      }

      [Usage( "Description" )]
      [Description( "Permet de faire la description d'un objet" )]
        public static void Description_OnCommand(CommandEventArgs e)
      {
            e.Mobile.Target = new DescriptionTarget();
      }

      public class DescriptionTarget : Target
      {
            public DescriptionTarget(): base(-1, false, TargetFlags.None)
         {
         }

            public bool m_description = true;

         protected override void OnTarget( Mobile from, object targeted )
         {
            if ( targeted is Item )
            {
               Item item = (Item)targeted;
                    ObjectPropertyList descr = item.ObjectPropertyList;
                    from.SendMessage("Entrez la description que vous souhaitez donner à l'objet. Sinon appuyez sur échapper (ESC).");
                    from.Prompt = new MyPrompt(item, descr);

            }
                else
                {
                    from.SendMessage("Vous ne pouvez pas décrire ça! Franchement!");
                }
         }
      }

        private class MyPrompt : Prompt
        {
            private Item itemm;
            private ObjectPropertyList desc;

            public MyPrompt(Item item, ObjectPropertyList descr)
            {
                itemm = item;
                desc = descr;
            }

            public override void OnResponse(Mobile from, string text)
            {
                itemm.Name = text;
                from.SendMessage("La description a été modifiée");
                new AddNameProperty(desc, text);
            }

            //et pour gérer la sortie par la touche del
            public override void OnCancel(Mobile from)
            {
                from.SendMessage("Vous ne décrivez rien! Ha! Ha!");
            }
        }

        public override void AddNameProperty ( ObjectPropertyList list, string text )
        {
            list.Add(text);
            base.AddNameProperty;
       }
    }
}


Dernière édition par Pantoute le Lun 22 Sep - 2:48, édité 1 fois
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedSam 13 Sep - 6:57

Code:
base.AddNameProperty;
Pas de parenthèses...
Tu dois faire :
Code:
base.AddNameProperty( list );

Mais surtout, ton erreur dit que tu tentes d'overrider une méthode virtual qui n'existe pas. Et AddNameProperty n'existe pas, en tout cas, celle que tu défini avec deux arguments.
Celle qui existe ne prend que ObjectPropertyList en argument.

Donc:

  • Déclare une variable public de type string appartenant à la classe DescriptionHandlerMachin
  • A laquelle tu alloues la valeur dans Prompt/OnResponse
  • Valeur que tu récupères alors dans AddNameProperty, sans devoir la passer en argument.


Et, inutile d'appeler toi même AddNamProperty, ce sera fait à chaque fois qu'un client demandera au serveur le nom de l'objet, tu n'as que l'override à faire.
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedSam 13 Sep - 21:52

Ça marche pas... j'ai du mal faire un truc encore Sad

Citation :
Et, inutile d'appeler toi même AddNamProperty, ce sera fait à chaque fois qu'un client demandera au serveur le nom de l'objet, tu n'as que l'override à faire.

et ça je comprend pas ce que tu veux dire Razz

Code:
using System;
using Server;
using System.Reflection;
using Server.Targeting;
using Server.Prompts;

namespace Server.Items
{

    //pas quand c'est locker
    //Quand c'est proche
    //renommage sur le runebook
   public class DescriptionCommandHandlers
   {

      public static void Initialize()
      {
         Server.Commands.Register( "Description", AccessLevel.Player, new CommandEventHandler( Description_OnCommand ) );
      }

      [Usage( "Description" )]
      [Description( "Permet de faire la description d'un objet" )]
        public static void Description_OnCommand(CommandEventArgs e)
      {
            e.Mobile.Target = new DescriptionTarget();
      }

      public class DescriptionTarget : Target
      {
            public DescriptionTarget(): base(-1, false, TargetFlags.None)
         {
         }

            public bool m_description = true;

         protected override void OnTarget( Mobile from, object targeted )
         {
            if ( targeted is Item )
            {
               Item item = (Item)targeted;
                    ObjectPropertyList descr = item.ObjectPropertyList;
                    from.SendMessage("Entrez la description que vous souhaitez donner à l'objet. Sinon appuyez sur échapper (ESC).");
                    from.Prompt = new MyPrompt(item, descr);

            }
                else
                {
                    from.SendMessage("Vous ne pouvez pas décrire ça! Franchement!");
                }
         }
      }

        private class MyPrompt : Prompt
        {
            private Item itemm;
            private ObjectPropertyList desc;

            public MyPrompt(Item item, ObjectPropertyList descr)
            {
                itemm = item;
                desc = descr;
            }

            public override void OnResponse(Mobile from, string text)
            {
                http://itemm.Name = text;
                DescriptionHandlerMachin.TEXTE = text;
                from.SendMessage("La description a été modifiée");
                new AddNameProperty(desc);
            }

            //et pour gérer la sortie par la touche del
            public override void OnCancel(Mobile from)
            {
                from.SendMessage("Vous ne décrivez rien! Ha! Ha!");
            }
        }

        public class DescriptionHandlerMachin
        {
            public string TEXTE;
       }

        public override void AddNameProperty ( ObjectPropertyList list )
        {
            list.Add(TEXTE);
            base.AddNameProperty(list);
       }
    }
}
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedSam 13 Sep - 23:38

Dans ce post, tu demandais pour le prompt, alors pour la classe MyPrompt :
Ne demande que Item en argument. Ca suffira. Si tu as besoin de son ObjectPropertyList par la suite, tu le demandera à partir d'Item.

Ensuite, on a vu que la string, tu l'obtiens dans OnResponse.

Maintenant, le souci d'ajouter une description, c'est une autre histoire. Et oublie ce que je t'ai dis précedement à ce sujet, c'est que des conneries, jma trompé^^.

Item déclare des méthodes qui gèrent lenom, dont AddNameProperty, et là c'est vrai qu'un list.Add(text); suffirait.

MAIS, ton code est une commande, si de cette commande on appelle la méthode AddNameProperty de l'objet, c'est bien joli, mais ça ne sert à rien.
Car lorsque le client voudra afficher le nom d'un objet en jeu, il va faire une requête au serveur, qui pour y répondre appelera (entre autres) AddNameProperty() de l'objet en question.

C'est donc DANS la méthode de l'objet qu'il faudrait intervenir...

Bref, là comme ça, et sous réserve que je dise pas n'importe quoi, la meilleure solution pour ce code serait de changer directement le nom, plutot que d'y ajouter une ligne.

Donc dans OnResponse de ton prompt, faire:
Code:
string newname = itemm.Name + " " +text;
itemm.Name = newname;

Enfin essaye Wink
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedDim 14 Sep - 18:32

Est-ce que je pourrais faire en sorte d'ajouter une description en dessous du nom avec une autre façon qu'une commande? (comme un autre item, etc)?

Sinon... je vais m'en tenir à ce que tu m'as dis.

edit: Est-ce que tu penses qu'on pourrait en venir à quelque chose en modifiant seulement le fichier Item ou BaseItem, je sais plus trop, au lieu de chaque item pour les description?
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedDim 14 Sep - 22:20

J'ai essayé de le faire à un seul item pour voir ce que ça allait faire (sur les description sous le nom). Quelle serait la manière de procéder?

Car, je crois que sur le shard où je suis, tous les items reposent sur le fichier différent que Item, le core. Donc j'aurais juste à ajouter les lignes de l'items que je test et ça pourrait marcher.

Mais bon... Quelle serait la manière de procéder si j'ajoute une description sous le nom d'un item? Il y a des bouts où je sais plus quoi faire...

Code:
using System;
using Server;
using System.Reflection;
using Server.Targeting;
using Server.Prompts;

namespace Server.Items
{
   public class DescriptionCommandHandlers
   {

      public static void Initialize()
      {
         Server.Commands.Register( "Description", AccessLevel.Player, new CommandEventHandler( Description_OnCommand ) );
      }

      [Usage( "Description" )]
      [Description( "Permet de faire la description d'un objet" )]
        public static void Description_OnCommand(CommandEventArgs e)
      {
            e.Mobile.Target = new DescriptionTarget();
      }

      public class DescriptionTarget : Target
      {
            public DescriptionTarget(): base(-1, false, TargetFlags.None)
         {
         }

            public bool m_description = true;

         protected override void OnTarget( Mobile from, object targeted )
         {
            if ( targeted is Item )
            {
               Item item = (Item)targeted;
                    from.SendMessage("Entrez la description que vous souhaitez donner à l'objet. Sinon appuyez sur échapper (ESC).");
                    from.Prompt = new MyPrompt(item);

            }
                else
                {
                    from.SendMessage("Vous ne pouvez pas décrire ça! Franchement!");
                }
         }
      }

        private class MyPrompt : Prompt
        {
            private Item itemm;

            public MyPrompt(Item item)
            {
                itemm = item;
            }

            public override void OnResponse(Mobile from, string text)
            {
                from.SendMessage("La description a été modifiée");
                string newname = itemm.Name + " " + text;
                itemm.Description1 = newname;
            }

            //et pour gérer la sortie par la touche del
            public override void OnCancel(Mobile from)
            {
                from.SendMessage("Vous ne décrivez rien! Ha! Ha!");
            }
        }
    }
}

Code:
    [Furniture]
    [Flipable(0xB3F, 0xB40, 0x0B3D, 0x0B3E)]
    public class Comptoire : Item
    {
        private Description1 m_description1;

        [CommandProperty(AccessLevel.Player)]
        public Description1 m_description1
        {
            get { return m_description1; }
            set { }
        }

        public override void AddNameProperties(ObjectPropertyList list)
        {
            base.AddNameProperties(list);
        }

        [Constructable]
        public Comptoire(): base(0x0B3F)
        {
            Weight = 1.0;
            Name = "Comptoire";
        }

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

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

            writer.Write((int)0);
        }

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

            int version = reader.ReadInt();

            if (Weight == 4.0)
                Weight = 1.0;
        }
    }
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedDim 14 Sep - 22:37

Effectivement, tu as bien compris, le nom et tout ce qui s'y rapporte est géré à chaque affichage grace à des méthodes d'Item et les overrides suivantes.

La seule façon qu'on ait d'ajouter quelquechose, c'est de coder dans ces méthodes.

Et si effectivement, on veut pouvoir jouer sur tous les types dérivant d'Item, il nous faut coder dans Item, mais c'est un fichier source, et il faudra recompiler le coeur, c'est facile, mais bon...

Sinon il faut coder poir chaque branche, BaseWeapon, BaseArmor, etc... sans compter les classes qui dérivent directement d'Item...

En fait, il faudrait définir dans les classes Item :

public string AjoutName; et la sérialiser

Puis un if(AjoutName != null) list.Add(AjoutName); dans AddNameProperties

Il suffirait alors dans ta commande de donner la nouvzelle valeur à AjoutName...
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedDim 14 Sep - 22:57

D'accord, mais ça me dit pas comment faire avec un seul item pour commencer. Et comme j'ai dit, je crois que sur le serveur ou je suis, on a un espèce de "dérivé" de Item auquel tout les item se rattachent sans pour autant modifer le core. Je dis ça, mais j'En suis pas certain. Peu importe, j'aimerais savoir quoi faire. Parce que le code que je t'ai montrer ci-haut... ben ça marche pas Razz
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Blunt

Blunt


Messages : 9
Date d'inscription : 05/09/2008
Age : 32
Localisation : Repentigny

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedLun 15 Sep - 5:31

Pantoute a écrit:
Parce que le code que je t'ai montrer ci-haut... ben ça marche pas Razz

Qu'est-ce que ça fait? Le nom change juste pas? ou bien..? confused
Revenir en haut Aller en bas
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedLun 15 Sep - 13:19

Code:

public string Description; // à sérialiser bien sûr
      
public override void AddNameProperty( ObjectPropertyList list )
{
      base.AddNameProperty(list);//pour faire comme d'hab
         
      if(Description != null)
         list.Add(Description);
}

Voilà ce qu'il faut mettre dans une classe qui ne fait pas déjà d'override sur AddNameProperty. Ta commande doit donc, après avoir récupéré la valeur de Prompt, la transmettre à la string Description de l'objet ciblé.

MAIS du coup, l'objet ciblé par ta commande doit être casté dans le type dui déclare cette override.

En gros, si tu ne mets pas cette modif directement dans Item, mais dans différentes classes, il te faudra d'abord tester l'appartenance de ton objet ciblé à l'une de ces classes, afin de povoir faire ton cast.

Donc si tu met cette override de AddNameProperty dans la class Food, dans la class BaseWeapon, et dans la classe BasePotion, tu devra faire, dans ta commande:

Code:
if(targeted is BaseWeapon)
{
BaseWeapon bw = (BaseWeapon)targeted;
bw.Description = text;
}
else if(targetd is BasePotion)
{
BasePotion bp = (BasePotion)targeted;
bp.Description = text;
}
else if(targeted is Food)
{
Food f = (Food)targeted;
f.Description = text;
}
else from.SendMessage("Impossible de décrire celà);

Donc tu vois bien, l'idéal serait de mettre directement dans Item, alors si les scripts de Crépuscule contienent un BaseItem, tant mieux Wink
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedLun 15 Sep - 15:27

Merci je vais essayer. Oui j'ai demandé, et il semble que tout les Items passent par CrepusculeItem avant d'aller, disons, dans Baseweapon. Ça va être fort utile.





EDIT: Ton dernier bout de code, est-ce que ça va dans le OnTarget ou dans le OnResponse?

Si c'est dans le prompt, je dois mettre l'item en argument pour que OnResponse le voit?
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMar 16 Sep - 2:03

Bon... pour une raison bizzarre, ça marche partiellement:

-Le nouveau nom n'apparait que quand je déplace au moins une fois l'objet.

-Ça n'ajoute rien, ça ne fait que changer le nom. Rien n'apparait en dessous. C'est le nom qui est changé.

Aussi, comment je pourrais référé quelquechose avec "from" dans le DescriptionTarget, mais avant le OnTarget.
Par exemple, j'aimerais envoyer un message à from lorsqu'il a envoyé la commande, et pas encore choisi sa target. Un message comme "Que voulez-vous décrire"

Merci

Code:
using System;
using Server;
using System.Reflection;
using Server.Targeting;
using Server.Prompts;

namespace Server.Items
{

    //pas quand c'est locker
    //Quand c'est proche
    //renommage sur le runebook
    //quand c'est dans le backpack seulement finalement
   public class DescriptionCommandHandlers
   {

      public static void Initialize()
      {
         Server.Commands.Register( "Description", AccessLevel.Player, new CommandEventHandler( Description_OnCommand ) );
      }

      [Usage( "Description" )]
      [Description( "Permet de faire la description d'un objet" )]
        public static void Description_OnCommand(CommandEventArgs e)
      {
            e.Mobile.Target = new DescriptionTarget();
      }

      public class DescriptionTarget : Target
      {
            public DescriptionTarget(): base(-1, false, TargetFlags.None)
         {
         }

            public bool m_description = true;

         protected override void OnTarget( Mobile from, object targeted )
         {
            if ( targeted is Item )
            {
               Item item = (Item)targeted;
                    from.SendMessage("Entrez la description que vous souhaitez donner à l'objet. Sinon appuyez sur échapper (ESC).");
                    from.Prompt = new MyPrompt(item);

            }
                else
                {
                    from.SendMessage("Vous ne pouvez pas décrire ça! Franchement!");
                }
         }
      }

        private class MyPrompt : Prompt
        {
            private Item itemm;

            public MyPrompt(Item item)
            {
                itemm = item;
            }

            public override void OnResponse(Mobile from, string text)
            {
                if (itemm is Comptoire)
                {
                    from.SendMessage("La description a été modifiée");
                    Comptoire bw = (Comptoire)itemm;
                    bw.Description = text;
                    itemm = null;
                }

                else from.SendMessage("Impossible de décrire celà");
            }

            //et pour gérer la sortie par la touche del
            public override void OnCancel(Mobile from)
            {
                from.SendMessage("Vous ne décrivez rien! Ha! Ha!");
            }
        }
    }
}

Mon Item "test"

Code:
    [Furniture]
    [Flipable(0xB3F, 0xB40, 0x0B3D, 0x0B3E)]
    public class Comptoire : Item
    {

        public string Description; // à sérialiser bien sûr////////////////////////////////////////////////

        public override void AddNameProperty(ObjectPropertyList list)
        {
            base.AddNameProperty(list);

            if (Description != null)
                list.Add(Description);
        }

        [Constructable]
        public Comptoire(): base(0x0B3F)
        {
            Weight = 1.0;
            Name = "Comptoire";
        }

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

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

            writer.Write((int)0);
        }

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

            int version = reader.ReadInt();

            if (Weight == 4.0)
                Weight = 1.0;
        }
    }

EDIT IMPORTANT:

J'ai découvert que quand j'avais un nom personalisé comme dans mon script de comptoir plus haut, le script fait juste changer le nom au lieu de l'écrire en dessous.
Tandis que si je lui laisse son nom "de base" Il l'écrit en dessous. Mais il y a toujours le bug qu je dois le déplacer avant que ça paraisse.

Il y aurait moyen de faire en sorte que je puisse garder mes nom personnalisés ET ajouter le texte SOUS le nom? Et de faire que ça le fasse immédiatement une fois le nom tappé. Et non quand je le déplace.
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMar 16 Sep - 7:14

Citation :
comment je pourrais référé quelquechose avec "from" dans le DescriptionTarget, mais avant le OnTarget.

Code:

[Usage( "Description" )]
      [Description( "Permet de faire la description d'un objet" )]
        public static void Description_OnCommand(CommandEventArgs e)
      {
e.Mobile.SendMessage("******************************************");           
e.Mobile.Target = new DescriptionTarget();
      }


Pour le reste faut que je regarde de plus près.
Revenir en haut Aller en bas
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMar 16 Sep - 14:18

Voici la props Name déclarée par Item:
Code:

[CommandProperty( AccessLevel.GameMaster )]
      public string Name
      {
         get
         {
            CompactInfo info = LookupCompactInfo();

            if ( info != null && info.m_Name != null )
               return info.m_Name;

            return this.DefaultName;
         }
         set
         {
            if ( value == null || value != DefaultName )
            {
               CompactInfo info = AcquireCompactInfo();

               info.m_Name = value;

               if ( info.m_Name == null )
                  VerifyCompactInfo();

               InvalidateProperties();
            }
         }
      }

De ça, tu peux conclure qu'il se passe bien des choses quand on change le nom. En effet le client a l'objet avec un nom, et ce n'est pas parceque tu changes Descritpion que le client va s'en inquieter et redemander le nom... Alors qu'il le fait lors d'un déplacement.
C'est pour ça que ta modif n'apparait qu'après déplacement.

Donc deux solution :

  • la meilleure conssisterait à réfléchir de plus près à quelle méthode utiliser parmi celles utilisées dans la props Name d'Item... (je parie sur InvalidateProperties mais pas le temps de tester)
  • La seconde serait de faire, juste après
    Code:
    bw.Description = text;
    de rajouter :
    Code:
    bw.Name = bw.Name;


Un peu couillon ce Name = Name, mais du coup, ça passera par la props Name, et réinitialisera le nom avec ta modif.
(enfin je crois ^^, pas testé)


Pour ton deuxième souci, la modif qui n'est pas prise en compte si tu as un nom custom, il faut savoir que les items prennent leur nom :

  • soit par la props Name (ton nom custom)
  • soit par un LabelNumber, une référence à une entrée cliloc, qui n'est prise en compte que si Name == null

A mon avis la solution a ton problème se trouve par là...
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMar 16 Sep - 22:24

Ce que tudis marche pour la première partie. Merci. La description s'ajoute immédiatement.

Par contre, ça remplace toujours le nom de l'objet...

mais j'ai noté un fait intéressant. Quand je set movable false l'item en question(celui qui a un nom custom, mais qui a été "effacé" par la description), c'est le nom custom de l'objet qui apparait au Single click et non la description. Ça pourrait peut-être servir pour fair apparaitre le nom ET la description?

Et ton affaire de label number et cliloc... ça me dit rien pantoute Razz

Code:
using System;
using Server;
using System.Reflection;
using Server.Targeting;
using Server.Prompts;

namespace Server.Items
{

    //pas quand c'est locker
    //Quand c'est proche
    //renommage sur le runebook
    //quand c'est dans le backpack seulement finalement
    public class DescriptionCommandHandlers
    {

        public static void Initialize()
        {
            Server.Commands.Register("Description", AccessLevel.Player, new CommandEventHandler(Description_OnCommand));
        }

        [Usage("Description")]
        [Description("Permet de faire la description d'un objet")]
        public static void Description_OnCommand(CommandEventArgs e)
        {
            e.Mobile.Target = new DescriptionTarget();
        }

        public class DescriptionTarget : Target
        {
            public DescriptionTarget()
                : base(-1, false, TargetFlags.None)
            {
            }

            public bool m_description = true;

            protected override void OnTarget(Mobile from, object targeted)
            {
                if (targeted is Item)
                {
                    Item item = (Item)targeted;
                    from.SendMessage("Entrez la description que vous souhaitez donner à l'objet. Sinon appuyez sur échapper (ESC).");
                    from.Prompt = new MyPrompt(item);

                }
                else
                {
                    from.SendMessage("Vous ne pouvez pas décrire ça! Franchement!");
                }
            }
        }

        private class MyPrompt : Prompt
        {
            private Item itemm;
            private string save;

            public MyPrompt(Item item)
            {
                itemm = item;
                save = itemm.Name;
            }

            public override void OnResponse(Mobile from, string text)
            {
                if (itemm is Comptoire)
                {
                    from.SendMessage("La description a été modifiée");
                    Comptoire bw = (Comptoire)itemm;
                    bw.Description = text;
                    bw.Name = save;
                    itemm = null;
                    bw = null;
                }

                else from.SendMessage("Impossible de décrire celà");
            }

            //et pour gérer la sortie par la touche del
            public override void OnCancel(Mobile from)
            {
                from.SendMessage("Vous ne décrivez rien! Ha! Ha!");
            }
        }
    }
}
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMar 16 Sep - 23:38

Un test, plus qu'une solution :

plutôt que de faire Name = "Comptoir"; dans le constructeur, passe par la propriété DefaultName :

Code:
public override string DefaultName
      {
         get { return "Comptoir"; }
      }
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMer 17 Sep - 14:49

Ça me dit que ça ne trouve pas de méthode adéquate. Donc ça compile pas.

De toute façon, je commencerai pas à ajouter ces lignes là à TOUS les items à noms costum...

Je sais pas si ça marcherais si je faisais ajouter en même temps une nouvelle "description" mais avec le string de name?

Je vais essayé à mon retour de l'école! (à moins que tu ais une meilleure idée)
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMer 17 Sep - 16:25

J'ai fais un test, et le problème que tu décris, en fait, je ne l'ai pas... Que mon item ait un nom custom ou pas, ca fonctionne...

Essaye ce code, si ça ne fonctionne pas, c'est soit une histoire de RunUO 1.0, soit un bout de code crépusculaire...

Code:

using System;

namespace Server.Items
{
  public class AvecName : Item
    {     
        [Constructable]
        public AvecName(): base(0xd94)
        {
            Name = "AvecName";
        }

        public string Description = "Ca marche pour AvecName";
     
      public override void AddNameProperty( ObjectPropertyList list )
      {
            base.AddNameProperty(list);
       
            if(Description != null)
              list.Add(Description);
      }
       
        public AvecName(Serial serial) : base(serial)
        {
        }

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

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
        }
    }
 
  public class SansName : Item
    {     
        [Constructable]
        public SansName(): base(0xd94)
        {
           
        }
       
        public string Description = " Ca marche pour SansName";
     
      public override void AddNameProperty( ObjectPropertyList list )
      {
            base.AddNameProperty(list);
       
            if(Description != null)
              list.Add(Description);
      }
       
       
        public SansName(Serial serial) : base(serial)
        {
        }

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

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
        }
    }
}
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMer 17 Sep - 19:24

Regarde ce que ça me fait...

[Réglé]Ajouter une description sous le nom d'un item Montresg3

Ça peut pas être un problème de Crépuscule, parce que j'ai pas les scripts de Crépuscule. Rien qui touche tout ça en tout cas.

Tu as RunUo 2? ou 1?

Là je sais pas trop quoi faire...
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMer 17 Sep - 22:52

Je suis en 2.0...

Essaye ça pour voir :
Code:

using System;

namespace Server.Items
{
  public class AvecName : Item
    {     
        [Constructable]
        public AvecName(): base(0xd94)
        {
            Name = "AvecName";
        }

        public string Description = "Ca marche pour AvecName";
     
      public override void AddNameProperty( ObjectPropertyList list )
      {
            Name = "AvecName";
         
         base.AddNameProperty(list);
       
            if(Description != null)
              list.Add(Description);
         }
       
        public AvecName(Serial serial) : base(serial)
        {
        }

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

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
        }
    }
 
  public class SansName : Item
    {     
        [Constructable]
        public SansName(): base(0xd94)
        {
           
        }
       
        public string Description = " Ca marche pour SansName";
     
      public override void AddNameProperty( ObjectPropertyList list )
      {
            base.AddNameProperty(list);
       
            if(Description != null)
              list.Add(Description);
         }
               
        public SansName(Serial serial) : base(serial)
        {
        }

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

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


Sinon, ya un truc qui m'échappe dans la logique de tout ça... Essayes en changeant les props Movable et Stackable, en faisan tvarier Amount...

Il doit bien y avoir un truc.
Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMer 17 Sep - 23:00

Il veut pas se créer, ça crash.

Je vais voir les choses que tu proposes dans le bas de ton post.
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedMer 17 Sep - 23:04

Rien...

Et en passant, la propriété Name est toujours là. Le nom reste le nom qu'il a toujours été (mon nom custom) et ne se fait pas écrire par dessus la description.

Il semble juste... disparaitre... et la description prend la première place, donc les propriété du nom je suppose, mais sans être le nom.
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedJeu 18 Sep - 0:00

Dans la liste PropertyList, le nom doit prendre la première place, c'est bien le cas si tu n'as pas de nom custom, mais je n'arrive vraiment pas à comprendre pourquoi avec un nom custom, la list n eprend pas le nom, et passe directement à description...

Un nouveau code, avec des messages console pour tenter de comprendre ce qui se passe..

Code:

using System;

namespace Server.Items
{
  public class AvecName : Item
    {     
        [Constructable]
        public AvecName(): base(0xd94)
        {
            Name = "AvecName";
        }

        public string Description = "Ca marche pour AvecName";
     
      public override void AddNameProperty( ObjectPropertyList list )
      {
         if ( Name == null )
         {
            Console.WriteLine("Problème de Name==null");
            if ( Amount <= 1 )
               list.Add( LabelNumber );
            else
               list.Add( 1050039, "{0}\t#{1}", Amount, LabelNumber ); // ~1_NUMBER~ ~2_ITEMNAME~
         }
         else
         {
            Console.WriteLine("Name != null "+"==> "+Name.ToString());
            
            if ( Amount <= 1 )
            {
               Console.WriteLine("        Amount <=1 "+"==> "+Amount.ToString());
               list.Add( Name );
            }
            else
            {
               Console.WriteLine("Problème d'Amount");
               list.Add( 1050039, "{0}\t{1}", Amount, Name ); // ~1_NUMBER~ ~2_ITEMNAME~
            }
         }
         
         if(Description != null)
              list.Add(Description);
      }
       
        public AvecName(Serial serial) : base(serial)
        {
        }

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

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
        }
    }
 
  public class SansName : Item
    {     
        [Constructable]
        public SansName(): base(0xd94)
        {
           
        }
       
        public string Description = " Ca marche pour SansName";
     
      public override void AddNameProperty( ObjectPropertyList list )
      {
            base.AddNameProperty(list);
       
            if(Description != null)
              list.Add(Description);
         }
               
        public SansName(Serial serial) : base(serial)
        {
        }

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

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

Revenir en haut Aller en bas
Pantoute

Pantoute


Messages : 44
Date d'inscription : 05/09/2008
Localisation : Québec

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedJeu 18 Sep - 0:52

Voilà ce que me donne la console. Et ça donne toujours le même problème : Le name apparait pas.

[Réglé]Ajouter une description sous le nom d'un item Consolexw0

Je sais pas trop ce que ça veut dire, mais tu le sais surement.
Revenir en haut Aller en bas
http://au-crepuscule.com/?page=accueil
Gargouille




Messages : 97
Date d'inscription : 02/09/2008

[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_minipostedJeu 18 Sep - 22:20

Bon, je me suis fais un serveur en 1.0, la sanction tombe : ça fonctionne nickel, pas de disparition du nom en cas de custom...

Ton bug est incontestablement crépusculaire.

Sans trahir de secrets d'état, tu devrais pouvoir nous montrer quelques méthodes ou propriétés de CrepusculeItem, du genre
Name, AddNameProperty, AddNameProperties, voir OnSingleClick et OnAOSSingleClick...
Revenir en haut Aller en bas
Contenu sponsorisé





[Réglé]Ajouter une description sous le nom d'un item Empty
MessageSujet: Re: [Réglé]Ajouter une description sous le nom d'un item   [Réglé]Ajouter une description sous le nom d'un item Icon_miniposted

Revenir en haut Aller en bas
 
[Réglé]Ajouter une description sous le nom d'un item
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» [Réglé]Item Lié à un autre- Pommier
» [Réglé]Sérialiser
» [Réglé]Mettre du texte en jeu en String
» RunUO sous Linux
» Faire que les objets ne virent pas au jaune sous le curseur.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RunUO-FR :: Problèmes et questions :: Comment faire ?-
Sauter vers: