Le premier caractère indique la classe:
0 Druid
c Hunter
o Mage
s Paladin
b Priest
f Rogue
h Shaman
I Warlock
L Warrior
j Death Knight
Les caractères restants indiquent où dans chacun des points d'arbres ont été attribués. Chaque arbre est séparé, délimité par "Z". Donc, si par exemple tous les points sont dans le troisième arbre, alors les 2ème et 3ème caractères seront "ZZ" indiquant "fin du premier arbre" et "fin du second arbre".
Pour générer le code d'un arbre donné, divisez les talents en paires, en allant de gauche à droite et de haut en bas. Chaque paire de talents est représentée par un seul caractère. Par exemple, dans le segment Blood Tree du DK, le premier personnage indiquera le nombre de points alloués à Butchery et Subversion, et le second personnage représentera Blade Barrier et Bladed Armour.
Quel caractère représente chaque allocation parmi la paire? Je suis sûr qu'il y a un algorithme, probablement basé sur le jeu de caractères ASCII, mais tout ce que j'ai fait jusqu'ici est cette table de recherche. Trouver le nombre de points dans le premier talent le long du haut, et le nombre de points dans le deuxième talent le long du côté gauche. Le caractère codé est à l'intersection.
0 1 2 3 4 5
0 0 o b h L x
1 z k d u p t
2 M R r G T g
3 c s f I j e
4 m a w N n v
5 V q i A y E
Donc, si notre Chevalier de la mort a un point et deux points Butchery dans Subversion, le premier caractère est « R ». Si à la place nous ne mettons aucun point dans ces deux et cinq dans Blade Barrier, les deux premiers caractères seront "0x". Les '0' (toutes les autres paires de l'arbre sans points alloués) peuvent être omis, tout comme les délimiteurs 'Z' à la traîne (quand il n'y a pas de points dans les arbres suivants). Pour un dernier exemple, le code entier pour un NSP avec un seul point dans Toughness serait "jZ0o": "Chevalier de la mort", "Fin du premier arbre", "Aucun point dans la première paire de talents", "un point dans le premier talent de la deuxième paire ".
Quelqu'un peut-il trouver quelle fonction génère la table de correspondance ci-dessus? Il y a probablement un indice dans les codes pour les classes: par ordre alphabétique (sauf pour le DK qui a été ajouté au jeu après les autres), ils correspondent à une série dans la table de correspondance de (0,0), (0,3), (1,0), (1,3), (2,0), etc.
Il ne s'agit probablement pas d'un hachage, mais simplement de la compression des données de spécification (classe suivie de la liste des rangs de talent). Les conseils d'Alexander et vérifier avec les gens de wowhead.com. – Blixt