Valkyrie en détail

M

Myrdinn

Invité
Voila un nouveau post sur le tracage de DLL.
C'est une démonstration du produit avant de passer à des exercices :D dans outils et exercices.
Ce post à trois buts
1) Démonstration de l'utilisation de OllyDBG
2) Quelques notions sur la méthodologie pour tracer les Dlls
3) Pour les allergiques à l'assembleur il reste les passages en couleur pour faire plus ample connaissance avec nos amies valkyries. Dans ce cas je vous invites à passer toutes les parties écrites en blanc :D Ce pourrait être utile pour déterminer le niveau idéale pour les valkyries par exemple.

Pour faire plaisir à Simon33 j'utiliserais la nomenclature 0x000... pour les chifres hexadécimaux hors du code.
J'ai fait un trace unique sur le code hier soir après avoir joué avec trombe. Je vous donne le résultat directement sans remaniement et donc avec des trous que l'on comblera ensemble plus tard.

J'ai choisis cet exemple car vous pouvez le faire sans tuer votre mercenaire (ce qu'il vaut mieux faire quant on trace un combat :lol: ) et surtout vous pouvez le faire sans sortir de la ville.

Pour faire ce trace vous devez utiliser la méthode décrit dans le quatrième post de Tracer les Dlls .

Placer le brekpoint sur 6FCD6790 et invoquer votre valkyrie en ville.
Vous vous arreterez automatiquement sur ce qui suit :D


La routine qui gèrela valkyrie débute en 6FCD6790 pour le patch 1.09B. Si vous voulez les offsets pour le patch 1.09D je les chercherais pour vous.


Code:
Initalisation/sauvegarde des registres
6FCD6790   83EC 24          SUB ESP,24
6FCD6793   53               PUSH EBX
6FCD6794   55               PUSH EBP
6FCD6795   8BEA             MOV EBP,EDX
6FCD6797   8BD9             MOV EBX,ECX
6FCD6797   8BD9             MOV EBX,ECX
6FCD6799   56               PUSH ESI
6FCD679A   57               PUSH EDI

EBP=SLVL
EBX=GamePTr
EBP=EDX=PlrUnit
EBX=ECX=GamePtr
ESI=0x138 (312)???
EDI=PlrUnit

Bon comme d'habitude pour ceux qui ont suivi les posts tracer les Dlls.
On sauvegarde et initialise les différents registres.
A noter que je ne sais pas encore à quoi correspond le 312 contenu par ESI ?
Si c'est important on le saura assez vite.

Si vous voulez jouer avec les unités c'est le moment avant de continuer.

EBX=GamePtr. Si vous faite boutondroit/Follow in Dump vous verrez l'unité GAME.
Je devrais éditer mon post sur la structure du jeu, en attendant une petite explication.

Au démarrage d'une partie le jeu créé une structure qui contient les liens vers toutes les autres unités du jeu et également les valeurs spécifiques à la partie.
A partir de cette unité il est possible de trouver tous ce qui concerne la partie en cours

Exemple
Il contient la liste de tous les pointeurs des joueurs,monstres objets ....
Il contient également le type de jeu D2C ou LOD, L'heure actuelle en Frame, la Master Seed qui permet de générer les Seeds de toutes les unités créées, la difficulté ...

Dans le quatrième post je donne le lien vers la structure connue de cette unité. La première page excel vous permet de voir les différentes valeurs. Attention il y a un décalage de 0x20 ente la version 1.09B et la version 1.09D
Jetez un oeil et demandez moi si vous avez besoin d'aide.

Vous pouvez également regarder votre unité joueur c'est la deuxième page de fichier excel (es pages suivantes contiennent les structures filles de cette unité (inventaire, skills,stats ....) )
Toujours pareil clickdroit sur EBP / Follow in Dump et la méthode décrit dans le quatrième post.
Encore une fois n'hésitez pas à me demander des renseignement sur cette structure.


