Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[SPL] Comment créer un sort de soin spécifique à une créature ?

Regroupe tous les fichiers spl et pro
Répondre
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne

[SPL] Comment créer un sort de soin spécifique à une créature ?

.

Message par Cocrane »

Dans mon mod, il y aura possibilité d'avoir un golem d'ambre (nouvelle créature).

On pourra acheter un parchemin de magicien pour réparer le golem d'ambre.

Comment paramétrer le sort pour que le sort puisse s'appliquer uniquement si la cible est un golem d'ambre?

Je suppose qu'il faut:
- ajouter le golem d'ambre dans un fichier IDS.

- tester si la cible est un golem d'ambre.
(Je ne vois pas de fonction pour tester la cible comme condition de déclenchement)

- soigner la cible. (Current HP Modifier [17] ou HP: Regeneration [98]?)


Qui a une idée?
Avatar du membre
deratiseur
Golem de pierre
Messages : 3397
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Il suffit que via ton tp2 (fichier d'installation) tu donnes à ton golem un ids "unique" qui n’affecteras pas son animation ou sa race, etc, genre specific.ids, et tu donnes une valeur qui n'existe pas, par exemple 993. Ça fonctionne, je l'ai fais sur deux araignées du dukp pour quelle soient "ennemis héréditaires" et qu'elles s'attaquant à vu).

Ensuite ton sort de guérison utiliseras l’effet #177 (use EFF File), qui cible le specific.ids (valeur 6) et affecte ce qui correspond à 993 (dans l’exemple utilisé ici). Ton sort n'aura d'effet que sur ta créature et sur rien d'autre. Le soin est donné par un fichier .eff externe, celui que tu as rentré dans le #177
Si on vivais dans un monde de super héros, je serais le super vilain dont le but ultime est de décimer tous les hommes. Les femmes s'en remettraient et le monde se porterait mieux.

A part ça, mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Merci Beaucoup Dérat.

C'est donc faisable. C'est cool.

Je vais de mettre en oeuvre ta méthode. ;)
Avatar du membre
deratiseur
Golem de pierre
Messages : 3397
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

Je viens de vérifier mes bestioles qui utilisent cette méthode : pas besoin de te compliquer la vie dans le tp2, il y a une case "specifics" dans le premier onglet de la créature dans DLTCEP. Tu peux rentrer un nombre en hexa là.
Pour éviter qu'on utilise les même : j'utilise les valeurs 123 et 124.
Si on vivais dans un monde de super héros, je serais le super vilain dont le but ultime est de décimer tous les hommes. Les femmes s'en remettraient et le monde se porterait mieux.

A part ça, mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

C'est noté pour le TP2.

Pour le moment, j'ai ajouté la valeur en direct dans SPECIFIC.IDS et j'ai sélectionné cette valeur pour ma créature dans DLTCEP.

Visiblement ca ne fonctionnement pas.

Si je lance mon nouveau sort en soignant en direct ca marche.

Si je mets à la place l'effet 177 sur la valeur de ma créature dans SPECIFIC.IDS, je peux sélectionner ma cible mais elle n'est pas soignée.
Du coup, j'ai essayé des valeurs déja existantes ou un autre fichier IDS, l'effet soin ne se déclenche pas.

Le nom de l'effet à lancer si la condition est remplie est bien paramétrée.

J'ai jeté un oeil sur l'épée batarde contre les métamorphes du jeu et je ne vois pas d'erreur de paramétrage.

Bizarre bizarre. ^^
Avatar du membre
deratiseur
Golem de pierre
Messages : 3397
Enregistré le : mer. 05 déc. 2007, 18:35
Localisation : Gap, Hautes alpes
Statut : Hors ligne
.

Message par deratiseur »

J'utilise cette astuce dans des scripts. Pour un effet, peut-être a t-il besoin que la valeur soit vraiment dans l'ids. Essaie de rajouter la valeur de ta créature au fichier specific.ids et re-teste.
Si on vivais dans un monde de super héros, je serais le super vilain dont le but ultime est de décimer tous les hommes. Les femmes s'en remettraient et le monde se porterait mieux.

A part ça, mes mods sont tous sur Mediafire et Github
Et leurs descriptions sont ici.
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

De retour après une semaine de boulot harassante... :gign:

Le problème de l'attribution d'un nouveau code ids, c'est les risques incompatibilité entre plusieurs mods.

Comme j'introduis de nouvelles races et de nouveaux codes specifics pour différencier mes dragons, j'ai défini une routine pour lire les fichiers ids existants et ajouter automatiquement un code NON existant.

Puis tu fonctionnes comme l'indique derat.

Comme j'utilise ce truc dans des capacités de mes kits pour soigner uniquement les licornes ou le destrier du paladin, je code l'effet à lancer dans le tp2.
Pour cela, je lance au début de l'installation (après l'attribution des nouveaux codes ids) une macro qui stocke ces codes ids dans une variable :

Code : Tout sélectionner

DEFINE_ACTION_MACRO GW_VARIABLES_SPECIFICS BEGIN

	COPY_EXISTING - ~Specific.ids~ ~override~
		READ_2DA_ENTRIES_NOW GW_Specific 2
		FOR (row=0;row<GW_Specific;row+=1) BEGIN
			READ_2DA_ENTRY_FORMER GW_Specific row 0 numero
			READ_2DA_ENTRY_FORMER GW_Specific row 1 specific
// DRAGONS
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BLACK_DRAGON~			BEGIN	SET GW_S_DragonNoir = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BLUE_DRAGON~			BEGIN	SET GW_S_DragonBleu = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~GREEN_DRAGON~			BEGIN	SET GW_S_DragonVert = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~RED_DRAGON~			BEGIN	SET GW_S_DragonRouge = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~WHITE_DRAGON~			BEGIN	SET GW_S_DragonBlanc = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BRASS_DRAGON~			BEGIN	SET GW_S_DragonAirain = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BRONZE_DRAGON~			BEGIN	SET GW_S_DragonBronze = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~COPPER_DRAGON~			BEGIN	SET GW_S_DragonCuivre = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~GOLD_DRAGON~			BEGIN	SET GW_S_DragonOr = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~SILVER_DRAGON~ 		BEGIN	SET GW_S_DragonArgent = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~AMETHYST_DRAGON~		BEGIN	SET GW_S_DragonAmethyste = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~CRYSTAL_DRAGON~		BEGIN	SET GW_S_DragonCristal = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~EMERALD_DRAGON~		BEGIN	SET GW_S_DragonEmeraude = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~SAPPHIRE_DRAGON~		BEGIN	SET GW_S_DragonSaphire = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~TOPAZE_DRAGON~			BEGIN	SET GW_S_DragonTopaze = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BROWN_DRAGON~			BEGIN	SET GW_S_DragonBrun = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~DEEP_DRAGON~			BEGIN	SET GW_S_DragonProfondeurs = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~PRISMATIC_DRAGON~		BEGIN	SET GW_S_DragonPrismatic = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~PURPLE_DRAGON~			BEGIN	SET GW_S_DragonPourpre = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~RATTELYR_DRAGON~		BEGIN	SET GW_S_DragonRattelyr = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~SHADOW_DRAGON~			BEGIN	SET GW_S_DragonOmbre = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~YELLOW_DRAGON~			BEGIN	SET GW_S_DragonJaune = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~DEVOUR_BRAIN_DRAGON~		BEGIN	SET GW_S_DragonDecerveleur = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~SORCELLERIE_DRAGON~		BEGIN	SET GW_S_DragonSorcellerie = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~CHANT_DRAGON~			BEGIN	SET GW_S_DragonChanteur = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~FANG_DRAGON~			BEGIN	SET GW_S_DragonPointes = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~MERCURY_DRAGON~		BEGIN	SET GW_S_DragonMercure = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~MIST_DRAGON~			BEGIN	SET GW_S_DragonBrumes = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~STEEL_DRAGON~			BEGIN	SET GW_S_DragonAcier = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~CHAOS_DRAGON~			BEGIN	SET GW_S_DragonChaos = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~HOWLING_DRAGON~		BEGIN	SET GW_S_DragonHurleur = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~PYROCLASTIC_DRAGON~		BEGIN	SET GW_S_DragonPyroclastique = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~RUST_DRAGON~			BEGIN	SET GW_S_DragonRouille = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~ARBOREAL_DRAGON~		BEGIN	SET GW_S_DragonAboreal = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~AXIAL_DRAGON~			BEGIN	SET GW_S_DragonAxial = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BATTLE_DRAGON~			BEGIN	SET GW_S_DragonGuerre = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~OCEANUS_DRAGON~		BEGIN	SET GW_S_DragonOcean = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~RADIANT_DRAGON~		BEGIN	SET GW_S_DragonRadiant = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~ADAMANTITE_DRAGON~		BEGIN	SET GW_S_DragonAdamantite = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~VAMPIRIC_DRAGON~		BEGIN	SET GW_S_DragonVampire = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~ZOMBIE_DRAGON~			BEGIN	SET GW_S_DragonZombie = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~DRACOLICH~			BEGIN	SET GW_S_Dracoliche = %numero%			END
// MORTS-VIVANTS
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~MUMMY~				BEGIN	SET GW_S_Momie = %numero%			END	// 219 MUMMY
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~REVENANT~			BEGIN	SET GW_S_Revenant = %numero%			END	// 218 REVENANT
// CREATURES du FEU
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~FIRE_CREATURE~			BEGIN	SET GW_S_Fire = %numero%			END
// CREATURES VOLANTES
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~FLYING_CREATURE~		BEGIN	SET GW_S_Volants = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~FLYING_SUMMONED~		BEGIN	SET GW_S_Volants_convoques = %numero%		END
		END
	BUT_ONLY
END
Puis j'utilise la variable %GW_S_xxxxx% :

Dans ton cas, ce sera

Code : Tout sélectionner

COPY mymod\monfichier override\monfichier
  WRITE_BYTE offset_à_modifier EVAL "%GW_S_xxxxx%".
Et voilà, le tour est joué, tu n'as plus à te soucier des codes specifics des autres.

Ceci dit, dans ton cas, le mieux serait d'utiliser le code GOLEM_AMBER dans le fichier class.ids (où se trouvent déjà les codes GOLEM_IRON, GOLEM_FLESH, GOLEM_STONE et GOLEM_CLAY). La procédure est la même.
De plus, ce serait compatible avec mes propres golems d'ambre, de feu, d'eau et électriques. ;)


PS : j'ai fait des essais de modification des bams des golems pour créer une nouvelle animation de golem d'ambre. C'est en bonne voie. Dès que je suis saatisfait, je t'envoie les fichiers.
Modifié en dernier par vv221 le jeu. 27 avr. 2023, 17:24, modifié 1 fois.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

@Dérat:

"Essaie de rajouter la valeur de ta créature au fichier specific.ids et re-teste."

J'ai essayé hier soir avant de t'écrire. Que la valeur soit d'origine ou ajouté et quelque soit le fichier ids, le soin ne se déclenche pas et la créature est bien paramétrée. L'effet en direct fonctionne.

Donc je suis un brun dibutatif. ;)

@Freddy:
Salut,
c'est noté pour la routine et plutot un paramétrage ids via une classe. Après, mon mod étant ni sur l'histoire de BG1 ou de BG2 mais un long intermède entre BG1 et BG2, j'ai un peu laissé tombé l'idée d'être compatible. J'avoue que j'avance tellement lentement à mon goût que je donne priorité au mod.
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Envoie-moi tes fichiers. Je vais les tester avec ma procédure.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

voilà les données:

http://www.mediafire.com/download/aiypmflxb5rr5y4/Parchemin+r%C3%A9paration+golem+ambre.rar

fichier CRE avec anim golem classique
Fichier EFF pour l'effet de régénération
fichier ITEM pour le sortilège en parchemin
fichier Bam pour le dessin du parchemin
Fichier IDS avec la nouvelle valeur
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

J'ai identifié le problème.

Pour être certain de bien le résoudre, je suppose que le parchemin sera lu par l'équipe et permettra de soigner un Golem d'ambre.

Si c'est le cas, il faut revoir ton parchemin.

Je m'y attelle dans une petite heure en te donnant le tp2 avec la création de la nouvelle classe.


Notes :

1. Pour ce genre d'archives à la taille riquiqui, passe par les pièces jointes du message. Ça t'évitera un détour par ton site d'archivage.
2. J'ai reçu ton message sur le Golem d'ambre. Je terminerai les fichiers bam demain.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Si tu trouves la solution, je serai intéressé de savoir où était le problème.

Pour le parchemin:
- soit il est acheté pour réparer le golem.
- soit il est achété pour apprendre le sort (je n'ai pas encore travaillé ce point).
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Cocrane a écrit :Si tu trouves la solution, je serai intéressé de savoir où était le problème.
C'est simple : ton parchemin utilisait un effet basé sur la variable réaction (EA = Ally) et l'effet sur une variable inconnue. De plus, il était mal codé.
J'ai tout refait et testé : ça fonctionne sur un Golem d'ambre en vadrouille et aussi sur un golem d'Ambre intégré dans le groupe.

Comme l'explication serait longue, je te laisse comparer mes fichiers et les tiens, mais le principe est simple : le parchemin lance un sort sur une cible. Ce sort utilise un effet qui ne se déclenche que sur un Golem d'Ambre. L'effet lance le sort de guérison.

Pour le parchemin:
- soit il est acheté pour réparer le golem.
- soit il est achété pour apprendre le sort (je n'ai pas encore travaillé ce point).

Regarde le parchemin de Fireball (Boule de feu) : il te suffira de créer un deuxième header au parchemin permettant d'apprendre le sort, identique à celui du parchemin de Boule de feu en modifiant seulement le nom du sort à apprendre.

Notes :
- Je te laisse modifier les emplacements de ton mod dans les procédures (c.à.d remplacer monmod ou Diamant_Eternel par tes répertoires).
- J'ai laissé quelques codes relatifs aux races et aux valeurs specifics, au cas où tu voudrais faire la même manip.
- Si tu veux apprendre le sort, il te faudra déterminer si c'est un sort de mage, de prêtre ou inné. Dans l'état, les deux sorts utilisés sont des sorts de prêtre (mais le parchemin est utilisable par tout le monde). Selon ton choix, il te faudra modifier les caractéristiques du sort et les flags d'utilisabilité du parchemin.
Fichiers joints
GW_Soins_Golem_Ambre.7z
(5.87 Kio) Téléchargé 87 fois
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

J'ai effectivement testé avec le fichier EA.IDS vu que ça ne fonctionnait pas avec SPECIFIC.IDS.

J'ai comparé ton paramétrage au mien. Vu que le tien fonctionne. ^^

Freddy:
ITEM
lance sort CUREGOLAM

SORT CUREGOLAM
effet 177 filtre IDS sur class
lance effet CUREGOLAM

Effet CUREGOLAM
lance sort CUREGOLA

SORT CUREGOLA
lance effet soin

Cocrane
ITEM
lance effet 177 filtre IDS
lance effet GOLEMHP

EFFET GOLEMHP
lance effet régénération


Je ne comprends pas pourquoi mon enchainement ne fonctionne pas. Mais bon. ^^

Le tien est déjà orienté sort ce qui a l'avantage de laisser l'occasion de paramétrer l'apprentissage du sort.

Dérat, Freddy merci pour votre aide.


Encore une fois le travail en groupe me permet de régler un point bloquant.



J'ai tester l’installation via ton TP2 mais j'ai un pb WEIDU. Du coup j'ai paramétré la valeur IDS manuellement.

Je suis assez basique en code TP2 du coup j'ai du faire une erreur dans mon installation.

J'ai ajouté dans mon répertoire d'installation un \LIB où je place les fichier TPA et TPH.
Ton TP2 et l'exe du même sont à la racine du jeu.

Code : Tout sélectionner

[SETUP_GOLEM_AMBRE.TP2] PARSE ERROR at line 1 column 0-6
Near Text: INCLUDE
	GLR parse error

[SETUP_GOLEM_AMBRE.TP2]  ERROR at line 1 column 0-6
Near Text: INCLUDE
	Parsing.Parse_error
ERROR: parsing [SETUP_GOLEM_AMBRE.TP2]: Parsing.Parse_error
ERROR: problem parsing TP file [SETUP_GOLEM_AMBRE.TP2]: Parsing.Parse_error

FATAL ERROR: Parsing.Parse_error
TP2

Code : Tout sélectionner

INCLUDE ~PDBA1CH8/LIB/GW_ids.tph~			// Ajout des entrées ids
INCLUDE ~PDBA1CH8/LIB/Variables.tpa~		// Définition des variables des fichiers ids

LAM ~GW_VARIABLES_CLASSES~																			// Lance la macro qui définit automatiquement la valeur class.ids du Golem d'Ambre
COPY ~override\GolAmb1.cre~	~override\GolAmb1.cre~	WRITE_BYTE 0x273 EVAL "%GW_C_Golem_Ambre%"		// Ecriture du code class.ids correspondant au Golem d'Ambre
																									// Selon les mods installés auparavant, il sera automatiquement calculé.
COPY ~override\CurGolAm.spl~	~override\CurGolAm.spl~	WRITE_LONG 0x9d EVAL "%GW_C_Golem_Ambre%"	// Ecriture de la valeur class.ids du Golem d'Ambre
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Oups !

J'ai dû mal m'exprimer : Tu NE DOIS PAS LANCER MON TP2 !!!!

Tu le recopies dans ton propre tp2.

Ce n'est pas un fichier tp2 à proprement parler, ce sont juste des lignes de codes à insérer dans ton propre tp2.

Donc :

1. Tu copies les fichiers Fonctions_macros_ids.tpa, GW_ids.tph et variables.tpa dans le répertoire tonmod\lib.
2. Tu copies les fichiers CUREGOLA.spl, CUREGOLAM.spl, CUREGOLAM.eff et SCRP10.itm dans les répertoires concernés de ton mod.
3. Tu copies les lignes de mon tp2 dans ton tp2.

Code : Tout sélectionner

INCLUDE ~tonmod/lib/GW_ids.tph~			// Ajout des entrées ids
INCLUDE ~tonmod/lib/Variables.tpa~		// Définition des variables des fichiers ids
Ces deux lignes chargent en mémoire les fonctions et macros nécessaires.

Code : Tout sélectionner

LAM ~GW_VARIABLES_CLASSES~
Lance la macro qui définit automatiquement la valeur class.ids du Golem d'Ambre

Code : Tout sélectionner

COPY ~tonmod\repertoire\GolAmb1.cre~	~override\GolAmb1.cre~	WRITE_BYTE 0x273 EVAL "%GW_C_Golem_Ambre%"
Écriture du code class.ids correspondant au Golem d'Ambre. Selon les mods installés auparavant, il sera automatiquement calculé.

Code : Tout sélectionner

COPY ~tonmod\repertoire\CurGolAm.spl~	~override\CurGolAm.spl~	WRITE_LONG 0x9d EVAL "%GW_C_Golem_Ambre%"
Écriture de la valeur class.ids du Golem d'Ambre


Et tu n'oublies pas de copier le fichier scrp10.itm


La variable %GW_C_Golem_Ambre% est calculée automatiquement dans la macro.


C'est ce que je voulais dire quand j'écrivais :
Freddy a écrit : Je te laisse modifier les emplacements de ton mod dans les procédures (c.à.d remplacer monmod ou Diamant_Eternel par tes répertoires).


Par ailleurs,
Le tien est déjà orienté sort ce qui a l'avantage de laisser l'occasion de paramétrer l'apprentissage du sort.
J'ai envisagé un moment de rajouter l'option apprentissage du sort au parchemin. Dommage. :$

Mais cette technique est l'une des plus simples pour réaliser ce que tu voulais faire.


De mémoire, si ton parchemin ne fonctionnait pas, c'est parce qu'il utilisait un effet basé sur la variable "Ally" sur un golem codé comme "enemy". Et quand bien même ton golem aurait été un allié, ton effet de régénération ne concernait qu'un type de créature dont le code ids n'était pas défini ("10").


Édit : si vraiment tu n'arrives pas à lancer la procédure, envoie-moi ton tp2 et je l'inclurai dedans. ;)
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Tiens, suite à ton MP, j'ai eu une idée subite.
Dis-moi ce que tu en penses.
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Pas de nouvelles, bonnes nouvelles ! ;)

Dois-je en conclure que tu as réussi à intégrer ma procédure dans ton tp2 ?
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Et non. ^^

Je n'avais pas encore testé le TP2.

J'ai une erreur: "ERROR: Sys_error("Diamant_Eternel/Lib/Fonctions_macros_ids.tpa: No such file or directory")"

Je suppose que le script qui appelle fichier Fonctions_macros_ids.tpa contient le chemin du répertoire en dur.
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Ça veut dire qu'il faut que tu remplaces dans le fichier GW_ids.tph la ligne

INCLUDE ~Diamant_Eternel/Lib/Fonctions_macros_ids.tpa~

par

INCLUDE ~répertoire de ton mod/Lib/Fonctions_macros_ids.tpa~

Par ailleurs, ta boîte est pleine... :$
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

OK.

Comment ouvres tu un fichier .tph? Je ne vois d'infos dans la doc Weidu.
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Ce n'est rien d'autre qu'un fichier tp2 (comme les tpa) : tu l'ouvres avec n'importe quel éditeur de textes.

J'écris les miens avec Notepad++ (gratuit !) et les highlights d'Argent77 (téléchargeables sur SHS).
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Avatar du membre
Faust
Adepte de Grondemarteau
Loup noir
Messages : 291
Enregistré le : mer. 15 avr. 2009, 12:04
Localisation : Wherever I may roam
Statut : Hors ligne
.

Message par Faust »

Freddy_Gwendo a écrit : sam. 12 sept. 2015, 09:40 De retour après une semaine de boulot harassante... :gign:

Le problème de l'attribution d'un nouveau code ids, c'est les risques incompatibilité entre plusieurs mods.

Comme j'introduis de nouvelles races et de nouveaux codes specifics pour différencier mes dragons, j'ai défini une [post=396951]routine[/post] pour lire les fichiers ids existants et ajouter automatiquement un code NON existant.

Puis tu fonctionnes comme l'indique derat.

Comme j'utilise ce truc dans des capacités de mes kits pour soigner uniquement les licornes ou le destrier du paladin, je code l'effet à lancer dans le tp2.
Pour cela, je lance au début de l'installation (après l'attribution des nouveaux codes ids) une macro qui stocke ces codes ids dans une variable :

Code : Tout sélectionner

DEFINE_ACTION_MACRO GW_VARIABLES_SPECIFICS BEGIN

	COPY_EXISTING - ~Specific.ids~ ~override~
		READ_2DA_ENTRIES_NOW GW_Specific 2
		FOR (row=0;row<GW_Specific;row+=1) BEGIN
			READ_2DA_ENTRY_FORMER GW_Specific row 0 numero
			READ_2DA_ENTRY_FORMER GW_Specific row 1 specific
// DRAGONS
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BLACK_DRAGON~			BEGIN	SET GW_S_DragonNoir = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BLUE_DRAGON~			BEGIN	SET GW_S_DragonBleu = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~GREEN_DRAGON~			BEGIN	SET GW_S_DragonVert = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~RED_DRAGON~			BEGIN	SET GW_S_DragonRouge = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~WHITE_DRAGON~			BEGIN	SET GW_S_DragonBlanc = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BRASS_DRAGON~			BEGIN	SET GW_S_DragonAirain = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BRONZE_DRAGON~			BEGIN	SET GW_S_DragonBronze = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~COPPER_DRAGON~			BEGIN	SET GW_S_DragonCuivre = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~GOLD_DRAGON~			BEGIN	SET GW_S_DragonOr = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~SILVER_DRAGON~ 		BEGIN	SET GW_S_DragonArgent = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~AMETHYST_DRAGON~		BEGIN	SET GW_S_DragonAmethyste = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~CRYSTAL_DRAGON~		BEGIN	SET GW_S_DragonCristal = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~EMERALD_DRAGON~		BEGIN	SET GW_S_DragonEmeraude = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~SAPPHIRE_DRAGON~		BEGIN	SET GW_S_DragonSaphire = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~TOPAZE_DRAGON~			BEGIN	SET GW_S_DragonTopaze = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BROWN_DRAGON~			BEGIN	SET GW_S_DragonBrun = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~DEEP_DRAGON~			BEGIN	SET GW_S_DragonProfondeurs = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~PRISMATIC_DRAGON~		BEGIN	SET GW_S_DragonPrismatic = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~PURPLE_DRAGON~			BEGIN	SET GW_S_DragonPourpre = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~RATTELYR_DRAGON~		BEGIN	SET GW_S_DragonRattelyr = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~SHADOW_DRAGON~			BEGIN	SET GW_S_DragonOmbre = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~YELLOW_DRAGON~			BEGIN	SET GW_S_DragonJaune = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~DEVOUR_BRAIN_DRAGON~		BEGIN	SET GW_S_DragonDecerveleur = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~SORCELLERIE_DRAGON~		BEGIN	SET GW_S_DragonSorcellerie = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~CHANT_DRAGON~			BEGIN	SET GW_S_DragonChanteur = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~FANG_DRAGON~			BEGIN	SET GW_S_DragonPointes = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~MERCURY_DRAGON~		BEGIN	SET GW_S_DragonMercure = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~MIST_DRAGON~			BEGIN	SET GW_S_DragonBrumes = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~STEEL_DRAGON~			BEGIN	SET GW_S_DragonAcier = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~CHAOS_DRAGON~			BEGIN	SET GW_S_DragonChaos = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~HOWLING_DRAGON~		BEGIN	SET GW_S_DragonHurleur = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~PYROCLASTIC_DRAGON~		BEGIN	SET GW_S_DragonPyroclastique = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~RUST_DRAGON~			BEGIN	SET GW_S_DragonRouille = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~ARBOREAL_DRAGON~		BEGIN	SET GW_S_DragonAboreal = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~AXIAL_DRAGON~			BEGIN	SET GW_S_DragonAxial = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~BATTLE_DRAGON~			BEGIN	SET GW_S_DragonGuerre = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~OCEANUS_DRAGON~		BEGIN	SET GW_S_DragonOcean = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~RADIANT_DRAGON~		BEGIN	SET GW_S_DragonRadiant = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~ADAMANTITE_DRAGON~		BEGIN	SET GW_S_DragonAdamantite = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~VAMPIRIC_DRAGON~		BEGIN	SET GW_S_DragonVampire = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~ZOMBIE_DRAGON~			BEGIN	SET GW_S_DragonZombie = %numero%		END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~DRACOLICH~			BEGIN	SET GW_S_Dracoliche = %numero%			END
// MORTS-VIVANTS
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~MUMMY~				BEGIN	SET GW_S_Momie = %numero%			END	// 219 MUMMY
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~REVENANT~			BEGIN	SET GW_S_Revenant = %numero%			END	// 218 REVENANT
// CREATURES du FEU
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~FIRE_CREATURE~			BEGIN	SET GW_S_Fire = %numero%			END
// CREATURES VOLANTES
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~FLYING_CREATURE~		BEGIN	SET GW_S_Volants = %numero%			END
			PATCH_IF ~%specific%~ STRING_EQUAL_CASE ~FLYING_SUMMONED~		BEGIN	SET GW_S_Volants_convoques = %numero%		END
		END
	BUT_ONLY
END
Puis j'utilise la variable %GW_S_xxxxx% :

Dans ton cas, ce sera

Code : Tout sélectionner

COPY mymod\monfichier override\monfichier
  WRITE_BYTE offset_à_modifier EVAL "%GW_S_xxxxx%".
Et voilà, le tour est joué, tu n'as plus à te soucier des codes specifics des autres.

Ceci dit, dans ton cas, le mieux serait d'utiliser le code GOLEM_AMBER dans le fichier class.ids (où se trouvent déjà les codes GOLEM_IRON, GOLEM_FLESH, GOLEM_STONE et GOLEM_CLAY). La procédure est la même.
De plus, ce serait compatible avec mes propres golems d'ambre, de feu, d'eau et électriques. ;)


PS : j'ai fait des essais de modification des bams des golems pour créer une nouvelle animation de golem d'ambre. C'est en bonne voie. Dès que je suis saatisfait, je t'envoie les fichiers.
Hello,

Aurais-tu la même variable que tu as donné à Cocrane mais pour kit.ids ? Avec le flag nécessaire (0x246?).

J'essaye de faire en sorte que le familier de mon personnage soit l'unique créature affectée par un sort, en me basant sur son kit.

EDIT: Il semblerait que ce ne soit pas possible pour les kits, j'ai essayé en suivant ton document relatif au champ SPECIFICS, cela me met une erreur.


Merci!

EDIT: J'ai retrouvé ton topic mentionnant tout ça, mais j'aurai éventuellement besoin d'un coup de main pour patcher le fichier .spl afin d'appliquer le flag SPECIFIC précis:

viewtopic.php?p=396951#p396951
Fichiers joints
Sans titre.png
Sans titre.png (140.64 Kio) Vu 681 fois
Modifié en dernier par Faust le sam. 29 avr. 2023, 19:21, modifié 11 fois.
Répondre

Retourner vers « Sorts et projectiles »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité