Page 1 sur 1

[PRO] Créer un projectile à utiliser dans un sort

Posté : dim. 24 sept. 2017, 17:03
par Cocrane
Je désire créer une variante du piège à crâne.

J'ai copié le fichier TRAPKUL.PRO et j'ai fait mes modifications.

J'ai fait un TP2 avec les lignes suivantes:
ADD_PROJECTILE ~PDBA1CH8\PRO\COSKUBM.pro~ ~Piege crane Bhaal~
COPY_EXISTING ~PDBA1CH8\PRO\COSKUBM.pro~ ~override~
Les fichiers IDS PROJECL.IDS et MISSILE.IDS sont bien à jour et le projectile est en dernière position.

Sous DLTCEP, j'ouvre le sort et je cherche mon nouveau projectile. Visiblement, il n'est pas proposé.

J'ai mis à jour DLTCEP et je l'ai fermé et ouvert.


Cocrane

Posté : lun. 25 sept. 2017, 23:00
par Cocrane
Je viens de relancer DLTCEP et mon projectile est bien là.

J'ignore comment c'est réglé mon problème mais je peux utiliser mon projectile. ;)

Cocrane

Posté : mar. 26 sept. 2017, 01:28
par Freddy_Gwendo
J'arrive à la bourre. :$

Lorsque tu modifies les fichiers ids et 2da et que DLTCEP est ouvert, il faut que tu cliques sur Reload game data pour valider les changements.

Sinon, privilégie COPY à COPY_EXISTING lorsque tu copies un fichier à partir du répertoire de ton mod.

Posté : mar. 26 sept. 2017, 18:44
par Cocrane
Salut Freddy,

par habitude je faisais RELOAD CHITIN et ça se passait bien.

Je note que pour certaines données, il faut appuyer sur le bouton Reload game data.

OK pour le mot clé COPY. ;)


Il me reste à changer la couleur du sort pour l'ensemble des BAM pour tendre vers le violet. Il n'y a toujours pas d'outil pour faire toutes les bams d'un coup?


Cocrane

Posté : mar. 26 sept. 2017, 22:02
par Freddy_Gwendo
Malheureusement, Reload chitin ne suffit pas pour valider certaines modifications :

1. Tu ajoutes un objet, un sort, une créature, une carte... sans nouveau texte : Reload chitin.
2. Tu ajoutes un élément avec du texte : Reload chitin + Reload dialog.
3. Tu modifies les fichiers systèmes (ids, 2da, pro...) : Reload game data.

Sinon, ton fichier bam est un bien un fichier d'effet de sort, pas des icônes ? Si oui, donne-moi le nom du fichier original et je t'envoie une petite vidéo pour te montrer comment on peut la modifier en quelques secondes. Tu n'auras plus qu'à t'amuser pour pondre tes bons réglages.

Posté : mer. 27 sept. 2017, 18:35
par Cocrane
Cool si c'est rapide. :whistle3:

C'est l'animation piège à crâne.

PRO

TRAPSKUL

Bam
SKLT pour le crâne
SKLH pour les fragments (à priori car ce fichier n'est pas mentionné dans le fichier .PRO)

Cocrane

Posté : sam. 18 nov. 2017, 10:16
par Cocrane
Pour changer la couleur de l'animation, je passe par NI (merci Freddy pour l'explication).

Il y a deux animations à changer:
Bam
SKLT pour le crâne
SKLH pour les fragments (à priori car ce fichier n'est pas mentionné dans le fichier .PRO)


Le soucis c'est le paramétrage du projectile via DLCET.

- SKLT (crane) est paramétré dans le champ Projectile BAM
> je change la BAM par celle qui est avec la couleur violette. Ca fonctionne bien.

- SKLH (fragments)
> je clique sur le bouton "AREA EXTENSION HEADER". L'animation pour les fragments de l'explosion est "0x0400 trap_skull".
Je retrouve cette ligne

dans le fichier animate.ids
"0x0400 TRAP_SKULL"

et sous animsd.ids
"0x0400 SKLH CGAMEANIMATIONTYPE_TRAP_SKULL".

Il faut que je créé une animation SKLV (pour les fragments avec la couleur violette) et que j'ajoute cette animation aux deux fichiers).

Avons-nous un code qui permet de les ajouter proprement afin d'éviter un conflit avec un autre mod? (utilisation du même n° d'emplacement ou du nom)


