Tracer les DLLs - Fonction de calcul des dégats physiques

P

Priam

Invité
Voilà j'ai une nouvelle question :razz:
La réponse me semble évidente après avoir lu le post (edit: mais visiblement j'avais fumé un truc pas net :D), mais comme ses conséquences peuvent être très intéressantes je préfère demander confirmation :D

Dans le cas d'un personnage utilisant 2 armes, déjà vu que les %ed des armes sont calculés différemment des autres %ed je pense que le %ed de l'une n'influe pas sur les dégâts effectués par l'autre?

En revanche les +dommages sont calculés tous ensemble, donc les +dommages sur une arme devraient également augmenter les dégâts effectués par l'autre arme?


Et sinon de manière générale y a-t-il des différences sur la manière dont sont calculés les dégâts lorsque le personnage utilise 2 armes?

Merci ;)




gros edit :razz:: j'ai fait des tests et visiblement même les +dommages sur une arme ne sont pas pris en compte pour les dégâts réalisés par l'autre ;)
et effectivement j'avais mal lu, puisque je suis passé à côté de ceci:
Provient du message de Myrdinn
La suite est donc la section 2A dans ma nomenclature elle concerne les attaquants ayant une arme à 2 mains.

Par contre je commence à douter de ceci du coup: :lol:
Provient du message de Myrdinn
Non elle est juste empirique, séparé les +Damage sur arme et armure n'a pas de sens d'un point de vue jeu.LE jeu ne gère pas les dégats de cette façon.

Et ma question se pose d'autant plus: quelles sont les différences dans les calculs des dégâts lors de l'utilisation d'une arme à une main d'une part, et de 2 armes d'autre part ;)
(et je me demande d'ailleurs aussi comment sont traités les dégâts pour les armes hybrides corps-à-corps/lancer ;))
Surtout qu'il se peut aussi que l'affichage et les dégâts réels diffèrent, donc en résumé, help Myrdinn :D
 
M

Myrdinn

Invité
Enfin une des 2 questions que j'attendais :D

Effectivement je ne parle pas du combat à 2 armes et c'est volontaire. En faite je comptait aborder cette partie comme un exercice pour le prochain post.

Pour l'instant je me contenterais de poser 3 hypothèses, vous me direz vous même dans le prochain post quelle est la bonne. Au pire je vous le dirais moi même ;)

Il n'existe pas de code supplémentaire. Les 3 méthodes possibles :
1) Les + x dégats des armes sont inclus dans les dégats de base de l'arme. (Les STATS_MIN_DAMAGE par exemple). C'est une solution pour eviter que les bonus d'une arme ne s'applique à l'autre arme. Il faut noter qu'en gérant le jeu de cette façon il sera difficile de traiter tout les cas (Lifesteal, Attack Rating, IAS ...) Nous le verrons très vite par la suite. Le ED% est un cas particulier car il a un effet plus important s'il est séparé des autres ED%. Mais peut etre qu'il en est de même pour le +x Damage.
2) On frappe une main après l'autre et le jeu équipe/désequipe les armes à chaque coup. Dans seul les bonus de l'arme en train de frapper sont pris en compte (y compris les +x dégats de cette arme)
3) LEs bonus des armes s'appliquent aux 2 armes saufs quelques exceptions. Bon l'expérience prouve que cette théorie est un peu faible.

En réalité il existe d'autre vairante. Les STATS_SECONDARY_... pourrait également correspondre à l'arme secondaire et pas seulement aux dégats secondaires (à 2 mains) des armes à 2 mains.

Désolé de rester vague mais je préfère vous faire aborder ce sujet dans les traces qui est la seule façon de prouver ce que j'avancerais à ce moment.

N.B. JE malmène la formule dans le seul but de vous obliger à regarder en détail ce qui se passe. En réalité cette formule est bonne, d'ailleurs à l'origine elle a été donné par les programmeurs du jeu à GFraizer sur le forum de Lurker Lounge il y a très longtemps maintenant, ils savent de quoi il parle :lol:
Je pense que j'éditerais bientôt cette partie ;)
 
P

Paul Siramy

Invité
Maître, on à le droit de répondre sans avoir regarder dans les dll, dites ?
 
P

Priam

Invité
Merci Myrdinn pour la réponse, même si elle reste vague :biglaugh:

(mais pour la peine il me faut rapidement la suite :razz: )
 
M

Myrdinn

Invité
Provient du message de Paul Siramy
Maître, on à le droit de répondre sans avoir regarder dans les dll, dites ?
Hum il y a peu de chance que je sois ton maitre dans ce domaine :D
Tu peux donner ton avis et les preuves hors tracage je suis toutes ouïes.
 
P

Paul Siramy

Invité
Bon alors, pour ma part
quelles sont les différences dans les calculs des dégâts lors de l'utilisation d'une arme à une main d'une part
Les armes dans weapons.txt ont des dommages à 1 mains, mais aussi d'autres à 2 mains. Donc dans le cas d'utilisation d'une arme à 2 mains, le jeu prendrait (conditionel hein) ses dommages dans une autre colonne, c'est tout.

