C# [STUMP] Problème tokens

Soap

Membre
Inscrit
12 Avril 2017
Messages
72
Reactions
2
#1
Bonjour, savez vous pourquoi une fois IG lorsque j’exécute le reply du npc ayant pour action le code MercenaryReply j'obtient ceci : https://www.noelshack.com/2017-22-1496070299-capture.jpg
alors qu'en vraie j'obtiens ni alignement, ni titre et les conditions sur les tokens ne fontionnent pas. Voici les codes :

MercenaryReply :

C#:
   [Discriminator("Mercenaire", typeof(NpcReply), new System.Type[]
{
        typeof(NpcReplyRecord)
})]
    public class MercenaryReply : NpcReply
    {
        private const uint _price = 50;
        public MercenaryReply(NpcReplyRecord record) : base(record) { }
        public override bool Execute(Npc npc, Character character)
        {
            bool result = true;
            BasePlayerItem tokens = character.Inventory.TryGetItem(7919);
            if (character.AlignmentSide != AlignmentSideEnum.ALIGNMENT_MERCENARY)
            {
                if (tokens != null && tokens.Stack >= _price)
                {
                    BasePlayerItem shield = character.Inventory.TryGetItem(CharacterInventoryPositionEnum.ACCESSORY_POSITION_SHIELD);
                    if (shield != null)
                    {
                        character.Inventory.MoveItem(shield, CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED);
                    }
                    character.Inventory.RemoveItem(tokens, 50);
                    character.ChangeAlignementSide(AlignmentSideEnum.ALIGNMENT_MERCENARY);
                    character.SendServerMessage("Vous êtes désormais <b>Mercenaire.<b>");
                    result = true;
                }
                else
                {
                    character.SendServerMessage("Vous n'avez pas assez de jetons.");
                    result = false;
                }
            }
            else
            {
                character.SendServerMessage("Vous êtes déja mercenaire.");
                result = false;
            }
            return result;
        }
    }
}
GiveTitleReply :
C#:
  [Discriminator("GiveTitle", typeof(NpcReply), new Type[] { typeof(NpcReplyRecord) })]
    public class GiveTitleReply : NpcReply
    {
        public short TitleId
        {
            get { return Record.GetParameter<short>(0u); }
            set { Record.SetParameter<short>(0u, value); }
        }
        public GiveTitleReply(NpcReplyRecord record): base(record) { }
        public override bool Execute(Npc npc, Character character)
        {
            bool result;
            if (!base.Execute(npc, character))
            {
                result = false;
            }
            else
            {
                character.AddTitle(this.TitleId);
                result = true;
            }
            return result;
        }
}
Le problème provient du BasePlayerItem tokens = character.Inventory.TryGetItem(7919); tokens est toujours null, la propriété character.Inventory.Tokens également si je remplace.

Problème résolu , merci à SkezzR pour son aide.
 
Dernière édition:
Inscrit
18 Février 2017
Messages
149
Reactions
18
#2
met la solution stp^^
 

Soap

Membre
Inscrit
12 Avril 2017
Messages
72
Reactions
2
#3
Salut, enfaite le plus simple c'est de faire une propriété dans Stump.Server.WorldServer.Game.Items.Player.Inventory.cs comme ceci :

C#:
public BasePlayerItem (Name xxx)
        {
            get
            {
                ItemTemplate tokenItem = Singleton<ItemManager>.Instance.TryGetTemplate(7919);
                BasePlayerItem token = this.TryGetItem(tokenItem);
                return token;
            }
            private set { }

        }
 
Dernière édition:
Haut Bas