Cocrane



Image

Posté : dim. 26 nov. 2017, 12:31
par Cocrane
Je relance le sujet n'ayant pas de solution actuellement.

Qui pourrait me donner des infos?


Cocrane

Posté : dim. 26 nov. 2017, 15:27
par Freddy_Gwendo
Oup! J'étais persuadé d'avoir répondu.

En fait, 0x0400 trap_skull est un fichier d'animation au même titre que les animations de créatures. Je ne crois pas qu'on puisse ajouter des slots en dessous de 0x1000. En fait, IA ne le permet pas. Quant aux versions EE, je n'ai pas essayé...
Essaie d'utiliser un fichier vvc à la place.

Posté : dim. 26 nov. 2017, 17:47
par Cocrane
Je pense que je n'ai pas expliqué clairement le problème que j'ai finalement aussi avec d'autre animations à créer.

Le projectile définit l'animation proprement dite du projectile mais aussi celle de l'impact en cas d'effet de zone.

Cas du piège à crâne: TRAPKUL.pro

SKLT.bam: animation du crâne qui arrive sur la cible.

Sur DLTCEP, on peut la voit sur l'écran principal et personnaliser la couleur de l'animation d'origine.
TRAPSKUL_1.jpg
En cliquant sur le bouton, "Edit extension area", on a un nouvel écran, où l'on peut paramétrer l'animation liée à l'impact.
TRAPSKUL_1.jpg
A priori, on peut aussi paramétrer la couleur de l'animation d'origine mais dans le jeu, la couleur ne change pas contrairement à l'animation du projectile. Idem avec NI.

0x0400 trap_skull existe dans le fichier animate.ids
"0x0400 TRAP_SKULL"

et sous animsd.ids
"0x0400 SKLH CGAMEANIMATIONTYPE_TRAP_SKULL".

SKLH.BAM correspond à l'animation de l'explosion du crâne.

Vu que je n'arrive pas à modifier la couleur de l'animation liée à l'impact, je voulais en créer une nouvelle avec la bonne couleur et créer mon projectile qui pointerait dessus.
Il faut donc que j'ajoute une ligne dans le fichier animate.ids et animsd.ids. Je peux le faire à la main. Mais il y a un risque de conflit avec un autre mod.

Existe t'il un moyen auto et propre pour ajouter des données dans ces fichiers?
Sinon, je m'y prend p.e mal pour personnaliser la couleur de l'animation d'impact. Qui a déjà réussit ce point?

Cocrane

Posté : dim. 26 nov. 2017, 21:39
par Freddy_Gwendo
On parle bien de la même chose. ;)

Mais je crains (en fait, je n'ai jamais vérifié) que le nombre de slots disponibles pour ce type d'animations soit limité. C'est la raison pour laquelle Infinity Animations modifie l'exécutable pour augmenter le nombre de slots des animations de créatures. Malheureusement, il ne modifie rien en dessous de 0x1000.
Au pire, tu n'as rien à perdre à tenter d'ajouter un 0x0420 en utilisant un code équivalent à celui que je t'ai passé pour le golem d'argile :

Code : Tout sélectionner

APPEND ~animate.ids~ ~0x0420 MYSKULTRAP~ UNLESS ~^0x0420~
APPEND ~anisnd.ids~ ~0x0420 MYSK     CGAMEANIMATIONTYPE_MYSKULTRAP~ UNLESS ~^0x0420~
avec MYSK correspondant au fichier BAM de ton explosion.

Après tu essaies de l'appliquer à ton projectile. Et tu testes in-game. Au pire (enfin j'espère), tu auras droit à un CTD. Il te suffira de désinstaller.

Posté : dim. 26 nov. 2017, 23:01
par Cocrane
Merci pour la syntaxe. Je vais tester. ;)

Je me posais la question sur AI si il était possible aussi d'ajouter des animations autre que les créatures avec?