Avant de continuer une petite astuce d'ollydbg.
EBP contient le SLVL de la valkyrie.
Juste avant le PUSH vous pouvez faire un bouton droit sur EBP et faire Modify et entrez la valeur que vous voulez. De cette façon vous pouvez vous faire une Valkyrie niveau 90 :) sans modifier votre perso.


Code:
 Modification du Flag Création d'unité de l'unité joueur
6FCD679B   8B8D E8000000    MOV ECX,DWORD PTR SS:[EBP+E8]
6FCD67A1   33C0             XOR EAX,EAX
6FCD67A3   83C9 40          OR ECX,40

Maintenant que la creation de la valkyrie à commencer, il faut modifier ce flag.

FLAG PlrUnit(+E8)=OOOOOOOE = initialize pointer
ECX=4E si ECX=0xE
Bon encore une fois l'occasion de regarder votre unité Joueur. En +E8 vous avez des Flags, normalement vous devriez avoir 0x0E, qui correspond à un Flag Creation.
On modifie cette valeur en ajoutant 0x40 on obtient 0x4E.



Code:
Creation de structure
6FCD67A6   8D7C24 14        LEA EDI,DWORD PTR SS:[ESP+14]
6FCD67AA   898D E8000000    MOV DWORD PTR SS:[EBP+E8],ECX
6FCD67B0   B9 08000000      MOV ECX,8
6FCD67B5   F3:AB            REP STOS DWORD PTR ES:[EDI]
EDI = pointeur = Pile+14 on va voir a quoi ca sert très vite

On modifie l'unité joueur en fixant le Flag en +E8 avec la valeur 4E(c'est un reste de l'étape précedente

LE REP STOS Créé 8 lignes(défini par ECX) à partir de EDI (Ex ESP+14)
On vient de créer un nouvel espace pour accueillir une structure de 8 valeurs (DWORDs)
C'est probablement une structure transitoire car elle est créé sur la pile.


Code:
6FCD67B7   8D5424 14        LEA EDX,DWORD PTR SS:[ESP+14]
6FCD67BB   8BCB             MOV ECX,EBX
6FCD67BD   896C24 10        MOV DWORD PTR SS:[ESP+10],EBP
6FCD67C1   896C24 18        MOV DWORD PTR SS:[ESP+18],EBP
6FCD67C5   C74424 1C 650100>MOV DWORD PTR SS:[ESP+1C],165
6FCD67CD   C74424 20 070000>MOV DWORD PTR SS:[ESP+20],7
6FCD67D5   C74424 24 010000>MOV DWORD PTR SS:[ESP+24],1
6FCD67DD   C74424 30 020000>MOV DWORD PTR SS:[ESP+30],2

Initalisation de 2 registres pour la suite
EDX=Nouvelle Structure (Ptr (ESP+14)) que l'on vient de créer
ECX=EBX=GamePTR

Creation de la Structure EDX avec les valeurs suivantes

EDX-04 = EBP = PlayerPtr
EDX+04 = EBP = PlayerPtr
EDX+08 = 0x165
EDX+0C = 0x7
EDX+10 = 0x1
EDX+1C = 0x2

Bon pour l'instant ces chiffres ne sont pas parlant nous verrons bien pour la suite.


Code:
Creation de la valkyrie
6FCD67E5   E8 16780100      CALL D2Game.6FCEE000
6FCD67EA   8BF0             MOV ESI,EAX
6FCD67EC   85F6             TEST ESI,ESI
6FCD67EE   75 0A            JNZ SHORT D2Game.6FCD67FA
6FCD67F0   5F               POP EDI
6FCD67F1   5E               POP ESI
6FCD67F2   5D               POP EBP
6FCD67F3   5B               POP EBX
6FCD67F4   83C4 24          ADD ESP,24
6FCD67F7   C2 0400          RETN 4
Le Call appelle la routine de création d'un monstre.
C'est à cela que servait la structure transitoire.
Sans faire aucun trace, voici ce que l'on peut deviner rapidement.
En +08
0x165 (357 en décimal)=ID de la valkyrie dans Monstats.txt
Si vous chercher la ligne valkyrie dans ce fichier sous excel (ligne 359) la colonne F correspond bien au populatedID=357
Et le 1 2 et 7?
Difficle de répondre pour le moment. Le 7 signifie probablement = Minion
Le 1 le nombre de valkyrie ...
Soit dit en passant avec ollyDBG vous pouvez modifier ces valeurs avant qu'elles ne soit utilisées en cliquantDroit / Modify.
Mais bon vous risquez probablement un crash :D

