1.29 Compréhension : Disponibilité des ressources au chargement d'une map

Wizen

Membre
Inscrit
14 Juin 2020
Messages
6
Reactions
1
#1
Hello,

Tout d'abord je souhaite remercier les différents acteurs de ce forum concernant le développement autours de Dofus 1.29.
Les différents postes m'ont permis d'appréhender le sujet avant de me lancer dans l'aventure.

Si je poste aujourd'hui c'est que je suis bloqué à un stade, mon résultat ne correspond pas à ce que m'affiche le client en jeu.
De plus après étude du code source (https://github.com/dofera/dofedex) et l'étude des différents paquets, je n'arrive pas à comprendre comment le client arrive à afficher les ressources disponibles au chargement d'une map.

De ce que j'ai compris, via le message GDM on peut obtenir le fichier SWF correspondant à la map pour y récupérer ses informations.
Le dernier paramètre du message GDM nous permet de récupérer une clef permettant de déchiffrer le mapData du fichier SWF.

Au chargement de la map je ne vois nul autre message concernant la map, le client lui, arrive à afficher l'ensemble du contenu via ce message, notamment grâce au SWF.
On peut donc connaître les cellules et leur contenu, en ce qui me concerne, les ressources disponibles.
J'arrive à obtenir un résultat avec une certaine cohérence, mais les informations ne correspondent pas avec la map.

Après analyse je ne suis pas surpris car je ne vois pas comment le client, uniquement via le message GDM et le SWF (qui contiennent des informations fixes concernant une même map), peut retourner un résultat dynamique (disponibilité des ressources).

J'ai du louper quelque chose, pouvez-vous m'éclairer ?


Cordialement,
Wizen.
 
Dernière édition:
Inscrit
10 Mars 2019
Messages
15
Reactions
30
#2
Quand tu rentres dans la map tu as GDF.
"GDF|288; 3; 0; 161\0"
"GDF|{cellid ressource};{action};{x};{y}"
je me souviens plus quelle action correspond à quoi (mais c'est un truc comme ça, 3 déjà utilisées, 5 = récoltable...) dès que la ressource est de nouveau récoltable le serveur t'envoie un nouveau message.
"GDF|288; 5; 1; 1\0"
 

Wizen

Membre
Inscrit
14 Juin 2020
Messages
6
Reactions
1
#3
Bonjour Cremi,

Génial merci !
En effet je reçois bien les GDF, j'étais persuadé qu'ils étaient envoyés uniquement pour la mise à jour des ressources une fois la map chargée avec les informations de disponibilité initiales.

Merci :)
 

Wizen

Membre
Inscrit
14 Juin 2020
Messages
6
Reactions
1
#4
Je reviens avec quelques précisions, sachant qu'il s'agit de mes déductions et de la version 1.34.11.

Le déchiffrage de la map permet bien d'obtenir le numéro des cellules contenant une ressource, ainsi que leurs coordonnées.
Si l'attribut "layerObject2Interactive" de la cellule est à "true" c'est qu'il y a une ressource sur la cellule.

Au chargement de la map, par défaut une ressource est considérée comme récoltable, si une ou plusieurs ressources ne sont pas récoltables alors un message "GDF" est reçu dans la foulée :
- GDF|380;4;0 : Si une ressource est non-récoltable.
- GDF|380;4;0|425;4;0|416;2;0|127;4;0|97;4;0 : Si plusieurs ressources ne sont pas récoltables.

Sinon,+ aucun message GDF n'est reçu.

Par la suite, tant que vous êtes sur la map, des messages GDF seront reçus si l'état d'une ressource évolue, par exemple concernant une ressource de nouveau disponible : GDF|380;5;1

Construction du message :
- GDF|380;4;0 : GDF|Cellule;État;Quantité
- GDF|380;4;0|425;4;0|416;2;0|127;4;0|97;4;0 : GDF|ressource1|ressource2|ressource3|ressource4|ressource5

État de la ressource :
- 2: En cours de récolte
- 3: Fin de récolte
- 4: Indisponible
- 5: Disponible

Quantité ?
Visiblement un système de quantité est présent, à ma connaissance une ressource n'est récoltable qu'une fois, cette information peut pour le moment être ignorée.

Pour connaître la disponibilité des ressources il faut donc déchiffrer la map et partir du principe que toutes les ressources sont disponibles, puis mettre à jour leur disponibilité en fonction des message DGF reçus au chargement de la map ou durant son cycle de vie.


Wizen.
 
Dernière édition:
Haut Bas