et de 2 armes d'autre part
Quand tu frappes avec 2 armes, le jeu alterne les armes. Même quand un barbare fait Trombe, en fait il tape alternativement avec les 2 armes (j'ai du lire ça sur diabloii.net il y a 1 an je pense), donc puisque tu nous donnes le choix entre plusieurs possibilités je choisi
2) On frappe une main après l'autre et le jeu équipe/désequipe les armes à chaque coup. Dans seul les bonus de l'arme en train de frapper sont pris en compte (y compris les +x dégats de cette arme)

Et dans le cas d'un barbare équipé avec 2 armes à 2 mains ? Le problème ne se pose pas, car en fait ces armes à 2 mains ont également dans weapon.txt des dommages à 1 mains d'indiqués, donc ce sont ce sont ceux là qui sont utilisés, et alternativement bien sur.

Par contre le cas intéressant c'est avec Charge du Paladin, quand il tape avec son bouclier. Je me rappelle plus comment c'est fait, mais il me semble que les boucliers ont soit des dommages à 1 main d'indiqué, soit une colonne spéciale pour ça.

Ha oui, un autre cas intéressant, Joël avais testé un truc dans son Mod, il a fait s'équiper une amazone de 2 arcs simultanément. Quand il utilisait une skill, celle-ci se lançait 2 fois en fait. Bon ok, rien à voir avec le calcul de dommages, mais c'est marrant.

J'ai droit à un bon point Maître, ou je suis bon pour aller au coin avec un bonnet d'âne ?
 
M

Myrdinn

Invité
On verifiera tout ca en détail dans le trace :D
Sinon effectivement les 2 STATS
STATS_MINDAMAGE et STATS_SECONDARY_MINDAMAGE existent pour les armes à 2 mains et sont respectivement les dégats mini à 1 main et les dégats mini quand on est à 2 main. Ce sont 2 propriétés d'objet différentes et qui ont chacune comme base une colonne de weapons.txt modifié par "l'etheral factor" et les ED% sur l'arme en question.

Sinon les tournures de mes phrases et ta réponse ne laissent pas beaucoup de place au doute. Je suis en formation cette semaine, mais je pense que vous etes bientot prêt pour la suite. On verra la semaine prochaine au plus tôt.
 
M

Mescalito

Invité
Hmmm

J'ai commencé à lire tout ca plus sérieusement que la 1ere fois :)
Ce week-end, je vais faire mumuse si je suis assez fort pour pas passer à la pratique : jouer :D

J'commence par une remarque sur le code pour voir si j'ai tout saisi (juste 1 pcq jsuis au boulot là et c'est dur de se concentrer :D)

Provient du message de Myrdinn
Troisième et quatrième choix
0007DC5F......8B86 84000000...... MOV EAX,DWORD PTR DS:[ESI+84]
0007DC65......50..............................PUSH EAX
0007DC66......56..............................PUSH ESI
0007DC67......E8 D6710400............CALL 000C4E42(D2COMMON.dll Fonction 10291)
On place dans EAX le doubleWord situé en position +84 sur la pile.
EAX= Pointeur sur l'unité équipement.
ESI= Pointeur sur l'unité Attaquant.

Ce serait pas plutôt "On place dans EAX le doubleWord situé en position +84 par rapport à ESI" ?

je suppose donc que l'info sur l'équipement se trouve 84 DWord après le début du Pointeur Attaquant
(je suppose bien ?)

je poserais surement des questions/remarques bidon mais vaut mieux que je passe pour un *** une fois que de le rester toute ma vie :D
 
M

Myrdinn

Invité
Exact.
J'ai écrit un peu vite comme d'habitude.
Enfin c'est bien tu as tout compris je vais éditer.

Tes remarques et questions sont les bienvenues, n'hesite pas. Dans ce domaine bien malin celui qui n'a jamais de questions à poser (Je doute que tu passes pour un *** quelque soit ta question sur ce sujet).
 
V

vjeux

Invité
Section 2x
Dégats mini=(Dégats mini de base de l'arme(x1,5 si l'arme est ethérée)x (1+%ED de l'arme/100) + Dégats mini (Provenant de tout l'équipement arme,charme,armure ...)
J'ai pas compris comment avec les 3 lignes du dessus tu arrivais à cette conclusion :eek: J'ai du louper un truc !
 
M

Myrdinn

Invité
Non les 3 lignes juste au dessus récupèrent les dégats mini.
Ces dégats mini sont calculés ailleurs dans le code
En réalité la formule que je donne est extraite d'une autre fonction du jeu qui met à jour cette stat à partir de l'équipement/les auras/ malédictions ...

C'est déjà assez compliqué comme ça je suis obligé de vous donnez des éléments extérieurs à la DLL si je veux vous montrez une fonction dans sa globalité.
Autrement je n'arreterais pas de faire des apartés dans le code et on se retoruve avec un post de 4000 Lignes d'assembleur qui part dans tous les sens ;) encore plus incomprehensible
 
Y

yagoun

Invité
:D a chaque fois que je clique sur un lien j'ai une page qui n'a rien a voir avec le lien approprié alors ??? :D [:azgazarel:1]
 
G

guigolum

Invité
favori->ajouter aux favoris->rendre dispo hors connection

retour à la fac-> direction BU->emprunt d'un bouquin sur l'assembleur

(j'ai pas internet à la fac)

...BRAVO!!
..mais change ta connection...
test ca fait quoi d'ailleurs?? ca a pas un rapport avec comp?
 
Haut