Page 1 sur 1

Weidu : patcher "no failure" et "No wildsurge"

Posté : sam. 07 août 2021, 17:45
par deratiseur
J'ai crée un objet qui lance "Soins des blessures légères" sous certaines condition. Pour ne pas que l'objet rejoue à chaque fois l'animation de lancer et le son, j'ai mis
COPY_EXISTING ~sppr103.spl~ ~override/pxl2sil1.spl~ (copier le sort de base en sort personnalisé)
WRITE_BYTE 0x1c 0 WRITE_BYTE 0x22 0 WRITE_BYTE 0x25 0 WRITE_ASCII 0x10 ~~ #8 (type : spécial, animation : rien, école : rien, son : rien)
Je tiens à garder le sort de base pour qu'il soit en accord avec les mods installés. Mais c'est là que ça coince : je voudrais rajouter "no failure" et "no wildsurge" pour que le sort soit lancé même en cas de zone de magie morte, par exemple. Quel est le code weidu ?
J'ai essayé WRITE_BYTE 0x18 (THIS | 6), ça plante.

Posté : dim. 08 août 2021, 06:47
par Freddy_Gwendo
Essaie

Code : Tout sélectionner

WRITE_LONG 0x18 THIS | BIT14 | BIT15
avec BIT14 = Ignore dead-magic and wild surge effect [No Failure dans DLTCEP]
et BIT15 = Ignore wild surge effect (i.e. trigger/contingency) [No wildsurge dans DLTCEP]

Par ailleurs, le code exact est:

Code : Tout sélectionner

WRITE_SHORT 0x1c 0
WRITE_SHORT 0x22 0

Posté : dim. 08 août 2021, 06:55
par deratiseur
Ça marche. merci :)

Posté : dim. 08 août 2021, 06:59
par Freddy_Gwendo
De rien.
J'ai édité mon précédent message. ;)

Et si tu veux supprimer un flag, c'est

Code : Tout sélectionner

	WRITE_LONG 0x18 (THIS BAND BNOT BIT25)	// remove Castable when silenced
	WRITE_LONG 0x18 (THIS BAND BNOT BIT14)	// remove Non-magical ability

Posté : dim. 08 août 2021, 14:06
par deratiseur
Cool. Je me resservirait de ça. En fait tout ce que j’apprends à droite, à gauche, m'en ressert à l'occasion. Le dukp est farci de "petits trucs" glanés dans d'autres modules.

Bien obligé, vu que je ne comprend rien aux codes weidu.

Posté : jeu. 19 août 2021, 17:38
par deratiseur
En fait dans mon TP2 j'avais déjà
WRITE_LONG 0x18 (THIS | 49152)
qui fait la même chose. D'où est-ce que j'ai tiré ça ?

Re: Weidu : patcher "no failure" et "No wildsurge"

Posté : lun. 27 nov. 2023, 19:05
par deratiseur
J'ai ressorti ce vieux sujet et j'en ai profité pour faire un test. j'ai utilisé :

Code : Tout sélectionner

COPY_EXISTING	~spwi103.spl~						~override/pxl2tes1.spl~ WRITE_LONG 0x18 (THIS BOR BIT14) WRITE_LONG 0x18 (THIS BOR BIT15)
COPY_EXISTING	~spwi103.spl~						~override/pxl2tes2.spl~ WRITE_LONG 0x18 (THIS | 49152)
COPY_EXISTING	~spwi103.spl~						~override/pxl2tes3.spl~ WRITE_LONG 0x18 THIS | BIT14 | BIT15
COPY_EXISTING	~spwi103.spl~						~override/pxl2tes4.spl~ WRITE_SHORT 0x1c 0	WRITE_SHORT 0x22 0
Et utilisé un comparateur de fichier (même contenu) pour vérifier -> les 3 premiers sorts sont identiques, le 4eme (suivant la méthode donnée par Freddygwendo en 2eme message) ne l'est pas, et en fait ne patche pas les valeur recherchées.

Re: Weidu : patcher "no failure" et "No wildsurge"

Posté : lun. 27 nov. 2023, 19:55
par JohnBob
Pas sur de bien comprendre le problème, mais ton code à l'air de marcher...

Code : Tout sélectionner

COPY_EXISTING	~spwi103.spl~						~override/pxl2tes4.spl~ WRITE_SHORT 0x1c 0	WRITE_SHORT 0x22 0

Ne modifie pas la même chose c'est tout, 0x1c correspond au spell type (special, wizard, innate...) et 0x22 à l'animation du sort.

Bon je suis pas une référence mais tu utilises les trois premières méthodes (avec THIS) pour modifier les Flags d'un fichier.

La quatrième méthode est pour de simples valeurs, textes ou mots clés d'un fichier.

En regardant dans Near Infinity cela donne une bonne idée de la différence, les flags sont des cases à cocher, le reste des valeurs, du texte ou des mots.

EDIT : La méthode de Freddy_Gwendo corrige simplement le fait que dans le premier post tu as écris WRITE_BYTE au lieu de WRITE_SHORT.

Dans Near Infinity on peut voir la "taille" (size) des offfsets.

1h correspond à WRITE_BYTE
2h à WRITE_SHORT

Re: Weidu : patcher "no failure" et "No wildsurge"

Posté : mar. 28 nov. 2023, 10:17
par deratiseur
JohnBob a écrit : lun. 27 nov. 2023, 19:55 1h correspond à WRITE_BYTE
2h à WRITE_SHORT
Et hop, j’apprends ENCORE un truc. Bon, ben je suis bon pour vérifier tous les patchages de l'interplan. Non pas que je ne suis pas sur de moi, mais je suis en phase de traque de bugs comme c'est pas possible.