Page 1 sur 1

Ce code me rend fou

Posté : dim. 12 nov. 2023, 09:27
par deratiseur
J'en ai fais, des code pour patcher tous les effets d'un sort, ou des codes pour patcher toutes les habilités d'un sort. il y en a dans le dukp, dans l'interplan, dans todd, bref, j'en ai usé et abusé. Mais celui là ne veux rien savoir.

je voudrais passer le sort "Immobilisation des morts-vivants" en innate. Pour un sort avec une seule habilité, c'est facile :

Code : Tout sélectionner

WRITE_BYTE 0x1c 4	WRITE_BYTE 0x74 4 	WRITE_BYTE 0x84 1
Mais celui là à plusieurs habilités, ça devient donc :

Code : Tout sélectionner

WRITE_BYTE 0x1c 4	
READ_LONG 0x64 abilities_off
READ_SHORT 0x68 num_abilities
FOR (i = 0; i < num_abilities; i += 1) BEGIN			// pour chaque habileté
	WRITE_BYTE (abilities_off + 0xc0*i + 0x2) 4
	WRITE_BYTE (abilities_off + 0xc0*i + 0x12) 1
END
Où ai je trouvé le 0xc0 -> différence (en hexadécimal) entre le dernier offset de la deuxième habilité 2 et le dernier offset de la première habilité.
Où ai je trouvé 0x2 et 0x12 -> sur l'IEDSP, format des sorts, et aussi dans la formule "offset désiré -72". (double confirmation)
Sauf que ça marche pas. Ça me rend fou.

Re: Ce code me rend fou

Posté : dim. 12 nov. 2023, 10:17
par Selphira
Je ne sais pas si cela va fonctionner, le code n'est pas testé, mais voici ce que je te propose.
Le but est d'utiliser la fonction native de Weidu pour naviguer dans les en-têtes du sort.

Code : Tout sélectionner

WRITE_BYTE 0x1c 4
GET_OFFSET_ARRAY headerOffsets SPL_V10_HEADERS
PHP_EACH headerOffsets AS _ => headerOffset BEGIN
    WRITE_BYTE (headerOffset + 0x2) 4
    WRITE_BYTE (headerOffset + 0x12) 1
END

Re: Ce code me rend fou

Posté : dim. 12 nov. 2023, 10:57
par deratiseur
Cool, ça marche :) Merci beaucoup
Et comme ça ne cible pas d'autre offset que l’icône et le temps d'incantation, je peux en plus l'uiliser sans crainte que le sort soit changé entre oBG2 et BG2EE. Super pratique, merci beaucoup :)