Page 1 sur 1

[TUTORIEL] Création de kit pour BG2

Posté : ven. 15 janv. 2010, 15:33
par Lothringen
Préambule : Ce tutoriel a été rédigé par Camdawg, et traduit avec son aimable autorisation. L'essentiel de la traduction est l'œuvre de Mathrim Cauthon, j'ai complété les parties 3 et 4 et mis à jour le reste sur les précieux conseils d'Isaya. La version originale se trouve ici.
------------


Au même titre que les PNJs, les kits semblent être une des idées les plus populaires parmi les créateurs de mods. L'autre jour, je me suis rendu compte que, bien que je joue rarement des personnages avec kit, j'ai été impliqué dans beaucoup de mods de kits et que la création de kits devenait à peu près ma seconde nature. Voici la première partie d'une série qui devrait, je l'espère, couvrir la création de kit, de A à Z.
Première Partie: Limitations du Moteur

J'ai vu un grand nombre d'idées pour des kits dans les forums que j'ai visités. Souvent, quelqu'un y consacre beaucoup de soin et de réflexion et parvient à une très bonne idée de kit. Je suis à chaque fois intrigué, et j'explore les avantages/inconvénients, je lis "Ne peut utiliser [tel objet]" ou "Nécessite 17 en Dextérité", et j'éprouve alors un serrement au cœur. Malheureusement, l'Infinity Engine n'a jamais été conçu pour être un moteur facile d'accès pour les moddeurs, et nous devons gérer beaucoup de limitations codées en dur et autres bizarreries. Il en résulte que des prérequis qui semblent aussi inoffensifs que ceux énoncés ci-dessus peuvent sonner le glas d'un kit en le rendant presque impossible à implémenter, ou à équilibrer. Je vais essayer de décrire les principales limitations.

[INDENT][INDENT]* Restriction d'objets : dur dur - Une des techniques les plus communes pour équilibrer les kits consiste à dire "Ne peut pas utiliser X" dans la section des inconvénients. Malheureusement, la restriction d'objets est sujette à de nombreux problèmes.

Les fichiers d'objet eux-mêmes n'ont que 32 "indicateurs" d'utilisabilité qui les restreignent à un kit particulier, et ces indicateurs sont tous réservés par les kits existants. Cela signifie qu'il n'existe aucun moyen d'implanter un nouvel ensemble de restrictions pour un nouveau kit sans modifier les restrictions d'utilisation d'un autre kit.

Et même la réutilisation de l'indicateur d'utilisabilité d'objets d'un autre kit peut causer des problèmes. Utiliser l'indicateur d'utilisabilité d'un kit de guerrier pour un kit de clerc signifiera que ce nouveau kit ne pourra plus accéder aux objets destinés aux clercs. Certains indicateurs possèdent même d'autres caractéristiques codées en dur -- par exemple, créer un kit de voleur qui utilisera les restrictions d'objet d'un Chasseur de Prime entraînera une baisse du nombre de points de compétence que recevra le kit, comme un Chasseur de Prime.

* Des valeurs minimales de caractéristiques élevées pour un kit représentent un avantage, et non un désavantage - C'est un autre aspect du moteur qui surprend souvent les joueurs. Dans les versions "sur table", un kit doté de prérequis élevés est difficile d'accès, car il faut réussir à obtenir les valeurs en lançant les dés. Avec l'IE, le jeu trichera sur les résultats et garantira toujours l'obtention de ces prérequis par le joueur. Un kit qui nécessiterait 18 dans chacune des caractéristiques aura par exemple pour conséquence que tous les jets donneront automatiquement 18. Gardez cela à l'esprit si vous comptez utiliser les minima de caractéristiques pour équilibrer votre kit.

* Les boutons de l'interface sont codés en dur
- Les boutons dont dispose un personnage (repousser les Morts-Vivants, Discrétion, Chanson du Barde, Sorts, etc...) sont déterminés par la classe, et non par le kit. Donc, si vous désirez un paladin doté de la chanson du barde, vous ne pourrez pas l'avoir -- le bouton de chanson du barde n'est pas disponible pour le paladin, et il n'existe aucun moyen de le rajouter. D'un autre côté, interdire des boutons est en général assez simple -- un clerc qui ne peut repousser les morts-vivants ou un rôdeur incapable de se dissimuler sont assez faciles à coder.

* Les livres de sorts ne peuvent être utilisés que par les jeteurs de sorts - N'importe quel kit peut utiliser des capacités innées. Cependant, les livres de sorts sont directement liés aux classes de jeteur de sorts, et il n'y a donc aucun moyen de permettre à un voleur de mémoriser des sorts, et de les lancer en utilisant l'interface du livre de sorts. Les livres de sorts ne sont pas non plus interchangeables, ce qui signifie que les kits de clerc ne peuvent accéder au livre de sorts du mage, et vice-versa.

* On ne peut pas créer de kits pour certaines classes
- Les sorciers, les moines, les barbares et les entropistes ne peuvent avoir de kits.

* Pour une classe donnée, seuls 9 kits pourront être montrés à la création de personnage - Quand les joueurs créent leur personnage, seuls neuf kits peuvent apparaître à l'écran. Les mages ont déjà leurs neuf kits, donc il vous faudra remplacer ou désactiver l'un des kits existants pour créer un kit de mage sélectionnable par le joueur. Cela ne signifie pas que vous ne pouvez pas créer un kit de mage pour un PNJ ; cette restriction ne s'applique qu'aux kits sélectionnables par le PJ.
[/INDENT][/INDENT]Certaines des limitations ci-dessus peuvent être contournées ; mais il s'agit de méthodes qui sont peu intuitives pour le joueur, introduisent des problèmes de compatibilité, ou sont difficiles à coder - ou encore, une combinaison de ces trois problèmes.


La seconde partie parlera des fichiers utilisés par les kits, et de ce que vous devez faire pour les modifier.


Posté : ven. 15 janv. 2010, 16:20
par Lothringen
Comme promis, voici la seconde partie de la série de tutoriels sur la création de kits pour BG2. Cette section concernera les différents fichiers impliqués dans la création de kits, ce qu'ils font, et comment éviter les pièges les plus communs. Pour voir ces fichiers, utilisez un éditeur tel que Near Infinity, DLTCEP, ou Infinity Explorer. Ne vous inquiétez pas trop de la façon de modifier ces fichiers -- la prochaine partie du tutoriel parlera de la façon dont WeiDU peut faire cela pour vous.

Seconde partie : Fichiers du Jeu


Les fichiers 2da sont des fichiers textes qui contiennent des tables de données utilisées pour définir les règles et les paramètres du jeu. Les kits se basent sur des données spécifiques qui se trouvent dans les tables suivantes :


[INDENT][INDENT]KITLIST.2da - La principale liste de kits du jeu. Les kits y sont référencés sous leur "nom interne" dans la première colonne. La plupart devraient être facile à reconnaître, en dehors du FERALAN -- qui était un kit de rôdeur qui fut supprimé et remplacé par le kit d'archer. Son nom interne n'a cependant jamais changé.
[INDENT][INDENT][INDENT]- Les colonnes LOWER, MIXED et HELP contiennent les références des lignes qui dans le fichier dialog.tlk fournissent la description de tous les kits du jeu. [ Dialog.tlk comprend l'ensemble des lignes de texte du jeu -- que ce soit des dialogues, des descriptions d'objet, des noms, etc... -- indexées par un nombre. Les fichiers décrivant les sorts, les objets et les créatures ne contiennent en fait aucune ligne de texte, mais uniquement une référence de ligne (STRREF pour faire plus court) qui pointe sur la bonne ligne du Dialog.tlk ]
- La colonne ABILITIES pointe vers le fichier CLAB****.2da qui contient les capacités gagnées par le kit à chaque changement de niveau.
- La signification exacte de la colonne PROFICIENCY est inconnue, mais on sait que chaque kit possède une valeur unique.
- UNUSABLE est une valeur hexadécimale qui fait correspondre le kit aux indicateurs d'inutilisabilité dans les fichiers d'objets. Les objets ont une série d'indicateurs qui déterminent quelles classes et quels kits peuvent les utiliser. Une des valeurs non-listée est 0x00004000, qui donnera au kit les mêmes restrictions que sa classe-mère (c'est à dire qu'un kit de guerrier pourra utiliser les mêmes objets qu'un guerrier pur). Il faut également noter qu'il est possible d'ajouter ces valeurs (en utilisant une calculatrice hexadécimale si vous n'êtes pas familier avec ces nombres) pour combiner les restrictions. Si vous voulez un kit qui a les restrictions d'objets d'un Cavalier et d'un Métamorphe (Dieu sait pourquoi), il vous faudra ajouter leurs valeurs d'inutilisabilité respectives: 0x00000008 + 0x10000000 = 0x10000008.
- La dernière colonne, CLASS, fait référence à la classe-mère du kit -- par exemple, les Assassins, les Chasseurs de Prime et les Bretteurs auront la valeur du Voleur dans cette colonne. Les valeurs valides sont 1 (Mage), 2 (Guerrier), 3 (Clerc), 4 (Voleur), 5 (Barde), 6 (Paladin), 11 (Druide) et 12 (Rôdeur). Les valeurs manquantes correspondent aux différentes classes multiples et aux classes qui ne peuvent être kittées.[/INDENT][/INDENT][/INDENT]

ABCLASRQ.2da - Ce fichier contrôle les valeurs minimales des caractéristiques pour les différents kits et classes. La première colonne recense les classes et les kits, et les six autres correspondent aux valeurs minimales des six caractéristiques: Force, Dextérité, Constitution, Intelligence, Sagesse, et Charisme.

ABCLSMOD.2da
- Ce fichier contient les modificateurs des scores de caractéristique pour les différents kits et classes, c'est à dire les bonus et les pénalités. Parmi les kits par défaut de BG2, seuls les Justiciers ont un ajustement de caractéristique.

ABDCDSRQ.2da
- Ce fichier contient les caractéristiques minimales requises pour pouvoir se jumeler VERS le kit ou la classe en question. C'est plutôt inutile pour les kits, puisqu'ils ne peuvent constituer la seconde classe d'un personnage jumelé, mais ce fichier a besoin d'être mis à jour.

ABDCSCRQ.2da
- Ce fichier contient les caractéristiques minimales requises pour pouvoir se jumeler DEPUIS le kit ou la classe en question. C'est la règle du "doit avoir 15 dans la caractéristique primaire pour pouvoir se jumeler"; les classes vers lesquels on peut se jumeler sont gérées par un autre fichier.

ALIGNMNT.2da - Ce fichier contrôle les alignements autorisés pour un kit. Un "1" indique que l'alignement est autorisé pour le kit tandis qu'un zéro indique qu'il ne l'est pas.

CLABFI01.2da et autres - Ce fichier contrôle les sorts et les bonus qui seront appliqués aux kits lors d'un gain de niveau. Chaque kit, ainsi que la classe pure, possède son propre fichier CLAB, dont le nom est indiqué dans la colonne ABILITIES du fichier KITLIST.2da . Les colonnes correspondent aux niveaux auquel le kit reçoit la capacité, et les lignes listent les capacités gagnées. Les lignes peuvent être ajoutées indéfiniment. Il y a trois types d'entrées pour les capacités : **** (rien), AP_nomdesort (sort s'appliquant sur le personnage), GA_nomdusort (capacité gagnée par le personnage). Les sorts qui s'appliquent sur le personnage permettent d'implémenter des capacités permanentes, telles que la résistance à la magie inhérente au Tueur de Magicien ou l'augmentation de la vitesse d'un Barbare. Les capacités gagnées sont celles qui peuvent être utilisées une ou plusieurs fois par jour, telles que les collets du Voleur ou le Kai du Kensai. Le fichier CLAB sera probablement le plus important dans la création de votre kit.

CLASWEAP.2da - Ce fichier contrôle le type d'arme autorisé pour la classe. La première colonne correspond aux noms des kits et les autres aux types d'arme. Une entrée à "1" indique que le type d'arme est utilisable, et une entrée à "0" signifie qu'elle ne l'est pas.[/INDENT][/INDENT][INDENT][INDENT][INDENT][INDENT][INDENT]Note du Traducteur:
SMALL_SWORD: petites épées
LARGE_SWORD: grandes épées
BLUNT: armes contondantes
MISSILE: armes à projectiles
BOW: arcs
SPIKED: armes à pointes
AXE: haches
SPEAR: lances
[/INDENT][/INDENT]
[/INDENT][/INDENT][/INDENT]
[INDENT][INDENT]DUALCLAS.2da - Ce fichier contrôle les possibilités de jumelage autorisées à un kit. Un "1" indique une classe valide vers laquelle se jumeler, tandis qu'un zéro indique que le jumelage vers cette classe n'est pas possible. En raison de limitations codées en dur, les kits des classes qui ne peuvent pas se jumeler (tels que les kits de bardes ou de paladins) provoqueront un crash du jeu si on tente de les jumeler, quel que soit le contenu de ce fichier.

K_C_H.2da et autres - Ces fichiers contrôlent quels kits sont disponibles pour le joueur lors de la création de personnage. La deuxième et la troisième entrée correspondent à la classe et à la race du personnage -- K_C_H détermine quels fichiers sont disponibles pour un clerc humain. KITTABLE.2da possède une table complète qui peut vous aider à déterminer quels fichiers K_*_*.2da correspondent à telle race et à telle classe. Dans le fichier lui-même, vous trouverez une colonne de chiffres croissants sur la gauche et une colonne de nombres sur la droite qui correspondent aux entrées de KITLIST.2da . Remarquez que les fichiers K_*_* ne permettent pas de passer outre les limitations codées en dur -- écrire un kit de druide dans K_D_E (kits de druide pour les elfes) ne permettra pas aux elfes de devenir des druides, car il y a des limitations de race codées en dur pour la classe de druide.

LUABBR.2da (ToB seulement) - Ce fichier est un index qui fait correspondre à tous les kits une table de Capacités de Haut Niveau (CHN, ou HLA en anglais). La colonne de gauche recense les kits et les classes et celle de droite correspond à l'index des CHN. Le nom de l'index doit être de trois caractères. Le fichier contenant la table de CHN est toujours LUXXX.2da, où XXX est l'entrée dans cette table.

LUFI0.2da et autres (ToB seulement) - Les fichiers LUXXX contiennent une table de CHN pour une classe ou un kit donné.
[INDENT] [INDENT][INDENT]Les fichiers de sorts sont listés dans la colonne ABILITIES avec les mêmes genre de préfixes GA_ et AP_ que dans les fichiers CLAB .
Les colonnes ICON et STRREF semblent ne pas être utilisées.
MIN_LEVEL est le niveau minimum à partir duquel la capacité peut être utilisée par le joueur (remarquez cependant que le joueur doit avoir 3 millions de Points d'Expérience avant que les CHN ne soient disponibles).
MAX_LEVEL est, semble-t-il, le niveau à partir duquel la capacité n'est plus proposée,
NUM_ALLOWED est le nombre de fois où un personnage peut choisir une CHN donnée avant que celle de la ligne en cours ne devienne indisponible.
PREREQUISITE détermine si une autre CHN est requise avant que celle-ci ne puisse être sélectionnée (Tornade d'Acier nécessite Tornade de Fer, par exemple).
EXCLUDED_BY est utilisé pour rendre certaines CHN incompatibles (pensez aux Dévas/Dévas Déchus) et ALIGNMENT_RESTRICT détermine si certains alignements peuvent utiliser une CHN.[/INDENT][/INDENT][/INDENT]

WEAPPROF. 2da - Ce fichier détermine le nombre maximum d'étoiles qu'un kit ou qu'une classe peut mettre dans une compétence d'arme spécifique. Notez bien que le fait de permettre à un kit de placer des étoiles dans une certaine arme ne lui donne pas la possibilité de se servir de cette arme -- ainsi, donner à un kit de clerc une compétence en lance ne l'autorisera cependant pas à s'en servir. La première colonne référence les armes et les autres colonnes indiquent le nombre d'étoiles possible pour les différents kits et classes. La compétence CLUB pour les sorts et les objets est aussi appelée EXTRA1. Les autres compétences EXTRA n'ont pas de fonction dans le jeu.
[/INDENT][/INDENT]
Gardez à l'esprit que tous les sorts qui vont être gagnés ou appliqués ont également besoin d'être créés puis ajoutés au jeu. Comment créer des sorts dépasse le champ de ce tutoriel ; il y en a bien d'autres qui couvrent ce sujet. Cette liste de fichiers à modifier est assez longue et difficile à digérer du premier coup. Cependant, le prochain tutoriel montrera comment la commande ADD_KIT de WeiDU fera tout le travail pour vous.

Posté : ven. 15 janv. 2010, 17:30
par Lothringen
Le sujet d'aujourd'hui couvrira l'utilisation de WeiDU comme outil de distribution et d'installation de mod. Pour ceux d'entre vous qui ne savent pas comment utiliser WeiDU, ou sont en train de concevoir leur premier mod, j'ai également inclus une section sur la création basique de mods avec WeiDU. Ceux qui sont familiarisés avec l'utilisation des tp2 peuvent sauter la première section.

Troisième Partie :

Créer un mod WeiDU, les bases



Un mod WeiDU est par nature constitué de :
  • le programme WeiDU lui-même ;
  • une liste d'instructions qui dit au programme WeiDU ce qu'il doit faire (le fichier tp2 présenté plus en détail ci-dessous) ;
  • et une série de fichiers requis pour votre mod – tels que les objets, sorts, etc.
[INDENT][INDENT]
* Votre première démarche doit être de vous emparer de la version la plus récente du programme WeiDU sur Baldur's Gate II: Westley Weimer's Mods. La version actuelle est la v213.
Trouvez le programme weidu.exe et renommez-le en Setup-MonMod.exe. Tout au long de ce tutoriel, je parlerai de « MonMod » ; quand vous créerez votre mod, il faudra bien sûr remplacer « MonMod » par le nom que votre propre mod.
Soit dit en passant, les exemples fournis avec WeiDU, de même que la documentation incluse, sont en eux-mêmes une source de tutoriels.

* La prochaine étape est de créer un dossier nommé MonMod qui contiendra, entre autres, le dossier de sauvegarde et les autres fichiers de votre mod.
Au sein du dossier MonMod, créez un autre dossier nommé « backup » (sauvegarde.) Quand un mod WeiDU est installé, tous les fichiers remplacés ou modifiés sont stockés dans le dossier de sauvegarde afin de permettre la désinstallation.
Vous aurez aussi intérêt à ajouter un simple fichier texte ou équivalent dans votre dossier de sauvegarde. (Si vous compressez votre mod au format ZIP ou RAR, certains programmes ignoreront les dossiers vides au moment de la décompression. Cela peut conduire à un dossier de sauvegarde manquant, ce qui, à son tour, entraînera l'échec de l'installation de votre mod. Nous ajoutons un fichier inutile dans ce dossier pour éviter qu'il ne soit vide.)

* Pour finir, nous créons le fichier tp2. Le fichier tp2 est un fichier texte qui dit à WeiDU comment installer et désinstaller votre mod. Un fichier tp2, pour l'essentiel, contient un en-tête - - contenant des informations telles que le nom d'auteur, les options de langue, etc. - - et une section propre à chacun des composants du mod. Créez donc un fichier texte nommé Setup-MonMod.tp2 et placez-le dans le dossier MonMod. (Veuillez remarquer que placer le fichier tp2 dans le dossier n'est supporté que par les versions de WeiDU v155 et postérieures.)
Vous pouvez utiliser n'importe quel éditeur de texte pour travailler sur le fichier tp2, bien que je recommanderais volontiers ConTEXT, un éditeur de texte gratuit, ainsi que les trois outils de coloration syntaxique disponibles avec lui : Idobek's tp2 highlighter, dialogue file highlighter, et Blucher's BAF syntax highlighter.

NdT : nous vous renvoyons aussi aux outils de coloration syntaxique disponibles pour d'autres éditeurs (G3: WeiDU Highlighters) et à ceux proposés par Miloch pour PSPad (New syntax editor - The Gibberlings Three Forums). [/INDENT][/INDENT]Une fois créé, ouvrez votre tp2 dans l'éditeur de texte de votre choix. Tout au long de la syntaxe, vous verrez des commentaires de ma part. Dans le fichier tp2 tout ce qui se trouve entre un /* (début) et un */ (fin) est un commentaire que WeiDU ignorera. Une autre forme de commentaire est le double slash // qui dit à WeiDU d'ignorer tout depuis le // jusqu'à la fin de la ligne. Pour commencer, nous devons créer l'en-tête. Pour ce faire, ajoutez ceci à votre tp2:

Code : Tout sélectionner

BACKUP ~MonMod/backup~ // pour que WeiDU puisse se désinstaller 
AUTHOR ~monemail@mondomaine.com~ // contacter l'adresse affichée si l'installation a échoué
C'est le strict minimum requis pour un mod. Il y a des commandes additionnelles que vous pouvez ajouter à l'en-tête ; je renvoie le lecteur aux documentations WeiDU pour une liste complète de celles-ci. Après l'en-tête, vous devrez ajouter des commandes pour chacun des composants de votre mod.

Code : Tout sélectionner

BEGIN ~Kit de Tutoriel~ // nom de ce composant 
Vous pouvez avoir autant de BEGINs que vous le souhaitez ; chaque BEGIN introduit un nouveau composant de votre mod. Quand nous parlerons ci-dessous de l'utilisation de la commande ADD_KIT, vous devrez l'ajouter après BEGIN.

Pour finir, la commande ADD_KIT



ADD_KIT est une puissante commande de WeiDU qui modifiera presque tous les fichiers nécessaires à la création d'un kit. Je pense que la meilleure façon d'expliquer son fonctionnement est de poster tout d'abord le code en entier, puis de l'étudier ligne par ligne.
C'est l'Etoile d'Argent de Seluné, du mod Cleric Remix, qui nous servira d'exemple.

NdT : le mod Cleric Remix s'appelle désormais Divine Remix.

Code : Tout sélectionner

// nom interne du kit
ADD_KIT ~C!Selune~

 // ajouté à la fin de CLASWEAP.2da
 ~C!Selune                0           0           1           1           0           1           0           0~

 // ajouté en tant que colonne à la fin de WEAPPROF.2da
 ~C!Selune 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0~
   
 // ajouté à la fin de ABCLASRQ.2da
 ~C!Selune                0       0       0       0       9       0~

 // ajouté à la fin de ABCLSMOD.2da
 ~C!Selune                0       0       0       0       0       0~

 // ajouté à la fin de ABDCDSRQ.2da
 ~C!Selune                0       0       0       0       17      0~

 // ajouté à la fin de ABDCSCRQ.2da
 ~C!Selune                0       0       0       0       15      0~

 // ajouté à la fin de ALIGNMNT.2da
 ~C!Selune                0       0       0       1       0       0       1       1       0~

 // ajouté à la fin de DUALCLAS.2da
 ~C!Selune                1       0       1       1       0       1~

 // chemin d'accès vers votre fichier 2da de type CLAB
 ~Cleric_Remix/Selune/C!Selune.2da~

 // races et classes de PJ autorisées à utiliser ce kit, provenant de KITTABLE.2da
 ~K_C_D K_C_E K_C_G K_C_H K_C_HE K_C_HL K_C_HO~

// indicateurs d'utilisabilité, ajouté à la fin  	de la nouvelle ligne dans    KITLIST.2da
 ~0x00004000    3~

 // Table de CHN à utiliser. Voir LUABBR.2da
 ~C!3~

 //  	Liste de l'équipement du PJ créé dans ToB. Ajouté en tant que colonne à 25STWEAP.2da 
 *~CHAN09 * HELM07 BAG20 RING06 RING31 * BOOT01 AMUL19 BRAC16 BELT06 AROW11,40 BULL03,40 BOLT06,40 POTN52,5 POTN4,2 POTN14,5 HAM07 SW1H27 STAF08~

 // Nom du kit en lettres minuscules et mixtes, et description du kit, ajoutés à KITLIST.2da
 SAY ~étoile d'argent de séluné~
 SAY ~Etoile d'Argent de Séluné~
 SAY ~ETOILE D'ARGENT DE SELUNE: description tronquée en raison de sa longueur~
Voilà. Maintenant, ligne par ligne. Vous remarquerez que j'ai supprimé la plupart des commentaires.

Code : Tout sélectionner

ADD_KIT ~C!Selune~
C!Selune, dans cet exemple, est le nom interne du kit, et c'est ainsi qu'il y sera fait référence dans les fichiers du jeu. Le nom interne que vous spécifiez ici doit rester le même tout au long de la commande ADD_KIT.

Code : Tout sélectionner

// ajouté à la fin de CLASWEAP.2da
 ~C!Selune                0           0           1           1           0           1           0           0~

 // ajouté en tant que colonne à la fin de WEAPPROF.2da
 ~C!Selune 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0~
   
 // ajouté à la fin de ABCLASRQ.2da
 ~C!Selune                0       0       0       0       9       0~

 // ajouté à la fin de ABCLSMOD.2da
 ~C!Selune                0       0       0       0       0       0~

 // ajouté à la fin de ABDCDSRQ.2da
 ~C!Selune                0       0       0       0       17      0~

 // ajouté à la fin de ABDCSCRQ.2da
 ~C!Selune                0       0       0       0       15      0~

 // ajouté à la fin de ALIGNMNT.2da
 ~C!Selune                0       0       0       1       0       0       1       1       0~

 // ajouté à la fin de DUALCLAS.2da
 ~C!Selune                1       0       1       1       0       1~
Ajoute les données aux différents fichiers .2da. Pour savoir à quoi correspondent les différents 2da, reportez-vous à la seconde partie du tutoriel. La taille des espaces entre les entrées n'a pas d'importance. Cependant, par défaut, j'ai espacé les entrées de telles sortes qu'elles s'alignent avec les colonnes des fichiers d'origine. Certaines données ne sont pas ajoutées sous forme de ligne, mais sous forme de colonne (par exemple WEAPPROF) -- ne vous en inquiétez pas, WeiDU gère ça tout seul.

Code : Tout sélectionner

 ~Cleric_Remix/Selune/C!Selune.2da~
C'est le chemin vers le fichier 2da de type CLAB (contenant donc la liste des capacités obtenues à chaque gain de niveau) pour le kit. Si vous utilisiez MONKIT.2da et que vous le mettiez dans le dossier MonMod, alors cette ligne deviendrait: ~MonMod/MONKIT.2da~ à la place. Le nom de fichier ne doit pas dépasser 8 caractères.

Code : Tout sélectionner

 ~K_C_D K_C_E K_C_G K_C_H K_C_HE K_C_HL K_C_HO~
Cette ligne détermine quelle combinaison de classe et de race rend le kit utilisable par le joueur, comme décrit dans KITTABLE.2da. Si vous voulez que le kit ne soit pas disponible pour le personnage, utilisez ~~ à la place. Créer des kits inutilisables par le joueur peut être utile si vous voulez donner à un PNJ ou à un monstre un kit puissant ou unique, mais que vous ne voulez pas que le joueur y ait accès. Cela peut également être utilisé pour effectuer des modifications spéciales sur un kit existant pour un PNJ. Chloe, par exemple, utilise un kit de Kensai non-disponible pour le PJ, et qui empêche le jumelage.

Code : Tout sélectionner

~0x00004000    3~
L'indicateur d'utilisabilité de KITLIST.2da . J'ai encore une fois espacé afin de correspondre aux colonnes, bien que ce ne soit pas strictement nécessaire. Référez-vous à la seconde partie pour plus d'informations sur les indicateurs d'utilisabilité.

Code : Tout sélectionner

~C!3~
Détermine quelle table de CHN doit être utilisé par le kit. (Si le kit est utilisé sur un jeu ne comprenant que SoA, les lignes spécifiques à ToB sont ignorées). Si vous utilisez une table que vous avez créée vous-même, vous devrez la copier séparément (voir ci-dessous).

Code : Tout sélectionner

~CHAN09 * HELM07 BAG20 RING06 RING31 * BOOT01 AMUL19 BRAC16 BELT06 AROW11,40 BULL03,40 BOLT06,40 POTN52,5 POTN4,2 POTN14,5 HAM07 SW1H27 STAF08~
Une liste de l'équipement de départ pour un PJ utilisant ce kit dans ToB. Elle est ajoutée à 25STWEAP.2da . Si vous ne voulez pas que le kit dispose d'un équipement sur un emplacement particulier, vous pouvez utiliser une étoile (*) à la place. Cette ligne est également ignorée lors d'une installation de SoA seulement.

Code : Tout sélectionner

 SAY ~étoile d'argent de séluné~
 SAY ~Etoile d'Argent de Séluné~
 SAY ~ETOILE D'ARGENT DE SELUNE: description tronquée en raison de sa longueur~
Et, finalement, le nom et la description de notre kit. Ils correspondent aux noms en lettres minuscules et mixtes, ainsi qu'à la description du kit, dans le fichier KITLIST.2da . Alors que beaucoup de mods traitent différemment les lignes mixtes et minuscules, je n'ai toujours pas vu la différence et j'utilise en général le même texte pour les deux. Le troisième SAY, avec sa description sensiblement plus longue, peut comprendre plus d'une ligne.

[NdIsaya] le premier SAY doit être suivi d'un nom tout en minuscule, afin de ne pas différer de la forme utilisée par les kits du jeu original sur l'écran de sélection. La police utilisée dans le jeu est en lettres capitales, de toute façon. Faute de respecter cette règle, le nom du kit n'apparaîtra pas, comme les autres, avec des lettres ayant toutes la même hauteur à l'écran.


Donc, si nous combinons tout ceci, et en enlevons les commentaires, nous obtenons :

Code : Tout sélectionner

ADD_KIT ~C!Selune~
 ~C!Selune                0           0           1           1           0           1           0           0~
 ~C!Selune 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0~
 ~C!Selune                0       0       0       0       9       0~
 ~C!Selune                0       0       0       0       0       0~
 ~C!Selune                0       0       0       0       17      0~
 ~C!Selune                0       0       0       0       15      0~
 ~C!Selune                0       0       0       1       0       0       1       1       0~
 ~C!Selune                1       0       1       1       0       1~
 ~Cleric_Remix/Selune/C!Selune.2da~
 ~K_C_D K_C_E K_C_G K_C_H K_C_HE K_C_HL K_C_HO~
 ~0x00004000     3~
 ~C!3~
 ~CHAN09 * HELM07 BAG20 RING06 RING31 * BOOT01 AMUL19 BRAC16 BELT06 AROW11,40 BULL03,40 BOLT06,40 POTN52,5 POTN4,2 POTN14,5 HAM07 SW1H27 STAF08~

 SAY ~étoile d'argent de séluné~
 SAY ~Étoile d'Argent de Séluné~
 SAY ~ETOILE D'ARGENT DE SELUNE: description tronquée en raison de sa longueur~
Excellent ! Mais qu'en est-il des sorts, des objets et autres choses dont j'ai besoin pour le mod ?
Ajouter des sorts, des objets et d'autres chouettes commandes WeiDU spécifiques aux kits sera le sujet de la quatrième et dernière partie.

Re : [TUTO] Création de kit pour BG2

Posté : ven. 15 janv. 2010, 18:28
par Lothringen
Bon, pour le moment nous avons parlé de ce qui est généralement possible en terme de création de kit, des fichiers impliqués, et nous avons créé un installateur WeiDU basique avec la commande ADD_KIT. Cependant, il y a bien d'autres choses à faire pour installer votre kit. Qu'en est-il de l'ajout de sorts et d'objets ? De l'interaction avec les autres mods ? De la façon d'assigner un kit à une créature ? C'est ce que nous allons tenter de couvrir dans cette quatrième et dernière partie. Je ne parlerai que de commandes et d'options de base. Je vous conseille de lire la documentation de WeiDU (et notamment le lisez-moi : WeiDU readme)pour des astuces, commandes et options additionnelles.


Quatrième Partie :

Transferts basiques de fichiers : la commande COPY



COPY est une des commandes les plus basiques pour le transfert de fichiers.
La syntaxe est la suivante, en incluant les options dont vous aurez probablement besoin :

Code : Tout sélectionner

COPY ~MonMod/Monsort.spl~ ~override~  
SAY NAME1 ~Nom Général~ // nom avant identification pour les objets OU nom de sort  
SAY NAME2 ~Nom identifié~ // nom identifié pour les objets ; pas utilisé pour les sorts  
SAY UNIDENTIFIED_DESC ~Description Non Identifiée~ // description avant identification pour les objets, description de sort pour les sorts 
SAY DESC ~Description Identifiée~ // description identifiée pour les objets, pas utilisée pour les sorts
La commande COPY prend votre fichier et le déplace, dans cet exemple-ci, dans le dossier override, le rendant ainsi accessible au jeu.

Les commandes SAY sont optionnelles ; elles ajoutent vos textes au dialog.tlk pour votre objet ou votre sort – Quand vous créez vos objets ou vos sorts pour le kit, ne vous embêtez pas à ajouter les textes dans dialog.tlk, WeiDU le fait automatiquement et de manière à permettre la désinstallation. Les quatre commandes SAY sont toutes optionnelles, donc employez celles dont vous avez besoin. COPY peut aussi être utilisé pour des fichiers multiples, soit en copiant un répertoire (dans l'exemple qui suit, il s'agit du dossier nommé bams à l'intérieur du dossier MonMod) :

Code : Tout sélectionner

 COPY ~MonMod/bams~ ~override~
soit en spécifiant plus d'un fichier avec la commande COPY

Code : Tout sélectionner

 COPY ~MonMod/bam1.bam~ ~override~     
 ~MonMod/bam2.bam~ ~override~     
 ~MonMod/eff1.bam~ ~override~ 
SAY peut être utilisé en conjonction avec un COPY sur des fichiers multiples ; dans ce cas, le SAY s'applique à chacun des fichiers copiés avec la fonction.


Utilisation de COPY et COPY_EXISTING pour assigner un kit à une créature



Assigner un kit à une créature est plus difficile qu'il n'y paraît. Les fichiers de créatures (.CRE) utilisent le numéro de kit de KITLIST.2da pour déterminer leur kit. Cela dit, selon le nombre de mods de kits installés par le joueur (un ou plusieurs), la référence changera. Ainsi vous devrez assigner le kit au moment de l'installation.

Si vous ajoutez une nouvelle créature et voulez qu'elle ait le nouveau kit, vous pouvez employer :

Code : Tout sélectionner

COPY ~Delainy/cre/C!DELA10.cre~ ~override/C!DELA10.cre~ //Delainy au niveau 10 
SAY NAME1 ~Delainy~  
SAY NAME2 ~Delainy~  
WRITE_SHORT 0x244 0 // ne change pas  
WRITE_BYTE  0x246 ~%C!WWBARD%~ // le nom interne de votre kit, entouré de %  
WRITE_BYTE  0x247 0x40 // ne change pas
C'est le codage que j'emploie pour assigner le kit C!WWBARD à Delainy.

NdT : Delainy était un projet de mod (non terminé) pour ajouter Delainy/Durlyle dans BG II. Ceci explique pourquoi l'auteur emploie COPY pour Delainy (nouveau personnage de son mod) alors qu'il emploie COPY_EXISTING pour Viconia.

Si vous voulez assigner un kit à une créature existante, par exemple assigner à Viconia un kit de Cape de Nuit de Shar, vous pouvez employer COPY_EXISTING. COPY_EXISTING est semblable à COPY, sauf qu'il recherche le fichier dans le jeu et y apporte les changements spécifiés. Cette commande peut aussi impliquer des fichiers sources et des fichiers de destination multiples, comme COPY.

Code : Tout sélectionner

COPY_EXISTING ~Viconi6.cre~ ~override~
              ~Viconi8.cre~ ~override~
              ~Viconi9.cre~ ~override~
              ~Viconi11.cre~ ~override~
              ~Viconi13.cre~ ~override~
              ~Viconi16.cre~ ~override~ // ToB seulement, voir ci-dessous à propos de ACTION_IF
 WRITE_SHORT 0x244 0 // ne change pas
 WRITE_BYTE  0x246 ~%A#SHAR%~ // le nom interne de votre kit, entouré de %
 WRITE_BYTE  0x247 0x40 // ne change pas 
Viconia a de nombreux fichiers CRE selon le niveau auquel elle apparaît, ce code sert à les patcher tous. Cependant, c'est un mauvais code : si vous utilisez COPY_EXISTING et que WeiDU ne peut pas trouver le fichier spécifié, l'installation échouera. Dans l'exemple ci-dessus, Viconi16.cre est un fichier pour ToB exclusivement ; utiliser ce code sur une installation de SoA seul la fera échouer. La solution à ce problème est notre prochaine commande, ACTION_IF.


Installations conditionnelles: utilisation de ACTION_IF pour détecter les conditions



ACTION_IF est une très bonne façon de rendre votre mod compatible avec d'autres mods et d'éviter les problèmes dus aux installations sur SoA seul. Pour l'essentiel, ACTION_IF regroupe une liste de commandes WeiDU qui n'interviennent que si une certaine condition est remplie. La syntaxe est la suivante :

Code : Tout sélectionner

 ACTION_IF FILE_EXISTS ~override/item.itm~ THEN BEGIN 
 (commandes de WeiDU telles que COPY si la condition est remplie)  
END 
ELSE BEGIN // la clause ELSE est entièrement optionnelle  
(commandes de WeiDU telles que COPY si la condition n'est pas remplie)  
END
Il existe d'autres conditions que FILE_EXISTS (encore une fois, vérifiez sur les documents WeiDU), mais c'est celle dont vous aurez le plus probablement besoin et c'est pourquoi je me concentrerai sur elle. Un de ses emplois directement applicable à la création de kit est de ne copier les sorts de CHN (capacités de haut niveau) que si ToB est installé. Dans ce cas, vous pouvez rechercher ~data/25dialog.bif~ car ce fichier n'est présent que dans les installations de ToB.

Pour résoudre le problème du mauvais exemple de Viconia ci-dessus, utilisez ceci à la place (remarquez que seul le patch de Viconi16.cre est conditionnel ; tous les autres fichiers sont toujours patchés car ils sont extérieurs au ACTION_IF) :

Code : Tout sélectionner

COPY_EXISTING ~Viconi6.cre~ ~override~
              ~Viconi8.cre~ ~override~
              ~Viconi9.cre~ ~override~
              ~Viconi11.cre~ ~override~
              ~Viconi13.cre~ ~override~ // Viconi16.cre a été déplacé vers le ACTION_IF, ci-dessous
WRITE_SHORT 0x244 0 // ne change pas
WRITE_BYTE  0x246 ~%A#SHAR%~ // le nom interne de votre kit, entouré de %
WRITE_BYTE  0x247 0x40 // ne change pas

ACTION_IF FILE_EXISTS ~data/25dialog.bif~ THEN BEGIN
COPY_EXISTING ~Viconi16.cre~ ~override~ // seulement si ToB installé
WRITE_SHORT 0x244 0 //ne change pas
WRITE_BYTE  0x246 ~%A#SHAR%~ // le nom interne de votre kit, entouré de %
WRITE_BYTE  0x247 0x40 // ne change pas
 END
N'importe quelle commande WeiDU peut être utilisée à l'intérieur d'un ACTION_IF, ADD_KIT compris.

Deux mods populaires qui affectent classes et kits en général sont Ashes of Embers de Ghreyfain (armes universelles, aussi appelé CLERICS WITH SWORDS – des clercs avec des épées) et Rogue Rebalancing d'aVENGER (les voleurs peuvent avoir trois étoiles au combat à deux armes). Vous pouvez utiliser ACTION_IF pour détecter s'ils sont installés et modifier le kit en conséquence.
Voici, par exemple, ce même kit d'Etoile d'Argent de Séluné du mod Cleric Remix que nous avons utilisé dans la partie trois, tel qu'il apparaît dans le tp2. J'ai ajouté la vérification de la présence de ~override/bola01.itm~, un objet ajouté par AoE. (Ashes of Ember)

Code : Tout sélectionner

 ACTION_IF FILE_EXISTS ~override/bola01.itm~ THEN BEGIN //si AoE est installé
   ADD_KIT ~C!Selune~
     ~C!Selune                1           1           1           1           1           1           1           1~ // pas de restrictions d'armes
     ~C!Selune 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1~ // pas de restrictions d'armes
     ~C!Selune                0       0       0       0       9       0~
     ~C!Selune                0       0       0       0       0       0~
     ~C!Selune                0       0       0       0       17      0~
     ~C!Selune                0       0       0       0       15      0~
     ~C!Selune                0       0       0       1       0       0       1       1       0~
     ~C!Selune                1       0       1       1       0       1~
     ~Cleric_Remix/Selune/C!Selune.2da~
     ~K_C_D K_C_E K_C_G K_C_H K_C_HE K_C_HL K_C_HO~
     ~0x00004000     3~
     ~C!3~
     ~CHAN09 * HELM07 BAG20 RING06 RING31 * BOOT01 AMUL19 BRAC16 BELT06 AROW11,40 BULL03,40 BOLT06,40 POTN52,5 POTN4,2 POTN14,5 HAM07 SW1H27 STAF08~
SAY ~étoile d'argent de séluné~ 
SAY ~Étoile d'Argent de Séluné~  
SAY ~ETOILE D'ARGENT DE SELUNE: description tronquée en raison de sa longueur~  
 END  
    
ELSE BEGIN //si AoE n'est PAS installé
   ADD_KIT ~C!Selune~
     ~C!Selune                0           0           1           1           0           1           0           0~ // restrictions d'armes normales
     ~C!Selune 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0~ // restrictions d'armes normales
     ~C!Selune                0       0       0       0       9       0~
     ~C!Selune                0       0       0       0       0       0~
     ~C!Selune                0       0       0       0       17      0~
     ~C!Selune                0       0       0       0       15      0~
     ~C!Selune                0       0       0       1       0       0       1       1       0~
     ~C!Selune                1       0       1       1       0       1~
     ~Cleric_Remix/Selune/C!Selune.2da~
     ~K_C_D K_C_E K_C_G K_C_H K_C_HE K_C_HL K_C_HO~
     ~0x00004000     3~
     ~C!3~
     ~CHAN09 * HELM07 BAG20 RING06 RING31 * BOOT01 AMUL19 BRAC16 BELT06 AROW11,40 BULL03,40 BOLT06,40 POTN52,5 POTN4,2 POTN14,5 HAM07 SW1H27 STAF08~
SAY ~étoile d'argent de séluné~  
SAY ~Étoile d'Argent de Séluné~  
SAY ~ETOILE D'ARGENT DE SELUNE: description tronquée en raison de sa longueur~   
END 
Si AoE est installé, vous remarquerez que le kit permet désormais d'avoir des compétences dans toutes les armes, ce qui correspond aux changements apportés par AoE. Si AoE est absent, alors le kit proposera les compétences typiques du clerc. Le même système peut être utilisé pour les kits de voleur et Rogue Rebalancing—en vérifiant la présence d'un objet spécifiquement ajouté par Rogue Rebalancing, vous pouvez installer un kit de voleur doté de deux ou trois étoiles en combat à deux armes, comme il sied avec Rogue Rebalancing.

Résumé

J'ai essayé de parler de la majorité des problèmes de création et d'installation de Kits avec cette série de tutoriels, mais il y a inévitablement des points que j'ai oublié d'aborder et des questions auxquelles je n'ai pas répondu... Si vous le désirez, vous pouvez en parler sur ce topicde discussion du forum de Gibberlings Three, et nous ferons notre possible pour répondre à vos questions.


NdT : et évidemment vous pouvez aussi les poser sur la Couronne, dans cette section.

Re : [TUTO] Création de kit pour BG2

Posté : lun. 18 janv. 2010, 21:27
par Isaya
Message réservé à l'historique et aux compléments d'information.

Historique :
  • 15/01/2010 : compléments des parties du tutoriel perdues lors d'une mise à jour du forum (nouvelle traduction de Lothringen), relecture et correction d'ensemble

Posté : ven. 29 mars 2013, 23:09
par Silline
Bonsoir à tous.

Bon, voilà, je me lance dans mon premier mod, et comme tout modeur en herbe, mon premier mod ne s'installe pas et enchaine les "ERROR" et les "FATAL ERROR".

D'où ma question : serait il possible d'avoir une liste des fichiers qui doivent être présents dans le dossier de mod ? Autrement dit :

- Il faut le tp2 (ça j'ai compris)
- Le Weidu bien renommé (ça aussi)
- Les sorts, si besoin (ça j'ai compris)

et là c'est moins clair...

- Faut-il un fichier D2A pour la liste des kits ? Si oui, comment le coder ? Il faut inscrire le nouveau kit dedans ? Si oui, que signifient plus précisément chaque colonne ? Car bon, j'avoue ne pas trop comprendre...

-Y en a-t-il d'autres ? J'ai fait un codage pour la liste des capacités (sorts) de mon clerc (ability.2da), mais bon, ça marche pas. Et il ne me lit même pas. Est-ce que quelqu'un est prêt à recevoir mon tp2 et dire ce qu'il manque ? Car j'avoue ne pas savoir où est l'erreur...

Merci à tous !

S.