Regradons ce qui se passe
EAX=Valkyrie Ptr
ESI = ValkyriePtr
On fait un test rapide suir l'existence du pointeur
Pas de valkyrie = EXIT Else continue

Cool une nouvelle unité est prête. L'unité Valkyrie.
Un petit dump de ce que j'ai obtenu :D

Code:
VALKYRIE UNIT DUMP
$ ==>    >01 00 00 00 65 01 00 00  ...e..
$+8      >0F 00 00 00 01 00 00 00  ......
$+10     >00 00 00 00 00 00 00 00  ........
$+18     >80 4A 28 02 00 00 00 00  €J(....
$+20     >00 00 00 00 00 00 00 00  ........
$+28     >00 00 00 00 DA 07 46 4C  ....ÚFL
$+30     >4E 5A 8C 32 E4 A4 D2 62  NZŒ2ä¤Òb
$+38     >00 EC 05 07 00 00 00 00  .ì....
$+40     >00 00 00 00 00 00 00 00  ........
$+48     >00 00 00 00 00 00 00 00  ........
$+50     >00 00 00 00 00 01 00 00  .......
$+58     >00 01 00 00 00 00 00 00  .......
$+60     >28 DD A8 04 00 00 00 00  (ݨ....
$+68     >00 00 00 00 00 EA 05 07  .....ê
$+70     >00 E2 71 05 00 00 00 00  .âq....
$+78     >00 00 00 00 00 00 00 00  ........
$+80     >00 00 00 00 00 D9 71 05  .....Ùq
J'ai mis les adresses en position relatives.
Toujours pareil si vous utilisez mon fichiers excel vous trouverez

+00 UnitType Ici (01 00 00 00) soit 0x1 (on lit les bytes de droite à gauche)LEs valkyries sont des unités Monstres. :D

+04 UnitClass ici 0x165 on vient de le voir c'est le populated ID de monstats.txt.

+08 Unit UnisueID 0xF C'est l'ID unique séquentiel utilisé par le jeu pour identifier les unité de même type dans la partie. Bref ici c'est le 15eme monstres de la partie créé.
Bizarre on n'est même pas sortie en ville ????
Je suis prêt à parier que nos amis les NPCs, les poules et autres animaux sont aux nombres de 14. (Pas sur pour les NPCs d'ailleurs)

+0C MODE=0x1 Il faut consulter le fichier MonMode.txt je le fait pour vous ligne1=Neutral(NU) Bref la valkyrie est dans le mode Neutre pour le moment.

+2c/+30/+34 on peut voir la Seed (pour l'aléatoire)

+38 On trouve le pointeur sur la structure Hpath qui gère la position sur la carte/les déplacements/ les cibles ...

+58 Vitesse d'animation= 0x100 soit 256 c'est cette valeur qui est utilisé par les formules d'IAS pour gérer la vitesse d'attaque. Mais également par le FastCast,FastBlock ...

... vous regarderez mon fichier excel si vous voulez en apprendre plus.


Bon maintenant que la valkyrie est créée il va falloir la compléter :D

C'est la suite qui devient plus intéressante :D
 
M

Myrdinn

Invité
Bon maintenant que la valkyrie est créée il va falloir la compléter :D

Code:
SLVL ?
6FCD67FA   8B4424 38        MOV EAX,DWORD PTR SS:[ESP+38]
6FCD67FE   83F8 01          CMP EAX,1
6FCD6801   0F8E A0000000    JLE D2Game.6FCD68A7
EAX=SLVL
Rappelez vous du premier push en 2eme ligne :D
Si le SLVL <= 1 alors on passe la partie qui suit :)
Si vous regardez le skill vous remarquerez que les bonus aux point de vie ED% AC% ... ne sont dispo qu'au SLVL2, voila la confirmation.

Code:
SECTION 2 SLVL>1 __ Initialisation des registres
6FCD6807   8B0E             MOV ECX,DWORD PTR DS:[ESI]
6FCD6809   8B53 1C          MOV EDX,DWORD PTR DS:[EBX+1C]
6FCD680C   8D68 FF          LEA EBP,DWORD PTR DS:[EAX-1]
6FCD680F   8B46 08          MOV EAX,DWORD PTR DS:[ESI+8]

ECX=ValyUnitType=1=Monster
EDX=GamePtr+1C= (0)
EBP=EAX-1=(SLVL-1)
EAX=ValyUnID =(OF pour moi a cause des poules)

Code:
6FCD6812   50               PUSH EAX
6FCD6813   51               PUSH ECX
6FCD6814   6A 00            PUSH 0
6FCD6816   6A 00            PUSH 0
6FCD6818   52               PUSH EDX
6FCD6819   E8 2AE00100      CALL <JMP.&D2Common.#10470>
Fonction 10470(GamePTR+1C,0,0,VALLYUnID,SLVL-1)

Cette function reste encore mystérieuse pour moi, il faudrait que je la trace.
Elle renvoie l'adresse (pointeur) d'une nouvelle structure qui m'est inconnue pour l'instant

Code:
 Test de la structure
6FCD681E   8BF8             MOV EDI,EAX
6FCD6820   85FF             TEST EDI,EDI
6FCD6822   74 43            JE SHORT D2Game.6FCD6867
EDI = ??? = 05702800 pour moi (Structure vide on vient juste de voir sa creation)
Si la structure n'existe pas on sort de cette routine, sinon on continue.

Code:
 Modification
6FCD6824   57               PUSH EDI
6FCD6825   56               PUSH ESI
6FCD6826   E8 17E00100      CALL <JMP.&D2Common.#10475>
10475 (ValkyrieUnit,Sturcture vide)--> 0705EA00 en EDI+44 (=Valkyrie Unit +6c=PtStat)

Bref à partir de la structure vide du dessus on pointe sur la structure PTStat qui contient les propriétés de la valkyrie.( Force MVLV, PV,Def, AR)
Ces propriétés ont déjà été fixée à la création de la valkyrie.

Code:
PTSTAT AFter LIFE GAIN ???
$ ==>    >00 00 00 00 08 EA 05 07  ....ê
$+8      >00 00 00 00 00 00 00 00  ........
$+10     >00 00 00 00 C0 30 10 80  ....À0€
$+18     >B0 2A 00 00 38 04 00 00  °*..8..
$+20     >00 00 00 00 00 00 00 00  ........
$+28     >00 00 00 00 00 00 00 00  ........
$+30     >00 00 00 00 00 00 00 00  ........
$+38     >00 00 00 00 00 00 00 00  ........
$+40     >01 00 00 00 0F 00 00 00  ......
$+48     >00 00 00 00 00 EA 05 07  .....ê
$+50     >00 00 00 00 0F 00 00 00  ....... Strenght = 15
$+58     >0C 00 00 00 1C 00 00 00  ....... MLVL= 28
$+60     >1F 00 00 00 8D 00 00 00  ...... Def(ArmorClass) = 141
$+68     >24 00 00 00 00 00 00 00  $....... DamageResist = 0
$+70     >25 00 00 00 00 00 00 00  %....... MagicResist = 0
$+78     >27 00 00 00 00 00 00 00  '....... FireResist = 0
$+80     >29 00 00 00 00 00 00 00  )....... LightResist = 0
$+88     >2B 00 00 00 00 00 00 00  +....... ColdResist = 0
$+90     >2D 00 00 00 00 00 00 00  -....... Poison Resist = 0
$+98     >14 00 00 00 1C 00 00 00  ...... Block% = 28
$+A0     >44 00 00 00 64 00 00 00  D...d... AttackRate =100% (en terme IAS)
$+A8     >43 00 00 00 4B 00 00 00  C...K... VelocityPercent = 75% (Run/walk)
$+B0     >45 00 00 00 64 00 00 00  E...d... Other_Animrate = 100% (FastCast FBR,FHR ...)
$+B8     >0D 00 00 00 F0 05 00 00  ....ð.. Expérience = 1520
$+C0     >07 00 00 00 DC 25 01 00  ...Ü%. MaxHitPoint = 0x125DC
$+C8     >06 00 00 00 DC 25 01 00  ...Ü%. CurrentHP= 0x125DC

Voila le PtStat pour une valkyrie invoqué en normal.
C'est le début avant modification
Fait intéressant la valkyrie a une valeur pour L'XP.
Elle passerait des niveaux ????
LEs points de vie sont variables entre 275 et 330 en décimal pour le normal.
Moi j'ai eut 0x125DC soit 293(0x125) et l'extra précision dont je vous ai déjà parler ici j'ai DC. conclusion quasiment 294PV

Toute ces infos sont disponibles également dans Monstats.txt
Ici c'est en exemple pour une vally invoquée en normal, en hell elle serait plus forte.
Cependant elle à toujours un MLVL de 28 par terrible pour toucher les monstres en Hell :(





Code:
Mise à jour des stats
6FCD682B   6A 20            PUSH 20
6FCD682D   E8 C6E10100      CALL <JMP.&D2Common.#10992>
on a besoin de ce fichier

Skills.txt
Si vous ouvrez ce fichier avec Excel vous trouverez la skill Valkyrie en ligne 34
La colonne B vous donnera son ID=32
Fait Etrange 0x20 --> 32 en décimal :D
Cette fonction (10992) lit la colonne Param3 et place le résultat dans EAX (comme toutes les fonctions d'ailleurs)

Ici
Param3 from Skill.txt (colonne BI et BJ)
20=Valkyrie ID
Param3 = 5 = %AC Increase

Bref le pourcentage d'augmentation de DEF

Code:
Augmentation de la défense
6FCD6832   0FAFC5           IMUL EAX,EBP
6FCD6835   50               PUSH EAX
6FCD6836   68 AB000000      PUSH 0AB
6FCD683B   57               PUSH EDI
6FCD683C   E8 2BE30100      CALL <JMP.&D2Common.#10463>
On obtient
EAX=EAX*EBP
Hors assembleur on a DEF%=(SLVL-1)*Param3
La fonction 10463 (UnitPTr,Stat,Valeur) ici (ValkyrieUnit,0xAB,(SLVL-1)*Param3)

Le AB siginifie la propriété AB que l'on peut lire dans ce fichier (C'est grace à lui au passage si j'ai pu vous donnez les stats de la valkyrie de base tout à l'heure)
ItemStatCost.txt
0xAB --> 171 STATS_SKILL_ARMOR_PERCENT (ligne 173)

Bref en mode humain ca siginifie
AC% = (SLVL-1) * 5 (A partir de SLVL=2 rappelez vous)

Code:
 Mise à jour des ED%
6FCD6841   6A 20            PUSH 20
6FCD6843   E8 94E20100      CALL <JMP.&D2Common.#10991>
6FCD6848   0FAFC5           IMUL EAX,EBP
6FCD684B   50               PUSH EAX
6FCD684C   6A 19            PUSH 19
6FCD684E   57               PUSH EDI
6FCD684F   E8 18E30100      CALL <JMP.&D2Common.#10463>

10991 Lecture de la colonne Param2 dans Skills.txt
IDEM Avec Param2=20=%ED

ED%=(SLVL-1)*Param2 = (20)
ED% = (SLVL-1) * 20
On ecrit la propriété 0x19 --> 25 = STATS_DAMAGEPERCENT
Plus connu sous le terme de ED%
PAs Mal du tout 20%ED par Niveau :D

Code:
Mise à jour de AR%
6FCD6854   6A 20            PUSH 20
6FCD6856   E8 89E60100      CALL <JMP.&D2Common.#10993>
6FCD685B   0FAFC5           IMUL EAX,EBP
6FCD685E   50               PUSH EAX
6FCD685F   6A 77            PUSH 77
6FCD6861   57               PUSH EDI
6FCD6862   E8 05E30100      CALL <JMP.&D2Common.#10463>
Toujours la même avec param 4 maintenant

AR%=(SLVL-1)*Param4 (5 %TOhIt Increase)
0x77 --> 119 STATS_ITEM_TOHIT_PERCENT
Plus connu sous le terme de AR%






Code:
6FCD6867   56               PUSH ESI
6FCD6868   E8 C3DC0100      CALL <JMP.&D2Common.#10564>
6FCD686D   8BF8             MOV EDI,EAX
Transfert le STAT HPMAx dans EDI
Rappelez vous pour moi et mes 294 PV ca donne
EDI=EAX=125DC= Max HP

Code:
6FCD686F   6A 20            PUSH 20
6FCD6871   E8 4EE20100      CALL <JMP.&D2Common.#10990>
6FCD6876   8BC8             MOV ECX,EAX
6FCD6878   B8 1F85EB51      MOV EAX,51EB851F
6FCD687D   0FAFCF           IMUL ECX,EDI
6FCD6880   0FAFCD           IMUL ECX,EBP
6FCD6883   F7E9             IMUL ECX
6FCD6885   C1FA 05          SAR EDX,5
6FCD6888   8BC2             MOV EAX,EDX
6FCD688A   C1E8 1F          SHR EAX,1F
6FCD688D   03D0             ADD EDX,EAX
6FCD688F   03FA             ADD EDI,EDX

Voyons 10990 = Param1 dans Skills.txt (facile)

ECX=EAX=Param1 = HP%Increase (20)
EDI=Max HP
EBP=SLVL

EDX=ECX*EDI*SLVL/100
EDI=EDI+EDX

Bref en humain

PVMax=PVMax+(PVMax*20*(SLVL)/100)


Code:
Fixe le CurrentPV
6FCD6891   57               PUSH EDI
6FCD6892   6A 07            PUSH 7
6FCD6894   56               PUSH ESI
6FCD6895   E8 90DC0100      CALL <JMP.&D2Common.#10517>
La fonction 10517 (UnitPTr,STAT,Valeur) fixe la proprété stat avec la valeur poussée en

premier sur la pile.
Si on regarde ItemStatCost 7=CurrentHP
Bref la nouvelle valeur de Pointde Vie= la formule du dessus


Code:
Fixe le nombre de PV Max
6FCD689A   57               PUSH EDI
6FCD689B   6A 06            PUSH 6
6FCD689D   56               PUSH ESI
6FCD689E   E8 87DC0100      CALL <JMP.&D2Common.#10517>
IDEM
Ecrit la propriété 6 (MaxHP) avec la valeur calculée au dessus
 
M

Myrdinn

Invité
Code:
6FCD68A3   8B6C24 10        MOV EBP,DWORD PTR SS:[ESP+10]
EBP=PlrPTR
Une initialisatiopn de pointeur
Au passage rappelez vous si SLVL<2 on arrive directement ici et on n'a pas bénéficié des différent bonus de la valkyrie.

Code:
6FCD68A7   BF B0CFD16F      MOV EDI,D2Game.6FD1CFB0
EDI = ?
Si dans la partie adresse vous tapez 6fd1cfb0 vous trouverez le DWORD suivant
6FD1CFB0=20727073 en texte _rps une fois remis à l'endroit on obtient

(spr )=SPEAR Dans Weapons.txt (celui de base 3-15 DMG)
Jolie coïncidence :lol:
Hum radin le blizzard avec l'amazone :lol:

Code:
6FCD68AC   85FF             TEST EDI,EDI
6FCD68AE   74 73            JE SHORT D2Game.6FCD6923
6FCD68B0   8B4C24 38        MOV ECX,DWORD PTR SS:[ESP+38]
On test si EDI contient bien quelque chose sinon exit (on est jamais trop prudent)
ECX=SLVL

Code:
6FCD68B4   6A 04            PUSH 4
6FCD68B6   51               PUSH ECX
6FCD68B7   6A 20            PUSH 20
6FCD68B9   E8 66E20100      CALL <JMP.&D2Common.#10998>
La function 10998 contient une formule à base de la skill, 20=Valkyrie SkillID
ECX=SLVL
10998(20=ValkyrieSkillID,SLVL,4)
Resultat =PARAM5+PARAM6*(SLVL-1)

C'est le calcul du ILVL de l'objet

On est en train de créér un Spear(Spr)
Dont le ILVL = 28 + 3*(SLVL-1)
1 exemple avec 11 en valkyrie elle obtient un spear ILVL = 58

Rappelez vous que vous pouvez modifier les valeurs en direct avec OllyDBG. Si vous le souhaitez vous pouvez lui donner une épée, une dague, un arc matriarchal ....


Bon ca suffira pour le moment.
J'aime laisser un peu de suspens.

Je vous laisse faire les manipulations.
Dès que vous etes prêts, faites moi signe on continuera pour la suite de l'équipement de la Valkyrie.


EDIT
Si des assassins passent par ici, et ont lu jusqu'à cet EDIT (merci à eux)
Je peux evidemment faire le même topic pour les Shadow (Master et Warrior) ;)
 
K

Koko

Invité
Pour les allergiques à l'assembleur il reste les passages en couleur pour faire plus ample connaissance avec nos amies valkyries.

Ben il y en a pas... pauvre de moi.

Ah ok, c'est pas fini. Je vais lire l'assembleur en attendant. Merci pour ce post Myrdinn.

Je suis prêt à parier que nos amis les NPCs, les poules et autres animaux sont aux nombres de 14. (Pas sur pour les NPCs d'ailleurs)

En tout cas les NPC et les poules ont bien leurs entrées dans monstersat.txt (je crois même que c'est le cas pour les vaches immobiles).
 
M

Myrdinn

Invité
Provient du message de koko
Ben il y en a pas... pauvre de moi.

Ah ok, c'est pas fini. Je vais lire l'assembleur en attendant. Merci pour ce post Myrdinn.
C'est bon maintenant, enfin les parties en couleur sont vite lues :lol:



En tout cas les NPC et les poules ont bien leurs entrées dans monstersat.txt (je crois même que c'est le cas pour les vaches immobiles).
Quand je dit je suis prêt à parier, c'est que j'ai plus qu'une petite idée de ce qui se passe :rolleyes:
 
C

cyanna

Invité
Cherche cachet daspirine ! :eek:
Sinon euh pas besoin de faire un tel post, tu joue lama 1 fois et tu sais que valkirie cest nul :lolevil:
 
J

Joel

Invité
Intéressant, l'adresse pour les Ombres serait cool (je ferais l'analyse tt seul).

Je sens que je viens de trouver l'endroit ideal pour modder ma skill d'Ecuyer.

Question, saurais tu ou le jeu affecte le token AM a la valkyrie ? J'aimerais qu'elle ressemble a autre chose (style un paladin, un druide etc ...)

Je pense que ca doit se passer dans la partie Client de la skill mais j'ai jamais rien trouvé de flagrant.

EDIT : test effectué : une valkyrie n'avec un arc matriarchal ca roxx :D
 
M

Myrdinn

Invité
Provient du message de Joel
Intéressant, l'adresse pour les Ombres serait cool (je ferais l'analyse tt seul).
Ok je te donnerais ca, ils sont chez moi donc pas tout de suite

Je sens que je viens de trouver l'endroit ideal pour modder ma skill d'Ecuyer.
Tant Mieux :D
J'espères que l'équipement sera moins pourris que celui de la valkyrie :lol:

Question, saurais tu ou le jeu affecte le token AM a la valkyrie ? J'aimerais qu'elle ressemble a autre chose (style un paladin, un druide etc ...)

Je pense que ca doit se passer dans la partie Client de la skill mais j'ai jamais rien trouvé de flagrant.

Non jamais cherché, je regarderais ca.
Cependant dans les formules gérant l'IAS le jeu a besoin de trouver les TOKEN pour trouver le BaseFrame à partir du bon COF
et la vitesse d'animation à partir du AnimData.D2.
Bref c'est stoqué à un endroit. En mettant un breakpoint dessus ca donnera peut être quelque chose. Si je trouve quelque chose la dessus je te ferais signe.


EDIT : test effectué : une valkyrie n'avec un arc matriarchal ca roxx :D
Cool j'avais peur d'un crash graphique :D
 
J

Joel

Invité
Provient du message de Myrdinn
Ok je te donnerais ca, ils sont chez moi donc pas tout de suite

pas de probleme :p

Provient du message de Myrdinn
Tant Mieux :D
J'espères que l'équipement sera moins pourris que celui de la valkyrie :lol:

casque + armure + shield + sword ca devrait aller, je suppose qu'on peut aussi specifier la QUALITE de l'item spawné ? just epour savoir si je peut mettr eun%age de spawné des rares/uniks sur l'Ecuyer.

Provient du message de Myrdinn
Non jamais cherché, je regarderais ca.
Cependant dans les formules gérant l'IAS le jeu a besoin de trouver les TOKEN pour trouver le BaseFrame à partir du bon COF
et la vitesse d'animation à partir du AnimData.D2.
Bref c'est stoqué à un endroit. En mettant un breakpoint dessus ca donnera peut être quelque chose. Si je trouve quelque chose la dessus je te ferais signe.

Pas bête, j'y avais pas pensé ...

Provient du message de Myrdinn

Cool j'avais peur d'un crash graphique :D

je retesterais mais c avait l'air bon.
 
M

Myrdinn

Invité
Tu peux evidemment spécifier la qualité, j'ai pas encore abordée cette partie mais c'est quelques lignes plus bas.
ce sont les valeurs classiques
1 low
2 normal
3 superior
4 magic
5 set
6 rare
7 unique
8 craft

A ce sujet les shadow de l'assassin utilisent des objets rares et non des magiques comme la valkyrie.
 
G

Gariounette_LGT

Invité
on y aprend des truk ou la val reste un vulgaire mur pour ralentir les mostre un moment ?? D
 
K

kahell

Invité
excellent Myrdinn j'avait trop l'impression en voyant le listing d'asm de voir des aide du genre comment cracker truc ou machin :lol:


mais sinon c vrai que :eek: joli boulot
 
H

Hade$

Invité
Bonjour les amas :)

Je n'ai lu que les partie colorée :)

Donc je n'ai pas compris grand chose mais j'ai cependant noté un petit quelquechose :


PVMax=PVMax+(PVMax*20*(SLVL)/100)


Pour calculer la valeur PVMax, il faut connaitre PVMax ??? :eek:

Comme je n'ai pas tout lu, je ne peux pas dire ce qui ne va pas mais seulement que ca ne va pas

fin de la parenthèse :)
 
M

Myrdinn

Invité
@Hade$

Le PVMAX initial j'en parle un peu plus haut.

Sinon pour être plus exact j'aurais du noter
PVMaxFinal=PVMaxInitial + (PVMAxInitial*20*SLVL/100)

Enfin l'assembleeur ne fait pas la différence, il garde la même variable pour faitre cette opération. Il faut vraiment que j'arretes l'assembleur :rolleyes:
 
M

may²

Invité
hum, j'ai remarqué ca avec un petit logiciel pas très legit que l'on pouvait voir le matos d'une walkirie
 
Haut