C# Afficher les noms des monstres

Inscrit
6 Mai 2013
Messages
15
Reactions
2
#1
Bonjour,

Je viens de finir la chasse au trésor automatique avec les phorreurs.

Je voudrais rajouter quelques options en plus de la chasse.

Comme la chasse se fait automatiquement (hors combat), le personnage traverse diverses maps, et j'ai voulu ajouter une autre fonction qui est la recherche d'archi-monstre en plus.

J'utilise "MapComplementaryInformationsDataMessage" pour détecter les phorreurs, mais le souci, c'est que je voulais savoir si c'était possible de trouver le nom des monstres dans le fichier i18n_fr.d2i, dans ce fichier on trouve tous les noms des archi-monstre, monstres, objets, ressources. Avec un identifiant unique, mais quand je traverse une map, et que je boucle les actors disponible sur la map, il me sort un numéro de bonesId qui n'est pas dans le fichier i18n_fr.d2i.

Du coup, ma question, c'est de savoir, si, est ce que je cherche dans le bon fichier ?

Est ce que y a il une autre méthode pour obtenir le nom des monstres de la map ?

Je vous remercie d'avance pour votre aide :D
 
Inscrit
31 Janvier 2021
Messages
5
Reactions
1
#2
Salut,
tu cherches dans le bon fichier pour avoir les noms mais pas avec la bonne valeur. Quand tu as un objet Monster (récupéré dans le message cité via la valeur genericId sur les actors), tu as une valeur nameId qui correspond à l'id d'un label/text dans les fichiers i18n
 
Inscrit
6 Mai 2013
Messages
15
Reactions
2
#3
Salut,
tu cherches dans le bon fichier pour avoir les noms mais pas avec la bonne valeur. Quand tu as un objet Monster (récupéré dans le message cité via la valeur genericId sur les actors), tu as une valeur nameId qui correspond à l'id d'un label/text dans les fichiers i18n
Salut,

Tout d'abord, je te remercie pour ton message pour avoir répondu.

Alors en faisant les boucles en fouillant un peu les fichiers, je ne trouve pas la valeur qui peut m'indiquer les monstres.


Voilà ce que j'ai quand j'arrive sur une map :

[10:45] (debug) GameContextRefreshEntityLookMessage id => 5261
[10:45] (debug) MapComplementaryInformationsDataMessage id => 1182
[10:45] (debug) contextualId : 15361xxxxxxxx bonsesId : 639
[10:45] (debug) contextualId : 14117xxxxxxxx bonsesId : 5023
[10:45] (debug) contextualId : 14979xxxxxxxx bonsesId : 639
[10:45] (debug) contextualId : 65101xxxxxxxx bonsesId : 6382
[10:45] (debug) contextualId : 15196xxxxxxxx bonsesId : 1
[10:45] (debug) contextualId : 15325xxxxxxxx bonsesId : 639
[10:45] (debug) contextualId : -20003 bonsesId : 2558
[10:45] (debug) contextualId : -20000 bonsesId : 58
[10:45] (debug) contextualId : -20006 bonsesId : 635
[10:45] (debug) contextualId : 10294xxxxxxxx bonsesId : 1
[10:45] (debug) contextualId : 10151xxxxxxxx bonsesId : 1
[10:45] (debug) contextualId : 15003xxxxxxxx bonsesId : 2441
[10:45] (debug) contextualId : 15390xxxxxxxx bonsesId : 1
[10:45] (debug) contextualId : 15111xxxxxxxx bonsesId : 1
[10:45] (debug) GameContextRefreshEntityLookMessage id => 5261


Je sais que les valeurs en dessous de 0 sont des phorreurs/monstres

Mais de la a identifié le genericId impossible, j'ai beau lié le GameRolePlayActorInformations avec contextualId et EntityLook

Normalement le bonesid "2558" doit correspondre au monstre piou, sauf en fouillant le fichier le nameId correspond a : Crustensyl le Pragmatique hors y a aucun archi-monstre ^^"

Le seul lien que je trouve entre tout ça.
c'est uniquement le bonesId qui à mon avis est la valeur pour chaque monstre au du moins le skin du monstre, mais après lié la valeur bonesId avec un monstre, je ne vois pas où trouver ça, j'ai fait un lecteur de fichier .d2o pour lire le fichier Monsters. D2o, mais les valeurs ne correspondent pas au monstre.
 
Inscrit
31 Janvier 2021
Messages
5
Reactions
1
#4
Peut-être que j'ai mal compris ta question, mais à aucun moment j'utilise le bonesId
Lors du MapComplementaryInformationsDataMessage je parcours les "créatures" en utilisant le genericId, pour ensuite trouver à quel Monster (donnée tirée des types de fichiers d2o), et de là j'ai le nameId qui me permet de trouver la correspondance dans les fichier i18n
Aussi pour savoir si un Monster est un archi, j'utilise l'info isMiniBoss

Voici par exemple ce que j'utiliser pour détecter si un archi est présent sur la map
Java:
private boolean checkMob(int genericId) {
        Monster monster = DofusDataManager.getInstance().getMonsters().get(genericId);
        if(monster.getIsMiniBoss()) {
            Utils.displayNotification("ARCHIMONSTRE  : " + monster.getText());
            AudioUtils.playSoundNotification();
            //TODO gérer le cas d'un bot ici s'il est activé
            return true;
        }
        return false;
    }

    @Override
    public void onMessageReceived(MapComplementaryInformationsDataMessage message) {
        for(GameRolePlayActorInformations actor : message.getActors()) {
            if(!(actor instanceof GameRolePlayGroupMonsterInformations)) {
                continue;
            }
            GameRolePlayGroupMonsterInformations groupMonsterInformations = (GameRolePlayGroupMonsterInformations) actor;
            if(this.checkMob(groupMonsterInformations.getStaticInfos().getMainCreatureLightInfos().getGenericId())) {
                return;
            }

            for(MonsterInGroupInformations underling : groupMonsterInformations.getStaticInfos().getUnderlings()) {
                if(this.checkMob(underling.getGenericId())) {
                    return;
                }
            }

        }
    }
 
Inscrit
13 Mars 2022
Messages
24
Reactions
3
#5
Bonjour,
je cherche a faire un 'bot' qui detecte la présence d'un archi sur la map.
Je me trouve bloqué lors de l'analyse de mon paquet quand skinsLen vaut 02 00
Je vois que vous aussi cherchez dans MapComplementaryInformationsDataMessage et je voulais faire si vous aviez réussi votre programme ou si vous pouviez m'aiguiller ?
Merci d'avance

edit: De plus je vois que l'affichage de vinkooo est plutot clair et simple et je me demandais si tu l'avais fait ou si il est disponible quelque part. Car je fais le decryptage a la main et je ne sais pas comment faire plus simplement
 
Dernière édition:
Haut Bas