Les outils
Et oui on fait pas d'omelettes sans casser des oeufs et on fait pas de PNJ sans outils
[INDENT]Weidu l'indispensable pour implanter votre PNJ dans le jeu. Pour être plus précise c’est une sorte de lecteur qui en lisant votre fichier .TP2, expliqué plus bas, transformera vos fichier écrit en langue Weidu soit des fichier .d et .baf en fichiers de type 001100 .dlg et .bcs.[/INDENT][INDENT]Near infinity, pour visualiser de manière lisible les fichiers du jeu voir en modifier.[/INDENT][INDENT]Shadow Keeper, éditeur de sauvegardes, pour chercher différentes variables ou pour modifier des créatures. [/INDENT][INDENT]ConTEXT LA référence pour faire du codage, on peut aussi prendre le bloc note mais il parai que ça pose des problèmes. Non ce n’est pas ce qui fait le programme mais c’est ce qui permet de les écrire et de se repère via les n° de ligne et de colonne. [/INDENT][INDENT]DLTC ou IEEP (infinity engine editor pro) pour la création de sorts, d'objets...mais je ne m’entend sur leur utilisation dans ce tutorial.[/INDENT]Le fichier dialogue .D
Qu'est ce que c'est?
Et bien comme son nom l'indique c'est le fichier dialogue de votre personnage.
Fabrication
Lancer ConTEXT ou un éditeur de texte.
A noter que lorsque vous sauvegardez votre texte dialogue il faut mettre comme extension .d
Vous pouvez mettre un bout de phrase commençant par // pour vous rappeler ce à quoi ça correspond, tout ce qui est suivit de ce signe,
dans une même ligne ne sera pas lu par le programme. J'en ferai autant de ce tuto.
Commencez en écrivant
BEGIN L#NPC // C'est le nom de votre nouveau bloc de dialogue vous pouvez mettre ce que vous voulez mais pas d'espace ni d'accent
// L# est le préfixe permettant de préciser "à quel personnage appartient" le dialogue, il vaut mieux prendre un préfixe n'ayant jamais été utilisé pour éviter les conflits
IF ~NumTimesTalkedTo(0)~ THEN BEGIN Rencontre // IF ~~ sont les conditions à remplir pour que le dialogue s'enclenche
// NumTimesTalkedTo(0) qui est entre les ~~ est la condition à remplir, vous pouvez en mettre plusieurs, celui-ci indique que vous n'avez jamais parlez à ce perso
// THEN BEGIN est le "sous-nom de votre bloc là encore mettez ce que voulez mais pas d'espace ni d'accents
SAY ~Bonjour ! Je suis le nouveau NPC.~ // SAY indique que votre NPC parle; les ~~ indiquent le commencement de sa/ses phrases et sa/leur fin/s
IF ~Gender("Player1","FEMALE")~ THEN REPLY ~T'es beau gosse tu sais!~ GOTO suite //IF est encore là pour les conditions
//Gender("Player1","FEMALE") c'est une condition permettant à votre perso principal de répondre ce qui suit uniquement si votre PJ est une femme
//THEN REPLY indique ce que vous aurez comme possibilités pour répondre
//GOTO suite GOTO indique quel bloc va suivre votre réponse là encore mettez ce que vous voulez mais pas d'accents ni d'espaces
//excusez la pauvreté de la réplique j'ai pas trouvé mieux
IF ~~ THEN REPLY ~Boujour.~ GOTO Suite
// bon bah je ré explique pas c'est pareil que ce qui à au-dessus mais y'a pas de conditions
END // cela indique la fin du bloc, attention c'est très important
// note : il ne faut pas confondre END fin du bloc, et EXIT fin du dialogue
IF ~~ THEN BEGIN suite // cela indique que si vous avez donnez une réplique ayant GOTO suite ce bloc commencera
SAY ~Je peux me joindre à toi?~ //
IF ~~ THEN REPLY ~Bien sur!~ DO ~SetGlobal("NPCJoined","LOCALS",1)// DO indique au programme qu'il doit faire quelque chose au niveau des variables
// les ~~ indique les variables à changer
// SetGlobal veut dire mettre global, ("NPCJoined",[...] c'est le nom de la variable
// [...] ,"LOCALS",1) signifie que cette variable est une locale est quelle doit être mise à 1 (locale est une variable propre à CE NPC)
// en gros cette variable indique que votre perso est dans l'équipe
JoinParty()~ EXIT //JoinParty c'est l'action de votre NPC "vous rejoindre" ce n'est pas le tout d'avoir la variable il faut aussi l'action
// EXIT indique que ce dialogue est terminé
IF ~~ THEN REPLY ~Je ne suis pas l'ANPE.~ GOTO ANPE
END // même si vous avez mis EXIT il faut mettre END pour indiquer que le bloc est fini
IF ~~ THEN BEGIN ANPE
SAY ~Bon, comme tu veux, je vais faire le poireau ici.~
IF ~~ THEN EXIT *//Si votre dialogue se termine par une réplique de votre NPJ il ne suffit pas de mettre seulement EXIT
END
BEGIN L#NPCP //si vous respectez les règles de l'art vous mettrez un P à la fin qui indique que ce dialogue est celui du renvoie
IF ~Global("NPCJoined","LOCALS",1)~ THEN BEGIN dehors // Global("NPCJoined","LOCALS",1) indique que le NPC doit être dans votre équipe
// il faut noter que les variables utilisées dans ce tuto sont celles disons "conventionnelles" mais vous pouvez mettre ce que vous voulez du moment que vous l'utilisez de la bonne façon
SAY ~Vous ne voulez plus de moi?.~
IF ~~ THEN REPLY ~Heu...non je voulais virer Anomen, reste.~ DO ~JoinParty()~ EXIT //il faut remettre JoinParty() car quand vous reformez votre groupe le NPC sort de l'équipe il faut donc lui dire de revenir
IF ~~ THEN REPLY ~Oui je pensais pas que tu serais aussi nul.~ DO ~SetGlobal("NPCJoined","LOCALS",0)~ EXIT // SetGlobal("NPCJoined","LOCALS",0) indique au niveau des variables que votre NPC n'est plus dans l'équipe
// si plus haut vous aviez mis autre chose que NPCJoined il fallait remettre celle que vous aviez choisie
END
IF ~Global("NPCJoined","LOCALS",0)~ THEN BEGIN Rejoin
SAY ~Tu veux que je revienne?~
IF ~~ THEN REPLY ~Oui mais dépêches-toi.~ DO ~SetGlobal("NPCJoined","LOCALS",1) //il faut redire aux variables du NPC qu'il est dans l'équipe
JoinParty()~ EXIT // et il faut lui dire de rentrer dans l"équipe
IF ~~ THEN REPLY ~Non reste ici.~ EXIT //bah là y'a besoin de rien faire
END
:!: Notes importantes : par convention est uniquement par convention vous pouvez tout changer si vous voulez :
xxxxP est le fichier dialogue de renvoie
xxxxJ est le fichier pour les dialogues du perso avec le NPC et ses interventions dans les dialogues
Bxxxx est le fichier pour les dialogues entre les perso que vous avez enrôlez, vous n'êtes pas inclus dans ces dialogues sauf cas rare
Les fichiers scripts
Définition :
En gros ça indique le pourquoi, le comment et le quand pour déclencher tel ou tel action ou dialogue.
Voici comment faire pour que votre NPC parle dès qu'il voit votre PJ
Nommez le comme vous voulez mais moins de 8 ou 7 caractères, il faut que son extension soit .baf
Notez aussi que se sera dans ce fichier qu'il faudra mettre les scripts de romance ou de dialogue :
Quand au script de création du personnage :IF
See([PC])
NumTimesTalkedTo(0)
THEN
RESPONSE #100
Dialogue(Nearest([PC]))
END // Traduisez si voit le PJ alors dialogue au plus près de votre équipe
Tout d'abord il vous faudra les coordonnées du lieu où vous voulez faire apparaître votre perso. Pour cela baladez-vous dans baldur's gate et une fois que
vous avez trouvez l'endroit idéal pressez x cela affichera les coordonnées du lieu et le nom de l'area. Non il n'est pas nécessaire d'avoir fait la bidouille dans le fichier baldur ini c'est un raccourcit du jeu changeable via les options
Voici le script à écrire:
Et voilà! Attention ce script ne marchera que si vous n'êtes pas allé, dans votre partie, dans la zone où sera crée votre NPC sinon le script de zone aura déjà été enclenché.IF
Global("TheNPCExists","AR0700",0) //cette variable indique que le votre créature, perso n'est pas crée.
//AR0700 correspond à la promenade
THEN
RESPONSE #100
SetGlobal("TheNPCExists","AR0700",1)//votre perso est "crée" au niveau des variables.
CreateCreature("TheNPC",[3266.0996],1) // Tada CreateCreature va créer votre NPC.
//[3266.0996],1 alors entre les crochets ce sont les coordonnées du lieu précis où votre perso va apparaître le premier étant la valeur x et l'autre z
// le 1 qui se ballade tout seul est la direction vers laquelle sera tournée votre NPC les valeur vont de 0 à 12 (il me semble)
END
Pour le nom du fichier mettez le nom que vous voulez mais en extention .baf
Le fichier CRE.
Qu'est ce que c'est :
C'est un fichier créature, donc votre personnage. Ca peut aussi être un monstre ou un lapin...
Création
Lancez une partie, créez votre peso principal comme si c'était votre PNJ. Inutile de rédiger le bio elle ne sera pas conservée.
Modifiez-le avec SK.
Une fois que vous êtes content du fichier CHR exportez-le en cre c'est dans la barre de tâche de SK.
Allumez Near infinity
Ici nous nommerons notre fichier cre L#TheNPC, il faut aussi qu'il soit inférieur à 7 ou 8 caractères
Là ça se complique un tout petit peu allez dans override et trouvez votre fichier cre
Allez dans edit.
Dans la première colonne cherchez flag et enlevez toutes les croix.
AnimationID peut vous permettre de mettre une skin d'elfe au lieu d'une skin d'humain par exemple
Vous avez un peu plus bas smallportrait et largeportrait cliquer droit et choisissez edit as string, mettez ensuite le nom de vos fichiers portraits sans l'extension.
Un peu plus bas vous avez tout les sons, si vous n'avez pas de son mettez comme référence -1 partout.
Encore plus bas vous avez sex, le sexe de votre perso vous l'aurez deviné
Et légèrement plus bas override sript, choisissez edit as string et mettez le nom du fichier dans lequel est codé l'arrivé de votre NPC
Dans ennemy-ally mettez NEUTRAL - 128
Et dans Death variable mettez ce que vous voulez mais cette ne variable ne doit pas déjà être présente dans le jeu car cette variable identifie votre créature dans le jeu.
Et puis pour finir le dialog ben éditez en string et mettez le nom de votre fichier dialogue, le tout premier où votre NPC se présente.
A noter que pour la cohérence il faudrait supprimer les innates spells correspondants aux pouvoir dû à Bhall.
Le fichier d'installation
Premièrement
Votre programme weidu mettez-le en dehors de votre dossier et appelez-le comme vous voulez
Ouvrez un fichier texte sauvegardez-le avec l'extension .tp2 attention le nom de ce fichier doit être le même que celui du programme weidu
Backup
Il faut impérativement créer un dossier Backup, il ne faut rien y mettre mais y faut le faire!
Et oui en gros c'est l'historique des installations et désinstallations du mod si vous voulez que cela se fasse proprement il faut ce dossier
Contenu
Là ça se corse un peu
Tada appréciez votre travail!BACKUP ~lenomdevotredossier\backup~
AUTHOR ~Xena~ //mettez votre petit nom
BEGIN ~The NPC~ //ce que vous voulez
REQUIRE_FILE ~Data/25Dialog.bif~ ~You do not appear to have TOB installed.~ //vous n'êtes pas obligé de mettre ça c'est juste pour vérifier que TOB est installé s'il ne l'est pas l'installation s'arrêterai mais si vous faite un mod pour BG 2 seul ne le mettez pas
COPY ~nomdudossier\nomdusousdossier\lenomdevotreimageL.bmp~ ~Override\lenomdevotreimageL.bmp~ //ça c'est pour le grand portrait
COPY ~nomdudossier\nomdusousdossier\lenomdevotreimageS.bmp~ ~Override\lenomdevotreimageS.bmp~ //votre deuxième image
COPY ~Trriviahn\cre\L#TheNPC.cre~ ~Override\L#TheNPC.cre~
SAY NAME1 ~NPC~ //ce sont les noms de votre perso
SAY NAME2 ~NPC~
SAY BIO ~?~ // là c'est pour la bio du perso
COMPILE ~lenomdudossier\lenomdusousdossier\lenomdufichierbaf.baf~
COMPILE ~lenomdudossier\lenomdusousdossier\lenomdufichierdialogue.d~
EXTEND_bottom~Ar0700.bcs~ ~lenomdudossier\lenomdusousdossier\Ar0700.baf~ //c'est pour ajouter votre script à la zone et créé votre perso
// Vous pouvez aussi mettre EXTEND-top c'est pareil
//Pour ce qui suit c'est pour lier les différents fichiers dialogues entre eux
APPEND~pdialog.2da~
~TheNPC TheNPCP TheNPCJ TheNPCD TheNPC25P TheNPC25J TheNPC25D TheNPC25~
UNLESS~TheNPC~ // UNLESS sauf si TheNPC n'est pas présent
APPEND~interdia.2Da~
~TheNPC TheNPCB TheNPCB25~
UNLESS~TheNPC~
//d'après Isaya y'a un truc qui cloche ici mais je ne sais pas ce que c'est.
:425: