Page 1 sur 1
[SPL] Comment créer un sort de soin spécifique à une créature ?
Posté : ven. 11 sept. 2015, 11:20
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?
Posté : ven. 11 sept. 2015, 15:59
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
Posté : ven. 11 sept. 2015, 18:13
par Cocrane
Merci Beaucoup Dérat.
C'est donc faisable. C'est cool.
Je vais de mettre en oeuvre ta méthode.
Posté : ven. 11 sept. 2015, 18:38
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.
Posté : ven. 11 sept. 2015, 21:54
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.
Posté : sam. 12 sept. 2015, 04:29
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.
Posté : sam. 12 sept. 2015, 09:40
par Freddy_Gwendo
De retour après une semaine de boulot harassante...
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.
Posté : sam. 12 sept. 2015, 10:54
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.
Posté : sam. 12 sept. 2015, 11:21
par Freddy_Gwendo
Envoie-moi tes fichiers. Je vais les tester avec ma procédure.
Posté : sam. 12 sept. 2015, 14:29
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
Posté : sam. 12 sept. 2015, 15:01
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.
Posté : sam. 12 sept. 2015, 16:31
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).
Posté : sam. 12 sept. 2015, 17:24
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.
Posté : dim. 13 sept. 2015, 12:54
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
Posté : dim. 13 sept. 2015, 15:04
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.
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.
Posté : dim. 13 sept. 2015, 17:05
par Freddy_Gwendo
Tiens, suite à ton MP, j'ai eu une idée subite.
Dis-moi ce que tu en penses.
Posté : mar. 15 sept. 2015, 22:02
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 ?
Posté : mer. 16 sept. 2015, 22:25
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.
Posté : mer. 16 sept. 2015, 22:39
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...
Posté : jeu. 17 sept. 2015, 20:48
par Cocrane
OK.
Comment ouvres tu un fichier .tph? Je ne vois d'infos dans la doc Weidu.
Posté : jeu. 17 sept. 2015, 20:59
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).
Re:
Posté : jeu. 27 avr. 2023, 13:18
par Faust
Freddy_Gwendo a écrit : ↑sam. 12 sept. 2015, 09:40
De retour après une semaine de boulot harassante...
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