1.29 Récupérer les stats des items

Inscrit
16 Mars 2014
Messages
214
Reactions
30
#1
Yo quelqu'un ayant travailler sur un émulateur sur cette version peut m'indiquer comment il s'y est prit pour récupérer les stats des items, j'ai jeter un œil aux fichiers langs officiel mais rien n'y mentionne les stats

Code:
I.u[2469] = {n:"Gelano",t:9,d:"Inutile de vous ronger les ongles avec cet anneau, léchez-vous les doigts !",ep:7,g:47,l:60,wd:true,fm:true,w:5,s:6,p:10000};
(n = name, t = type, d = description, ep = ???, g = ???, l = level, wd = ???, fm, w = weight, s = ???, p = price)

Pour les armes il y'a bien une variable 'e' qui je suppose correspond aux effets mais pour le reste rien
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#2
Hello Skeezr,

J'ai retrouvé le projet open source ArkaliaCore, il contient une classe EffectEngine qui gère la génération des effets.

C#:
public List<Item.ItemEffect> GenerateEffects(bool max = false)
        {
            var effects = new List<Item.ItemEffect>();
            foreach (var e in this.Effects)
            {
                var generatedEffect = e.GetRandomEffect(max);
                effects.Add(generatedEffect);
                Utilities.Logger.Debug("Generated effect : " + generatedEffect.ToString());
            }
            return effects;
        }
C#:
public static Database.Models.WorldItemModel GenerateItem(int owner, Database.Models.ItemTemplateModel template, int quantity = 1, bool max = false)
        {
            var item = new Database.Models.WorldItemModel();
            item.ID = Database.Tables.WorldItemTable.TempID;
            item.Owner = owner;
            item.Position = -1;
            item.Quantity = quantity;
            item.TemplateID = template.ID;
            item.Engine = new Engines.EffectEngine(template.Engine.GenerateEffects(max));
            item.Effects = item.Engine.ToString();
            return item;
        }
Le code est assez long, je préfère te passer directement le projet.
Il se base quand même sur une BDD mais tu as tout dans le dossier ;)

https://files.fm/u/3zavu4qb#/view/ArkaliaCore-master.zip
 
Dernière édition:
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#3
Merci j'ai déjà regarder à droite à gauche des projets 1.29 mais ce qui m’intéresse là c'est de savoir d'ou viennent les données concernant les effets par exemple sur ce projet (https://raw.githubusercontent.com/Emudofus/Shivas/master/data/items/items.xml)

HTML:
<item id="2469" type="9" level="60" weight="5" forgemageable="true" price="10000">
   <conditions />
    <effect type="111" bonus="0d0+1" />
  </item>

on y voit l'id de l'effet et sa valeur 111 = PA et bonus le 0d0 je ne sais pas mais sinon après on voit + 1
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#4
Tu as des fichiers SQL contenant l'ensemble des données de l'ému dont les effets.
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#5
Mdr oui et d'ou sortent les données des sql / bdd ? Les personnes travaillant sur la 1.29 ont bien du à un moment récupérer les informations de l'officiel et les stocker pour qu'ensuite l'emu traite les données, je n'ai pas envie de me baser sur une bdd déjà faite je veux récupérer les informations dont j'ai besoin depuis l'officiel mais pour le moment je n'ai aucune piste les fichiers du client ne contiennent aucune infos majeures et la seul façon pour le moment semble d'aller récupérer les infos directement ingame en sniffant :/
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#6
Il y a forcément des fichiers équivalent aux d2o sur 1.29 mais je n'ai aucune idée de l'endroit où ils sont stockés, je vais essayer de te trouver ça.
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#7
Ouep y'a des fichiers équivalent aux d2o les langs que j'ai récupérer, ma ligne que j'ai mis dans mon post viens du swf des items mais y'a pas d'effets et je voit pas d'ou le client pourrait charger les items et leurs stats
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#8
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#9
Salut skeezr, la question m'a intrigué et je m'y suis intéressé un petit peu :p

Alors, pour récupérer les stats des items, tu dois avoir en ta possession le dossier : lang.

Disponible ici : http://www.mediafire.com/file/1zfyq7wbu0jordq/fichier+lang+dof.rar
(Lien de DoE)

