GithubHelp home page GithubHelp logo

ID to Name converter about behaviorismanaged HOT 7 OPEN

emudofus avatar emudofus commented on August 28, 2024
ID to Name converter

from behaviorismanaged.

Comments (7)

Timorem avatar Timorem commented on August 28, 2024

Je suppose que tu parles du nom ^^
Des fois tu peux voir un champ Name simplement, c'est le cas pour les Items, la classe ItemBase inclut une propriété Name, idem pour les Spells.
De manière général il existe dans les objets d2o (les objets client) un champ nameId, il faut alors utiliser I18NDataManager.Instance.ReadText pour obtenir la chaîne correspondante à l'id.

from behaviorismanaged.

Jean22 avatar Jean22 commented on August 28, 2024

Merci pour ta réponse :)
Je parle en effet du nom. Dans les messages il arrive souvent que je reçoive l'id de certains items par exemple dans un hdv. Si je comprend bien le code, en fait il suffit que j'instancie un ItemBase avec l'id reçu et que j'utilise ensuite sa propriété Name pour récupérer le nom n'est ce pas?

Edit: Une autre question: Dans le cas de figure où j'ai une liste de messages à envoyer au server. Est ce que je dois rajouter manuellement un certain temps d'attente entre l'envoi de chaque message (via un sleep) ou c'est géré par BiM directement lors de l'envoi de message depuis le bot au server?

from behaviorismanaged.

Timorem avatar Timorem commented on August 28, 2024

Tu ne peux pas instancier un objet ItemBase car c'est une classe abstraite. Tu dois encapsuler les données reçu, càd si tu recois un objet d'inventaire (de ton inventaire) alors c'est géré automatiquement et tu auras des objet Item. Si par exemple tu reçois un item de l'dv alors il faut le gérer correctement, tu va créer une classe comme Item qui hérite ItemBase et qui prend en constructeur l'objet associé venant du message en question (pour l'inventaire c'est ObjectItem). Malheureusement les HdV ne sont pas encore géré mais il faudrait un objet de type AuctionHouse qui donnerait une liste d'objet par exemple AHItem qui hérite ItemBase.
Je sais pas si je suis très clair mais l'idée c'est que tout est encapsuler avant d'être manipulé.

Après comme les AH ne sont pas implant. tu peux juste récupérer l'id du template de l'item, récupérer le template en appelant ObjectDataManager.Instance.Get<Protocol.Data.Item>(templateId); puis en récupérant le text à partir du champ nameId.

Comme le bot est toujours en développement tout n'est pas encore géré comme il le faudrait

Pour les send et même en général JAMAIS de Sleep. C'est à bannir absolument. Si tu veux une sorte de Sleep il faut passer par un timer de BiM en appelant par exemple Bot.CallDelayed. Il faut savoir qu'il y a un seul thread par bot, si tu met un sleep c'est tout le bot qui se bloque. Et sinon quand tu appelle Send ça envoie le message directement, tu peux aussi l'ajouter au dispatcher dans ce cas il sera Send quand tous les messages dans le dispatcher seront déjà proccessed.

from behaviorismanaged.

Jean22 avatar Jean22 commented on August 28, 2024

Merci pour ta réponse détaillée. J'avais en effet lu un peu trop rapidement la classe ItemBase.. Merci aussi pour la fonction Bot.CallDelayed, je ne l'avais pas remarqué!
Je pense que je devrai pouvoir me débrouiller avec les pistes que tu m'as donné :)

Bonne soirée,

Jean 22

from behaviorismanaged.

Jean22 avatar Jean22 commented on August 28, 2024

Bonjour,

J'ai un peu de mal avec la traduction ItemID - ItemName. En fait j'ai l'impression de ne pas avoir à partir des messages que je reçoit les informations nécessaires qui me permettrait de résoudre le problème.
J'ai voulu commencé par la version moins générale (donc plus simple) de ce que tu as proposé de faire :

...tu peux juste récupérer l'id du template de l'item, récupérer le template en appelant ObjectDataManager.Instance.Get(templateId); puis en récupérant le text à partir du champ nameId....

(je numérote les questions de sortes à ce qu'on ne s'embrouille pas)

  1. Je voudrai juste vérifier si je comprend bien ce que sont les template déjà. L'exemple suivant illustre t'il les templates dans le cas présent?
    template1{id 1500 correspond à "Bonjour"}
    template2{id 1500 correspond à "Dormir est bon pour la santé."}

Voici une liste rapide des messages échangés:
NpcGenericActionRequestMessage (5898) - Client //Demande l'ouverture de l'hdv
ExchangeStartedBidBuyerMessage (5904) - Server //Contient les types d'objets présent dans l'hdv (pex 63, 69, 64 équivalent à viande, viande comestible, viande conservée)

  1. Je bloque déjà ici. Je n'ai que des des nombres représentant des types d'objets. Comment est ce que je peux récuperer le template ici vu qu'il n'est pas envoyé dans le message et n'apparaît pas dans la classe c# comme attribut (sauf erreur de ma part).

ExchangeBidHouseTypeMessage (5803) - Client //Choix d'un des types (catégories) d'objets
ExchangeTypesExchangerDescriptionForUserMessage (5765) - Server //Contient l'ensemble des id des objets en vente dans la catégorie choisie.

  1. De nouveau je récupère des id mais pas de template ID.. Le objectUID n'est reçu que plus tard lorsque le server envoi le prix d'un objet selon la séquence suivante:

ExchangeBidHouseListMessage (5807) - Client //demande du prix d'un objet
ExchangeTypesItemsExchangerDescriptionForUserMessage (5752) - Server //réponse du server contenant notamment le UID

  1. En cherchant sur internet, j'ai compris que UID (unique identifier) était en fait un unique identifier pour chaque item mais par contre je ne vois pas ce que GID (group identifier) représente.

Merci d'avance,

Bonne journée,

Jean22

from behaviorismanaged.

Timorem avatar Timorem commented on August 28, 2024
  1. Le template récupère l'objet Data.Item du fichiers d2o Items.d2o, il contient des tas d'informations sur un item (poids, effets, prix de vente ...) dont le nameId.
    A partir du nameid tu récupère le text avec I18NDataManager.Instance.ReadText

  2. Je ne me suis pas encore intéressé aux AH, mais de toute évidence le GID n'est pas envoyé ici. Le GID correspond au templateId en fait alors que l'UID est bien le GUID, l'unique identifier.

Donc il faut trouver le GID

from behaviorismanaged.

Jean22 avatar Jean22 commented on August 28, 2024

Ok je vais chercher ça. Merci pour ta réponse.

from behaviorismanaged.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.