Bon je viens de tester, ça plante lorsque le crâne arrive sur la zone d'impact. :'(

Cocrane

Posté : jeu. 30 nov. 2017, 23:55
par Freddy_Gwendo
Et si tu remplaçais le projectile secondaire par un fichier vvc utilisant ton fichier bam violet ?

Posté : mar. 05 déc. 2017, 21:36
par Cocrane
La liste déroulante ne contient pas de valeur nulle.

Lorsque tu ajoutes un vvc, de mémoire (mon teste date un peu), ça ajoute une animation supplémentaire. Si je me trompais, j'ignore comment convertir une bam (explosion crâne violet) en un VVC.

J'ai le même problème avec une boule de feu que je veux transformer en une boule de glâce. L'explosion reste dans les couleurs orange.

Cocrane

Posté : mar. 05 déc. 2017, 22:09
par Freddy_Gwendo
J'ai créé une boule de glace il y a un bail. Je vais la rechercher pour te la passer.

Quant à ton autre projectile, il faut que tu décoches la case "Draw fragments" et coche la case vvc. À côté, tu saisis le nom de ton fichier vvc fabriqué à partir de ton fichier bam : il n'y a pas besoin de créer une animation dans le fichier animate.ids. Ce n'est qu'une bam utilisée comme avec l'effet #215.

Posté : mer. 06 déc. 2017, 21:36
par Cocrane
J'ai retesté avec le paramètre:
- fragment désactivé
- VVC activé et un fichier VVC contenant la bam Fragment liée à l'éclatement du crâne (SKLH).


Résultat:
- pas de plantage.
- le crâne arrive sur sa cible et explose.
- un seul fragment apparait.

Si je réactive le fragment j'ai la même chose plus les fragments d'origine.
Si je mets mon animation fragment, ça plante à nouveau.

Cocrane

Posté : dim. 07 janv. 2018, 12:18
par Cocrane
J'aborde un autre sujet lié à la création d'un projectile que l'on veut voir affecté à un sort.

Je crée le projectile puis le sort. Dans le sort, je choisis le projectile que j'ai créé. Tout va bien car le lien est fait manuellement.

Comment gérer ce point si le projectile et le sort sont à créer ensemble via le .TP2?
Après avoir consulté WEIDU, il faut en gros traiter le problème en faisant référence au nom du projectile dans la création du sort.
Exemple:
ADD_PROJECTILE ~PDBA1CH8\PRO\COEPID1.pro~ ~Chaine epidemie~
ADD_PROJECTILE ~PDBA1CH8\PRO\COEPID2.pro~ ~maillon chaine epidemie~

// Sorts
LOAD_TRA ~PDBA1CH8\LANGUAGE\FRENCH\Sorts.TRA~
COPY ~PDBA1CH8\SPELL\coepid1.spl~ ~override~ // épidémie
SAY NAME1 @8
WRITE_SHORT 0x09c ~%COEPID1%~
J'ai le cas particulier où un projectile fait référence à un autre projectile dans le cadre de l' "AREA EXTENSION".

Comment créer le 1ier projectile et signaler qu'il utilise un nouveau projectile dans l' "AREA EXTENSION" pour le champ "projectile explosion"? (j'ai repris le sort Chaine d'éclair et son projectile)

Cocrane

Posté : dim. 07 janv. 2018, 13:52
par Freddy_Gwendo
Si j'avais su, j'aurais terminé la fonction de création automatique de projectile que je m'étais amusé à écrire il y a plusieurs mois. ;)

Tout d'abord, un petit conseil lorsque tu assignes un projectile à un sort : évite d'assigner le projectile à une adresse fixe et privilégie les fonctions WeiDU. D'abord, ça t'évite des lignes de codes inutiles si ton sort a plusieurs headers (un par niveau par exemple). Mais surtout, si tu ajoutes ou supprimes un effet à ton sort en cours de route, tes adresses vont changer. Donc :

Code : Tout sélectionner

COPY ~%MOD_FOLDER%/Kits/Chevalier/GWCD222.spl~	~override/GWCD222.spl~

	[color="#00FFFF"]LPF ALTER_SPELL_HEADER INT_VAR projectile = (IDS_OF_SYMBOL (projectl GWManBS) + 1) END[/color]

BUT_ONLY


COPY ~%MOD_FOLDER%/Kits/GWCD212.spl~	~override/GWCD212.spl~	SAY NAME1 #12041	SAY UNIDENTIFIED_DESC #12160

	WRITE_LONG 0x18 THIS | BIT25			// add Castable when silenced

	[color="#00FFFF"]LPF ALTER_SPELL_HEADER INT_VAR projectile = (IDS_OF_SYMBOL (projectl GWInAr25) + 1) END[/color]

BUT_ONLY


COPY ~%MOD_FOLDER%/Kits/Chevalier/GWTemSa.spl~	~override/GWTemSa.spl~	SAY NAME1 @7503019	SAY UNIDENTIFIED_DESC @7719306

	[color="#00FFFF"]LPF ALTER_SPELL_HEADER INT_VAR projectile = (IDS_OF_SYMBOL (projectl GWTemSaP) + 1) END[/color]

BUT_ONLY

Ceci étant dit, petit florilège des codes WeiDU à utiliser pour modifier un projectile, en commençant par le plus simple :

Code : Tout sélectionner

// Flèche purificatrice.
// ---------------------

COPY_EXISTING ~ARROWEX.pro~ ~override/GWFlePu.pro~					// 3-Arrow Exploding (ARROWEX)

	WRITE_SHORT 0x00a 60								// Projectile speed

	WRITE_LONG 0x200 THIS | BIT6							// Area projectile flags : ajoute Affect only enemies

	PATCH_FOR_EACH index2 IN 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 BEGIN
		WRITE_BYTE %index2% 80							// Smoke colours : 80-Saturated Bronze
	END

BUT_ONLY

ADD_PROJECTILE ~override/GWFlePu.pro~ ~Arrow of Purification~


// Flèche de flammes noires.
// -------------------------

COPY_EXISTING ~ARROWFLI.pro~ ~override/GWFleFN.pro~					// 188-Flame arrow ice (ARROWFLI)

	PATCH_FOR_EACH index1 IN 0x124 0x125 0x126 0x127 0x128 0x129 0x12a BEGIN
		WRITE_BYTE %index1% 29							// Projectile colours : 29-Red Tinted Black
	END

	PATCH_FOR_EACH index2 IN 0x12c 0x12d 0x12e 0x12f 0x130 0x131 0x132 BEGIN
		WRITE_BYTE %index2% 72							// Smoke colours : 72-Steel Gray
	END

BUT_ONLY

ADD_PROJECTILE ~override/GWFleFN.pro~ ~Arrow of Dark Flames~

Code : Tout sélectionner

// Bâtons de magicien
// ------------------

ACTION_FOR_EACH MMissile_Proj IN ~GWMMisBl~ ~GWMMisCy~ ~GWMMisGd~ ~GWMMisMa~ ~GWMMisPu~ ~GWMMisRd~ ~GWMMisVt~ ~GWMMisWh~ BEGIN

	COPY_EXISTING ~MAGICMIS.pro~ ~override/%MMissile_Proj%.pro~
		TO_UPPER %DEST_RES%

		WRITE_ASCIIE 0x104 "%DEST_RES%" #8					// Projectile animation (BAM)

	BUT_ONLY
	ADD_PROJECTILE ~override/%MMissile_Proj%.pro~

END


// Dagues de jet.
// --------------

ADD_PROJECTILE ~%MOD_FOLDER%/Proj/GWDag51.pro~ ~Dagger Green~	// Dague de lancer verte

COPY_EXISTING ~GWDag51.pro~ ~override/GWDag52.pro~		// Dague de lancer bleue

	WRITE_BYTE 0x0128 82								// Projectile color 5
	WRITE_BYTE 0x0129 68								// Projectile color 6

ADD_PROJECTILE ~override/GWDag52.pro~ ~Dagger Blue~

Code : Tout sélectionner

// Lance alicorne.
// ---------------

COPY_EXISTING ~LIGHTBLT.pro~ ~override/GWLceAli.pro~	// 

	WRITE_SHORT 0x00a 40								// Projectile speed
	WRITE_ASCII 0x010 GWTRA19 #8							// WAVC file (travelling)
	WRITE_LONG  0x100 THIS | BIT4 | BIT6 | BIT7					// BAM projectile flags : Bit4 : Enable area height usage - Bit6 : Enable light spot - Bit7 : Enable brighten flags
 	WRITE_ASCII 0x104 GWLCEALP							// Projectile animation
	WRITE_SHORT 0x116 30								// Light spot intensity (Z)
	WRITE_SHORT 0x118 20								// Light spot width (X)
	WRITE_SHORT 0x11a 45								// Light spot height (Y)

BUT_ONLY

ADD_PROJECTILE ~override/GWLceAli.pro~ ~Alicorn Lance~

Code : Tout sélectionner

// Potions.
// --------

ACTION_FOR_EACH Potions_Proj IN ~GWPotnAg~ ~GWPotnBl~ ~GWPotnCy~ ~GWPotnGd~ ~GWPotnJa~ BEGIN

	COPY_EXISTING ~MAGICMIS.pro~ ~override/%Potions_Proj%.pro~
		TO_UPPER %DEST_RES%

		WRITE_SHORT 0x00a 20 							// Projectile speed (0x01 to 0xFF) : 1 à 255
		WRITE_ASCIIE 0x104 "%DEST_RES%" #8					// Projectile animation (BAM)

		PATCH_IF ("%DEST_RES%" STRING_COMPARE_CASE "GWPotnBl" = 0) BEGIN
			WRITE_LONG 0x100 (THIS BAND BNOT BIT7)				// BAM projectile flags : remove Bit7 : Enable brighten flags (Translucent)
		END

	BUT_ONLY

	ADD_PROJECTILE ~override/%Potions_Proj%.pro~

END

Code : Tout sélectionner

// Détection du Mal.
// -----------------

COPY_EXISTING ~INAREA.pro~ ~override/GWInAr25.pro~					// 94-Instant area effect (INAREA)	==> 697 (81') = 25 m

	WRITE_SHORT 0x204 256								// 9 m = 30' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 697								// 25 m = 81' Area of effect (divide by approx 8.5 to receive diameter in feet)

BUT_ONLY

ADD_PROJECTILE ~override/GWInAr25.pro~ ~Instant area effect (25 m)~

Code : Tout sélectionner

// Rejet du Chaos - du Mal.
// ------------------------

COPY_EXISTING ~INAREA.pro~ ~override/GWInAr12.pro~					// 94-Instant area effect (INAREA)	==> 341 (39') = 12 m

	WRITE_SHORT 0x204 341								// 12 m = 39' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 341								// 12 m = 39' Area of effect (divide by approx 8.5 to receive diameter in feet)

BUT_ONLY

ADD_PROJECTILE ~override/GWInAr12.pro~ ~Instant area effect (12 m)~


// Protection contre le Mal sur 3 m (Épée sainte et Licornes).
// -----------------------------------------------------------
COPY_EXISTING ~INAREAPA.pro~ ~override/GWIAPAIC.pro~					// 158-Instant Area (Party Only) (INAREAPA)	==> 256 (30') = 9 m

	WRITE_LONG 0x0c THIS | BIT4							// Sparking flags = bit 4: Do not affect direct target

BUT_ONLY

ADD_PROJECTILE ~override/GWIAPAIC.pro~ ~Instant Area (Party Only, 9 m)~


// Épée sainte protectrice - Beauté aveuglante - Beauté surnaturelle.
// ------------------------------------------------------------------

COPY_EXISTING ~INAREANP.pro~ ~override/GWIANP20.pro~					// 159-Instant Area (Not Party) (INAREANP)	==> 512 (60') = 18 m

	WRITE_SHORT 0x204 512								// 18 m = 60' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 512								// 18 m = 60' Area of effect (divide by approx 8.5 to receive diameter in feet)

BUT_ONLY

ADD_PROJECTILE ~override/GWIANP20.pro~ ~Instant Area (Not Party, 18 m)~


// Bénédiction de l'eau : zone d'effet de l'explosion de l'eau bénite.
// --------------------

COPY_EXISTING ~INAREANS.pro~ ~override/GWHlyWat.pro~					// 186-Non sprite Area (INAREANS)	==> 128 (15') = 4,5 m car 43 (5' = 1,5 m) ne touche personne autour.

	WRITE_SHORT 0x204 128 								// 4,5 m = 15' Trigger radius (divide by approx 8.5 to receive diameter in feet) 
	WRITE_SHORT 0x206 128 								// 4,5 m = 15' Area of effect (divide by approx 8.5 to receive diameter in feet) 

BUT_ONLY

ADD_PROJECTILE ~override/GWHlyWat.pro~ ~Non sprite Area (5 m)~


// Détection des chausse-trappes.
// ------------------------------

COPY_EXISTING ~INAREANS.pro~ ~override/GWDetPg.pro~					// 186-Non sprite Area (INAREANS)	==> 341 (39') = 12 m

	WRITE_SHORT 0x204 341				 				// 12 m = 39' Trigger radius (divide by approx 8.5 to receive diameter in feet) 
	WRITE_SHORT 0x206 341 								// 12 m = 39' Area of effect (divide by approx 8.5 to receive diameter in feet) 

BUT_ONLY

ADD_PROJECTILE ~override/GWDetPg.pro~ ~Non sprite Area (12 m)~

Code : Tout sélectionner

// Épée sainte purificatrice.
// --------------------------

COPY_EXISTING ~INAREASM.pro~ ~override/GWIASm20.pro~					// 205-Instant area effect small (INAREASM)	==> 170 (19') = 6 m

	WRITE_SHORT 0x204 170								// 6 m = 20' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 170								// 6 m = 20' Area of effect (divide by approx 8.5 to receive diameter in feet)

BUT_ONLY

ADD_PROJECTILE ~override/GWIASM20.pro~ ~Instant area effect small (6 m)~

Code : Tout sélectionner

// Lame - Arc solaire (aveuglement).
// ---------------------------------

COPY_EXISTING ~SMLLNPC.pro~ ~override/GWAr08NP.pro~					// 218-Small Area (Not Party) (SMLLNPC)	==> 75 (8') = 2,5 m

	WRITE_SHORT 0x204 75								// 2,5 m = 8' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 75								// 2,5 m = 8' Area of effect (divide by approx 8.5 to receive diameter in feet)

BUT_ONLY

ADD_PROJECTILE ~override/GWAr08NP.pro~ ~Small Area (Not Party, 8')~

Code : Tout sélectionner

// Rayonnement saint.
// ------------------

COPY_EXISTING ~SMLLARNC.pro~ ~override/GWArSm03.pro~					// 216-SmlArea Ignore Center (SMLLARNC)	==> 86 (10') = 3 m

	WRITE_SHORT 0x204 86								// 3 m = 10' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 171								// 6 m = 20' Area of effect (divide by approx 8.5 to receive diameter in feet)

BUT_ONLY

ADD_PROJECTILE ~override/GWArSm03.pro~ ~SmlArea Ignore Center (3 m)~

Code : Tout sélectionner

// Festin des Héros - Festin des Champions.
// ----------------------------------------

COPY_EXISTING ~SPARBLPA.pro~ ~override/GWBlPa24.pro~					// 160-Sparkle Area Blue (Party Only) (SPARBLPA)	==> 682 (79') = 24 m

	WRITE_SHORT 0x204 682								// 18 m = 60' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 682								// 18 m = 60' Area of effect (divide by approx 8.5 to receive diameter in feet)

BUT_ONLY

ADD_PROJECTILE ~override/GWBlPa24.pro~ ~Sparkle Area Blue (Party Only, 24 m)~

Code : Tout sélectionner

// Silence sur 5 m de Licorne (seulement les ennemis).
// ---------------------------------------------------

COPY_EXISTING ~SPARBLNP.pro~ ~override/GWBlNP05.pro~					// 149-Sparkle Area Blue (SPKLARBL)	==> 150 (17') = 5 m

	WRITE_SHORT 0x204 150								// 5 m = 17' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 150								// 5 m = 17' Area of effect (divide by approx 8.5 to receive diameter in feet)

BUT_ONLY

ADD_PROJECTILE ~override/GWBlNP05.pro~ ~Sparkle Area Blue (5 m)~

Plus compliqué : modifier des valeurs des projectiles secondaires, il faut utiliser les adresses suivantes :

Code : Tout sélectionner

0x00212 	2 (short) 	Fragment animation (animate.ids)
0x00214 	2 (word) 	Secondary projectile (projectl.ids-1)
0x00216 	1 (byte) 	Trigger count (used if bits 8 and 9 at 0x200 are not set)
0x00217 	1 (byte) 	Explosion animation (fireball.ids)
0x000218 	1 (byte) 	Explosion colour
0x00021a 	2 (bytes) 	Explosion projectile (projectl.ids), played on affected creatures
0x00021c 	8 (resref) 	Explosion animation (VVC)
0x000224 	2 (word) 	Cone width (1 to 359)
Exemples :

Code : Tout sélectionner

// Pureté de la Nature.
// --------------------

COPY_EXISTING ~NEWBOLT1.pro~ ~override/GWBoltVt.pro~					// 241-New Lightning Bolt (No Bounce) (NEWBOLT1) : vert

	WRITE_ASCII 0x136 GWCHLGV2 #8							// Trailing animation 1 (BAM)

ADD_PROJECTILE ~override/GWBoltVt.pro~ ~New Lightning Bolt Green (No Bounce)~

COPY ~%MOD_FOLDER%/Proj/GWPurNa.pro~ ~override/GWPurNa.pro~				// 213-Chain Lightning (LIGHTCHA) Vert + ennemis

	SET proj = (IDS_OF_SYMBOL (projectl GWBoltVt) + 1)
	WRITE_SHORT 0x21a proj								// Explosion projectile (projectl.ids), played on affected creatures 

ADD_PROJECTILE ~override/GWPurNa.pro~ ~Chain Lightning Green (Not Party)~

Code : Tout sélectionner

// Rejet du Chaos - du Mal : Projectile.
// -------------------------------------

ACTION_FOR_EACH Rejet_Proj IN ~GWRejCh~ ~GWRejEv~ BEGIN

	COPY_EXISTING ~PSPEART.pro~ ~override/%Rejet_Proj%T.pro~			// 233-Energy Spear (PSPEART)

		WRITE_SHORT  0x00a 30							// Projectile speed
		WRITE_ASCII  0x010 TRA_47 #8						// WAVC file (travelling)
		WRITE_ASCIIE 0x104 EVAL "%Rejet_Proj%P" #8				// Projectile animation
		WRITE_BYTE   0x133 16							// Not mirrored, not reduced

	BUT_ONLY

	ADD_PROJECTILE ~override/%Rejet_Proj%T.pro~

END

Code : Tout sélectionner

// Projection de Diamants.
// -----------------------

COPY_EXISTING ~CONECOLD.pro~ ~override/GWPjctDi.pro~					// 250-New Cone of Cold (CONECOLD)	==> 597 (69') = 20 m

	WRITE_SHORT 0x204 341								// 12 m = 39' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 597								// 20 m = 69' Area of effect (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x224 120								// Cone width = 120°

	PATCH_IF GW_BG2EE = 1 BEGIN
		WRITE_LONG  0x2c THIS  | BIT0 | BIT1 | BIT30				// Bounce from walls - Pass target - IWD style check
		WRITE_SHORT 0x3c 3							// MASK_EVIL
		WRITE_SHORT 0x3e 108							// ALIGNEMENT =
		WRITE_SHORT 0x40 3							// MASK_EVIL
		WRITE_SHORT 0x42 108							// ALIGNEMENT =
	END

BUT_ONLY

ADD_PROJECTILE ~override/GWPjctDi.pro~	~Diamond Spray~

Code : Tout sélectionner

// Vapeur d'épées.
// ---------------

COPY_EXISTING ~CONECOLD.pro~ ~override/GWVapEp.pro~					// 250-New Cone of Cold (CONECOLD) only enemies ==> 341 (39') = 12 m

	WRITE_SHORT 0x204 341								// 12 m = 39' Trigger radius (divide by approx 8.5 to receive diameter in feet)
	WRITE_SHORT 0x206 341								// 12 m = 39' Area of effect (divide by approx 8.5 to receive diameter in feet)
	WRITE_LONG  0x200 THIS | BIT6							// Area projectile flags : ajoute Affect only enemies
	WRITE_SHORT 0x210 5								// Explosion delay
	WRITE_BYTE  0x218 68								// Explosion colour : 68-Shiny Blue
	WRITE_SHORT 0x224 120								// Cone width = 120°

BUT_ONLY

ADD_PROJECTILE ~override/GWVapEp.pro~	~Sword Stream~

Posté : dim. 07 janv. 2018, 19:05
par Cocrane
Je te remercie pour ton retour qui est très riche en informations.

Je suis focalisé sur l'ajout du 2nd projectile dans le projectile:
"SET proj = (IDS_OF_SYMBOL (projectl GWBoltVt) + 1)
WRITE_SHORT 0x21a proj // Explosion projectile (projectl.ids), played on affected creatures
"
Tu crées une variable proj (numérique?) pour stocker la position du 2nd projectile créé et à affecter dans le projectile 1 d'après ce que je comprends.
IDS_OF_SYMBOL est une fonction qui te renvoie la position du projectile mentionné.
Tu ajoutes un 1 à la position qui démarre à l'indice 0 j'imagine dans le fichier IDS.

Je me lance sur un essai.
COPY ~PDBA1CH8\PRO\COEPID2.pro~ ~override~
ADD_PROJECTILE ~PDBA1CH8\PRO\COEPID2.pro~ ~maillon chaine epidemie~

COPY ~PDBA1CH8\PRO\COEPID1.pro~ ~override~
SET proj = (IDS_OF_SYMBOL (projectl COEPID2) + 1)
WRITE_SHORT 0x21a proj
ADD_PROJECTILE ~PDBA1CH8\PRO\COEPID1.pro~ ~Chaine epidemie~

// Sorts
LOAD_TRA ~PDBA1CH8\LANGUAGE\FRENCH\Sorts.TRA~
COPY ~PDBA1CH8\SPELL\COEPID1.spl~ ~override~ // épidémie
SAY NAME1 @8
WRITE_SHORT 0x09c ~%COEPID1%~
RESULTAT
TP2 lancé sans erreur: OUI
Fichiers présents dans l'override: OUI
Projectiles créés dans les fichiers IDS (MISSILES et PROJECTILES): OUI
Projectile présent dans le sort: NON (la liste est toujours à la valeur "none")
2nd Projectile COEPID2 présent dans le projectile 1 COEPID1: NON (la liste est toujours à la valeur "none")
Si j'utilise la syntaxe LPF etc... le projectile s'affecte au sort: OUI

Qu'en penses-tu?

Cocrane

Posté : dim. 07 janv. 2018, 23:11
par Freddy_Gwendo
Essaie ceci :

Code : Tout sélectionner

ADD_PROJECTILE ~PDBA1CH8\PRO\COEPID2.pro~ ~maillon chaine epidemie~

COPY ~PDBA1CH8\PRO\COEPID1.pro~ ~override~
	SET proj = (IDS_OF_SYMBOL (projectl COEPID2) + 1)
	WRITE_SHORT 0x21a proj
BUT_ONLY
ADD_PROJECTILE ~[color="#FFFF00"]override[/color]\COEPID1.pro~ ~Chaine epidemie~

LOAD_TRA ~PDBA1CH8\LANGUAGE\FRENCH\Sorts.TRA~
COPY ~PDBA1CH8\SPELL\COEPID1.spl~ ~override~ // épidémie
	SAY NAME1 @8
	LPF ALTER_SPELL_HEADER INT_VAR projectile = (IDS_OF_SYMBOL (projectl COEPID1) + 1) END
BUT_ONLY
Dans ton code, tu ajoutais le projectile de ton répertoire qui n'était pas modifié.

Posté : lun. 08 janv. 2018, 00:17
par Cocrane
Suite à ta correction, le résultat est parfait.

Merci pour ton "oeil scrutateur". :rtfm:

Cocrane