à l'intérieur il y a un fichier : items_fr_432.swf.

Voici ce qu'il contient : http://puu.sh/sewjx/a58de82c7f.png

Et d'après ce que j'ai trouvé dans les sources, la classe qui load est : dofus > datacenter > item.as
Pour les langs je les ai déjà pris de l'officiel et j'ai quand même dl ton pack pour vérifier mais c'est la même chose les stats n'y figure pas seul les stats des armes s'y trouvent

Deux 1er lignes du fichier items_fr_432 :
Code:
I.u[39] = {p:100,w:4,fm:true,wd:true,l:1,g:1,ep:1,d:"Cette amulette augmente l\'intelligence de son porteur.",t:1,n:"Petite Amulette du Hibou"}; //pas d'effets
I.u[40] = {p:200,c:"CS>4",e:[5,4,1,1,50,30,false,false],an:14,w:20,fm:true,wd:true,l:2,g:7,ep:1,d:"Epée de simple facture, elle ne fera pas de votre héros une légende.",t:6,n:"Petite Epée de Boisaille"}; ici apparemment oui si e = bien effets car je suis pas sur
Fin bref ça à l'air d'être côté serveur et pas client :/
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#10
I.u[42] = {p:250,c:"CS>6",e:[5,4,1,1,50,30,false,false],an:14,w:20,fm:true,wd:true,l:3,g:7,ep:1,d:"Epée de simple facture, elle ne fera pas de votre héros une légende.",t:6,n:"Epée de Boisaille"};



"e:[5,4,1,1,50,30,false,false]" :
- 5 = Je ne sais pas (Vu que c'est dans l'ordre, je dirais que c'est un id, par exemple 5 = "Arme à 2 mains")
- 4 = Nombre de pa
- 1 = Portée
- 1, 50 = Coups critique
- 30, false, false = Je ne sais pas

"l:3" :
- Niveau à avoir pour équiper l'objet (j'ai checké pour plusieurs objets)

"fm:true" :

- Savoir si l'objet peut être FM

"c:"CS>6" " :
- Caracteristic Strength = "Force > 6"

CA = Agility ....

"p:200" :
- Ça doit vouloir dire POWER parce que :

p:100 = "Petit Anneau de Sagesse"
p:200 = "Anneau de Sagesse"
p:300 = "Grand Anneau de Sagesse"
p:400 = "Puissant Anneau de Sagesse"

150 / 250 / 350 doivent être des valeurs intermédiaires mais pas très importantes.

"t:6" :
-Le type de l'objet

6 = Épée
11 = Botte
4 = Bâton
Je te laisse trouver le reste

Il reste plus qu'a trouver an:14, w:20, wd:true, ep:1

w = peut être "weight", donc le nombre de pods, à vérifier j'ai plus trop le temps là ^^'

à mon avis, chaque type d'objet a ses stats écrits dans un même ordre.

Bisous :)

 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#11
j'avais déjà a peut près deviner le tout mdr c'est sur mon post en haut pour an, wd et ep par contre aucune idée mais w c'est bien le weight donc le poid pour le p par contre j'aurais dit le prix 'price' pour le gelano dans mon exemple ont voit p:10000

et de quoi tu parle
chaque type d'objet a ses stats écrits dans un même ordre
car la tu remarque bien comme moi que rien n'est indiquer pour les stats x)
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#12
Bah c'est simple regarde,
"e:[5,4,1,1,50,30,false,false]" :
- 5 = Je ne sais pas (Vu que c'est dans l'ordre, je dirais que c'est un id, par exemple 5 = "Arme à 2 mains")
- 4 = Nombre de pa
- 1 = Portée
- 1, 50 = Coups critique
- 30, false, false = Je ne sais pas
Tu as donc [Id, pa, portée, coups critique min, coups critique max, 30, false, false]
Donc TOUTES les ÉPÉES auront leurs stats agencé de cette manière.

Il te suffit juste de trouver comment les stats des chapeaux, des bottes, des anneaux ... sont agencés.
Logiquement, une amulette peut ajouter les mêmes stats qu'un chapeau, donc ça devrait être fait de la même manière.

Comprendo ?
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#13
Bah c'est simple regarde,


Tu as donc [Id, pa, portée, coups critique min, coups critique max, 30, false, false]
Donc TOUTES les ÉPÉES auront leurs stats agencé de cette manière.

Il te suffit juste de trouver comment les stats des chapeaux, des bottes, des anneaux ... sont agencés.
Logiquement, une amulette peut ajouter les mêmes stats qu'un chapeau, donc ça devrait être fait de la même manière.

Comprendo ?
Oui mais le e "e:[5,4,1,1,50,30,false,false]" par exemple tu le ne trouve pas chez les autres items uniquement chez les armes ?

 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#15
Logique tu cherche la porter et le coup de pa sur des item comme des amulettes ext tu risque pas de trouver
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#16
Mais peut-être que "e:[5,4,1,1,50,30,false,false]" aurait pu être [agi, force, intel, ...] l'ami ;) @asyade
 

Arth

Contributeur
Inscrit
28 Aout 2016
Messages
80
Reactions
3
#17
Les stats des objets sont du coté serveur sur 1.29. Les fichiers lang contiennent des info fixe sur l'item (nom, prix, poids, PA, ...)
Les stats sont des infos qui ne sont pas fixe alors elle ne sont pas du coté fichier lang.
Pour les récupérer, tu peut peut-etre faire un code qui analyse le wiki du site offi...
Sinon peut-etre IG avec les visualisations d'objet dans le tchat, si tu marque dans le tchat 1.29 un item (sans linker avec un item que tu porte toi même). Il me semble, de mémoire, que le serveur de donne les stats en xDy+z. A vérifier !
 
Inscrit
18 Février 2017
Messages
149
Reactions
18
#18
Hello Skeezr,

J'ai retrouvé le projet open source ArkaliaCore, il contient une classe EffectEngine qui gère la génération des effets.

C#:
public List<Item.ItemEffect> GenerateEffects(bool max = false)
        {
            var effects = new List<Item.ItemEffect>();
            foreach (var e in this.Effects)
            {
                var generatedEffect = e.GetRandomEffect(max);
                effects.Add(generatedEffect);
                Utilities.Logger.Debug("Generated effect : " + generatedEffect.ToString());
            }
            return effects;
        }
C#:
public static Database.Models.WorldItemModel GenerateItem(int owner, Database.Models.ItemTemplateModel template, int quantity = 1, bool max = false)
        {
            var item = new Database.Models.WorldItemModel();
            item.ID = Database.Tables.WorldItemTable.TempID;
            item.Owner = owner;
            item.Position = -1;
            item.Quantity = quantity;
            item.TemplateID = template.ID;
            item.Engine = new Engines.EffectEngine(template.Engine.GenerateEffects(max));
            item.Effects = item.Engine.ToString();
            return item;
        }
Le code est assez long, je préfère te passer directement le projet.
Il se base quand même sur une BDD mais tu as tout dans le dossier ;)

https://files.fm/u/3zavu4qb#/view/ArkaliaCore-master.zip
coucou, navré de déterrer un vieux topique mais je suis sur le même souci, mais hélas ton lien d'Arkalia est mort, tu pourrais le ré-upload si possible stp.?
 
Inscrit
12 Avril 2014
Messages
22
Reactions
5
#20
Je me permets d'up le sujet car il est désormais possible de récupérer les stats des items :

http://dofusretro.cdn.ankama.com/lang/versions_fr.txt => 2ème argument itemstats,fr,x
http://dofusretro.cdn.ankama.com/lang/swf/itemstats_fr_x.swf (remplacer x par la valeur indiquée par versions_fr.txt)

Les stats sont représentées sous forme de dés.
Voici là ligne qui correspond à la Coiffe du Bouftou pour l'exemple :

ISTA[2411] = "76#1#28#0#1d40+0,7e#1#28#0#1d40+0";

La méthode pour désérialiser les valeurs se trouve dans ank.gapi.controls.ItemsViewer.as juste après l'appel au getItemStats()

Je joins également la version du fichier disponible à ce jour : itemstats_fr_3.txt
Amusez vous bien.
 
Dernière édition:
Haut Bas