Modifier les descriptions des sorts

Répondre
Partager Rechercher
Voila je vourdais modifier les descriptions des sorts, mais je sais pas comment faire... Doit falloir toucher au dialog.tlk a mon avis, mais j'y comprends rien a ce machin

Donc si quelqu'un pouvait me donner un exemple pour comment trouver la description d'un sort et comment la modifier ce serait gentil

Pis autre question : si on modifie le dialog.tlk, faut le mettre dans le hak ?
Tu dois modifier le dialog.tlk SI tu comptes utiliser les références dans ton fichier 2da (pour le nom, la description, etc).

Mais rien ne t'empêche de modifier simplement ton fichier 2da en changeant les références chiffrées du TLK par une description texte, comme tu peux le faire pour un placeable par exemple.

//Prenons par exemple le premier: Acid_Fog

*Comme tous les sorts, il a 2 références TLK:

Name
750

SpellDesc
6096

*Tu peux très bien les changer en:

Name
"Bombe Atomique"

SpellDesc
"Fait pèter tout le module, sans jet de sauvegarde, mouhaha !! "


Bon je sais, c'est la version lourde, mais ça t'évitera de te prendre la tête avec le TLK ou de le changer, tu te prendras la tête avec le spell.2da, c'est mieux
Euh, je te conseille le tuto de SirePomPom sur l'auto-updater du Dialog.tlk...


...nan, je rigole, c'est un peu trop techinque pour un debut


LE tlk, c'est super simple a utiliser :

C'est une colone de references, et une colone de texte :

Genre :

STRREF - Phrase
1 - Pomme
2 - Homme
3 - Blah
... - ...

Donc, en gros, il suffit de rajouter une entrée avec en plus la description, pour que le programme affiche la reference quand elle est appelée par un 2da (dans les references StrRef des 2da)

Problemes du TLK, sinon ce serait trop bien :

- Ca ne marche qu'en local : Si tu cree des sorts nouveaux, et que tu met une reference dans le dialg.tlk pour donner un nom a ce sort, tu verra bien le sort avec son nom, mais tout le monde verra badStrRef a la place.

- Si tu modifie ton dialg.tlk, ton NwN ne s'updatera plus correctement.

- C'est un gros fichier, qui ne se hakpak pas, et qui ne s'override pas non plus : Donc, une seule modif pour tout les modules (sauf en utilisant l'outil de SirePomPom)


Voila...
Mon programme n'est pas compliqué!
Mes explications oui...

Une fois que l’on a compris le principe, il n’y a que deux opérations en plus de ce que l’on ferait pour distribuer un hackpack et un dialog.tlk modifié.
Modifier la description anglaise du module auquel on veut associer ce contenu.

Changer l’extension du .hak en .dup (à la main)



Zunder je retente le coup, excuse moi si je t'ennuie.

Quels sont les problèmes que le programme tente de résoudre:
1) distribuer tout dialog.tlk alors qu'en fait seules les entrées ajoutées sont nécessaires
2) Un dialog.tlk modifié a une durée de vie très courte, Bioware patch ce fichier à peu près systématiquement, résultat en utilisant un dialog.tlk modifié on écrase les modification que Bio y a apporté depuis.

Comment ça marche?
Vu de loin:
L’idée est simple, il s'agit de permettre d'utiliser un .tlk fait maison, qui ne comporte que les entrées ajoutées, dans un hackpack.

Mais encore...
Prenons un hackpack et un tlk maison, donnons leur le même nom sans extension, voilà, on a maintenant un couple qui nous permettrait en théorie de mettre ce que l'on veut comme description.

Petit problème...
Comment savoir si une Strref (les numéros dans les colonnes name et description) fait référence au dialog.tlk de Bioware ou au tlk maison? Il nous faut utiliser un truc.
Donc pour référencer la première entrée du tlk maison au lieu d'écrire simplement "0" on écrira "!0". 244eme entré: "!243" au lieu de "243". Avec "!" c'est une référence au tlk portant le même nom que le hackpack, sans, c'est une référence à dialog.tlk.

Petit problème n°2:
Oui mais "!" NWN ne sait pas ce que cela veut dire, donc ce sera le programme externe qui l'interprétera. Histoire que personne n'essaie d'utiliser le hakpack spécial tel quel, on va changer son extension, au lieu de .hak, ce sera .dup. Le programme générera un véritable hackpak à partir du .dup.

Et le tlk maison, comment fait-on pour que NWN l'utilise?
Y a pas 36 moyens il faut l'ajouter à dialog.tlk, cela aussi le programme s'en chargera automatiquement. Et il se débrouillera pour faire coïncider les StrRef dans le tlk qu'il crée avec les entrées qu'il ajoute à dialog.tlk.

Reste un problème comment dit-on au programme quels fichiers il doit traiter?
On va copier le système des hackpacks. Pour ça on détourne la description anglaise du module. Au début de cette dernière on écrira:
[ <nom du tlk et du dup sans extension> ]

Par exemple si le dup et le tlk s'appellent:
testdup.tlk et testdup.dup
La description anglaise du module sera:

[ testdup ] bla, bla bla...

Du coup il suffira de placer les fichiers dans les bons répertoires: le module dans NWN\mod et le tlk et dup dans \NWN\Dup (le programme crée ce sous répertoire la première fois qu'il est lancé), de sélectionner le module dans la liste que le programme affiche, appuyer sur "lancer NWN" , "lancer Toolset" et tout se fera automatiquement.

Et pourquoi pas des duppacks multiples?
Comme pour les hakpacks on peu en fait associer plusieurs couples dup/tlk à un même module. La description anglaise devient:

[ testdup : testdup2 : testdup3 : il était une ]
fichiers: "testdup.tlk"/".dup"... "il était une.tlk"/".dup"

La version française: nous avons en fait deux tlks Bioware,
dialog.tlk et dialogF.tlk. Le second est utilisé si le personnage du joueur est féminin.
Par défaut si un seul tlk custom est associé à un dup (I.e. porte le même nom) ce dernier sera utilisé pour mettre à jour à la fois dialog.tlk et dialogF.tlk. Il est néanmoins possible de mettre deux fichiers différents pour avoir des variations homme/femme. Dans ce cas le couple tlk/dup devient un triplet.
par exemple :
testdup.tlk
testdupF.tlk
testdup.dup

Il suffit d'ajouter "F" à la fin du nom quoi.

Voilà cette explication est beaucoup trop détaillée pour un joueur, et ne dit pas tout de la façon dont le programme marche, mais j'espère qu'elle est un peu plus claire que mes précédentes tentatives.

PS: Suite à une discussion avec Garad Moonbeam (DLA) je me suis rendu compte que mon programme pouvait aussi être utiliser pour tenir à jour facilement (après les patchs Bio) un hakpack traditionnel avec lequel on distribuerait un dialog.tlk modifié, c'est pas pour cela que je l'ai fais ceci dit .
suite aux explications de sire pompom
on copie le/les dialog(F).tlk dans le repertoire dup et on les renomme de la meme maniere que le fichier tlk modifié (dup) que l'on aura mis? j'ai bon ?

Oui c vrai que tu expliques pas tres bien sur ce point la, mais ce coup ci j'ai mieux compris. Mais cela n'enleve en rien que ce que tu as fait est impressionnant et tres utile, surtout pour moi qui veut faire des sorts manquants

D'ailleurs je ne comprends pas que bioware n'ai pas pensé a ce que les sorts/classes/dons/competences n'ai pas une table string geré comme pour les creatures et objets customisés.
Si on change une creature et qu'on lui ajoute une description, ben le texte est ajouté sans faire de la gymnastique dup, alors pourquoi n'ont ils pas appliqué la meme gestion pour toutes choses un tant soi peu modifiable ??
<reve> ca serait bien un truc de ce genre pour SoU ou XP 2, non, ca leur demanderait de la gymnastique pour eux mais ils ont deja fait cette gymnastique pour tous objets modifiable du toolset, alors rajouter ca pour le reste ca serait un bon plus et ca justifierais vraiment un investissement pour les add ons (quoique je serais encore plus d'accord que ce soit disponible dans un patch pour toute la communeauté et ce gratuitement)
désolé pour le paté, mais il me faut des eclaircissements la dessus ^^
Pour les sorts manquants, attend quand même l'extension, où pas mal vont être ajoutés.

Néanmoins je comprends l'envie d'ajouter certains autres (notamment des livres d'extension et aussi des anciennes éditions ), voir de corriger les existants qui comportent parfois des erreurs ?? (ou modifications voulues en fonction du gameplay ??)

Dolanor si tu veux de l'aide pour scripter les sorts des livres de classes ou d'autres livres d'extension, fait moi signe, c'est qqch qui me branche
Volontiers eMRaistlin !!

Tu as certainement quelques petits "trucs" qui t'ont servi pour les chaines d'effets ou nous indiquer quelles limites et exclusions Bioware a encore oublié d'indiquer dans la description de ses fonctions

Sans rire, c'est très sympa d'accepter de partager ton expérience avec nous, ça nous fera gagner un temps précieux, j'en suis persuadé

Donc si on coince à propos d'un sort, on débarque ici avec une question
La pour le moment, c'est pour ajouter des composantes matérielles aux sorts, les joueurs risquent d'etre un peu embetés s'il faut une composante mais qu'ils ne savent pas laquelle

Et heu sinon ca s'edite avec quoi ce machin ? Quand j'ouvre au notepad j'ai des trucs bizarres en debut de fichier et ensuite un énormé pavé
Citation :
Provient du message de Zunder
La pour le moment, c'est pour ajouter des composantes matérielles aux sorts, les joueurs risquent d'etre un peu embetés s'il faut une composante mais qu'ils ne savent pas laquelle

Et heu sinon ca s'edite avec quoi ce machin ? Quand j'ouvre au notepad j'ai des trucs bizarres en debut de fichier et ensuite un énormé pavé
ahh donc en fait tu veux juste rajouter quelques lignes dans ta description des sorts officiels pour ajouter les composants ?? dans ce cas tu prends un tlk editor du vault et tu edites la bonne description du sort.
En fait dans le fichier spell.2da, il y'a une ligne par sort indiquant bcp bcp de choses, dont, comme l'a expliqué Delphinea, la colonne Name qui indique l'index chiffré du nom du sort dans le fichier dialog.tlk, et un peu plus loin la colonne spellDesc qui indique l'index dans le fichier dialog.tlk où se trouve la chaine de description du sort.
Avec le tlk editor, il te suffit juste de memoriser ces 2 index puis de rechercher dans le fichier tlk puis de modifier la chaine correspondante (pour toi ce sera plutot la chaine du SpellDesc, car tu ne rajoutes que les composants et tu ne modifies en rien le nom d'un sort)
(lien pour le tlk editor : http://nwvault.ign.com/Files/other/d...58289672.shtml)

Delphinea : Mon but c surtout de rajouter les sorts en les rapprochant le plus de la version originale (et donc de modifier ceux deja exisants pour les rendre + D&D (genre fleche acide de melf avec jet de toucher a distance et dommage de 2d4 + 2d4/3 nivo de lanceur, au lieu de touché automatique et 3d6 + 1d6/3 nivo de lanceur. Ou bien le sort de Tenebres qui dure 10 x moins longtemps et al'inverse le sort de lumiere qui dure 6x trop.)
Je travaillais sur le projet de pétrification (un de mes sorts preferé dans BG II ), mais avec la limite nivo effet pour ce sort, je me suis arreté car bon une statue qui s'etire pour se derouiller ou qui suit la cible de la tete, c pas forcément tip top, et si je la paralyse totalement, suffit d'un seul coup de doigt pour le tuer en coup de grâce (coup de grâce ne respectant pas les regles D&D, du moins je ne vois pas le jet de sauvegarde de vigueur pour resister aux dommage du coup fatal...).
En fait, une fois la personne statufié, j'aurais voulu avoir un dialogue demandant ce qu'on comptait faire de la statue : la prendre ou bien la renverser, sinon on pouvcait toujours essayer de la taper ou de faire une jet de force pour la briser en un coup (salut Hulk ^^) mais comme la personne s'etant statufié, je lui donnait la caracteristique d'une statue, cad environ 8 de solidité et 60 pr. Enfin bon, ingérable sans le freeze de Bioware pour le moment, ou alors je ne connais pas la bonne technique.

eMRaistlin : ben je dis que ca peut etre cool, ca éviterait de multiscripter un meme sort. Moi je suis preneur si les sorts sont respecté comme dans D&D
Par contre je sais que Solaufein a aussi fait des modifications des sorts existants (fleche acide de melf, armure de mage) pour que ca corresponde mieux a D&D, donc il faudrait se concerter pour prendre ce qui est deja fait et scripter le reste ^^

Vivement que j'ai du temps libre
Oui Dolanor on avait deja commencer avec Sol sur le forum VP à établir la liste des sorts à modifier, et j'en avais deja fait quelques uns.

Mais hélas j'ai du laisser tomber pour me concentrer sur le module.

Heureusement, actuellement je suis plus disponible, donc on peut continuer tout ça
A propos de coup de grâce Dolanor, tu as essayé de mettre une immunité à la mort subite à ton pétrifié ? Peut-être que ça réglerait ton problème.
(Pas sûr du tout)

[Edit] Selon l'un de mes précédents scripts, IMMUNITY_TYPE_DEATH n'évite pas le coup de grâce, seul SetPlotFlag() semble avoir ce pouvoir, l'ennui c'est que cette fonction est peut-être un peu trop efficace...
Ah ben ouais c'est vachement plus clair avec le tlk editor

Merci les gens pour tout ca

Pompom je te redemanderai ptet qq explications parce que ton truc a l'air super bien mais j'ai pas tout compris
Pour ce qui est des sorts, personelement, j'en ai crée qui n'ont rien a voir avec DD... Le but n'etant vraisemblablement pas que je vous mette tel quel les sorts de NwNRo (surtout que vous n'utilisez pas la caracteristique "Attaque Magique"...)

Mais je peux peut etre vous eviter des ecueils que j'ai dut contourner (surtout avec les GetFirstObjectInArea qui ont besoin d'un Delay pour que tout fonctionne correctement) ou bien comment créer des parchemins de sorts avec les icones idoines (car si on doit avoir unBadStrRef, on peut quand meme avoir des sorts avec des icones bien specifiques ^^).

Pour les composantes, zunder, perso, j'utilise un SendMessageToObject qui indique que le sort ne peut pas fonctionner sans tel ou tel objet (et le parchemin en fait mention aussi). Du coup, le mage qui le lance le sait des le premier lancer...
(ou il le sait par le parchemin s'il l'a appris de la.)

Pour les Sorciers, c'est plus embetants...
Moi je veux bien que tu m'explique comment barrer pour éviter les écueils

Surtout pour cette histoire de GetFirstObjectInArea, là tu me fais peur (parce que perso m'en sert pour un truc qui marche pas pour l'instant alors si ca pouvait m'éviter de passer mon week end à criser )

Et tant que j'y suis, puisque tu parle de parchemins, comment qu'est ce que je pourrais faire pour pas qu'ils ait un moche carré blanc (très moche) si je leur met pas d'effet autre que "lancer sort : pouvoir unique" ?
Citation :
suite aux explications de sire pompom
on copie le/les dialog(F).tlk dans le repertoire dup et on les renomme de la meme maniere que le fichier tlk modifié (dup) que l'on aura mis? j'ai bon ?
Non pas tout à fait...

Bon j'ai écris ce truc hier, très tard, de retour d'un soirée arrosée. Je me suis retenu de le poster pour pouvoir le lire avec les idées claires (je ne suis pas sûr que ça décrive très bien mon état du jour...). Voilà ce que celà donne :

dialog.tlk et dialogF.tlk faut pas y toucher, mon programme s'en charge ( il les sauvegarde dans le répertoire \Dup effectivement, c'est peut-être mon readme incompréhensible et trop détaillé qui a semé la confusion là)


imaginons que nous voulions créer un hack tout simple, un seul sort, le nom , "Kill Everyone In the Module", la description, "Kills everyone in the module".

Les étapes:

*****ETAPE 1 créer le .tlk contenant les entrées ajoutées:
Je conseille l'éditeur de The Other pour ça, un peu lent, il y a un petit bug technique qui ne se voit pas, mais il semble sans conséquence, dans l'ensemble c'est le meilleur éditeur parmi ceux qui existent je pense).
Les entrées:
0: Kill Everyone In the Module
1: Kills everyone in the module

On sauvegarde sous le nom spelldup.tlk

*****ETAPE 2 créer le .dup
le fichier .dup , n'est ni plus ni moins qu'un hackpack contenant tout les 2da ou autre ayant des références au tlk maison

On rajoute le sort dans spells.2da
C'est pour les colonnes Name et description que l'on va faire usage des références relatives:
"!" dit au programme qu'il s'agit d'une entrée de spellsdup.tlk et non de dialog.tlk

Name: "!0"

Description: "!1"

Mettons le nouveau spells.2da dans un hackpak que nous appellerons spelldup.hak (grâce à nwhack.exe)

Renommons spelldup.hak en spelldup.dup, parce que .

*****ETAPE 3 Mettre les deux fichiers dans \NNW\Dup (le programme crée ce répertoire la première fois qu'il est lancé)

*****ETAPE 4 Changer la description anglaise du module dans lequel on veut utiliser ce sort.
On rajoute au début de cette dernière (sans espace avant le "[") "[ spelldup ]
Nous obtenons cette description par exemple:
[ spelldup ] Un module de test pour dup.exe .

Fermons le toolset.
Note les descriptions autres que la description anglaise seront ignorées par le programme.


*****ETAPE 5 Associer le hakpack que le programme génère à partir du .dup au module

Lancer le programme. Sélectionner le module dans la liste et appuyer sur "Lancer le Toolset".
Le module s'ouvre dans le Toolset.

Allons dans le panneau custom content (là ou l'on choisi les hakpacks), un nouveau .hak est disponible: spelldup.hak, sélectionnons le et ajoutons le au module.

Le nouveau sort apparaît dans le module, avec le bon nom et la bonne description .

c'est fini.

***** Coté joueur

Ensuite, il suffira à un joueur de mettre les fichiers spelldup.dup et spelldup.tlk dans \Dup (comme l'on ferait avec un hakpack) , le fichier .mod dans \modules, puis de passer par le programme pour lancer le module (en choisissant "Lancer NWN") et tout marchera dans le jeu, même après un patch de Bioware.

Le builder lui même utilisera ce programme pour modifier et tester le module: lancer le programme, choisir le module dans la liste, et appuyer sur "Lancer le toolset"

***** Modifier le "duppack"
on commence par ajouter de nouvelles entrées à spelldup.tlk si nécessaire.
On renomme spelldup.dup en spelldup.dup.hak, pour pouvoir l'ouvrir dans nwhak.exe.
On modifie les 2da ou autre de façon adéquate, éventuellement on ajoute de nouveaux fichiers.

On enlève le ".hak" à la fin, nous revoila avec un fichier dup, fini.
Plus besoin de toucher au module, comme pour un hackpack, l'association des fichiers est faite une fois pour toute.

Pour donner une idée, j'ai fais la conversion du pcpack de DLA , ça m'a pris à peine une demi heure, le plus long ayant été le copier coller des entrées ajoutées à dialog.tlk dans un nouveau fichier, et la création du module de test (essentiel pour que mon programme tourne).
Convertir racialtype.2da m'a pros environ une minute (ce n'est pas un exagération ).

Voilà. Si vous voulez je pourrais faire cette démo, ceci dit il y aurait plus à gagner à regarder la conversion du pcpackV1 que j'ai mis en téléchargement (merci à Halfelf et Papermonk au fait).

Je déconseille de modifier des entrées de dialog.tlk, tu devras le refaire après chaque patch Bioware après. Et surtout un joueur utilisant un tlk ainsi modifié et l'utilisant dans la campagne officielle verra les modifications. Il est plus propre à mon avis de rajouter les entrées modifiées à la fin de dialog.tlk, et de rediriger les descriptions des sorts sur ces entrées via un hackpack (ou un dup ) .
Si je ne m'abuse l'icône d'un sort/parchemin peut être configurée dans le 2da. (Mais pas sur, je ne peux pas vérifier d'où je suis).
tout a fait, delphinea : tu fais un icone en 24*24*24 .tga, et tu le met dans le spell.2da, afin de ne pas avoir un carre blanc.

Quand au getFirstObjectInShape, le truc, c'est qu'il faut mettre des delayCommand sur toutes les actions que tu fais dans la "forme" que tu as choisi, afin de ne pas modifier l'ordonnancement des objets, sinon, tu risque soit le plantage, soit la boucle infinie... Donc, des que tu Cree, detruit ou tue, ou que tu deplace un object (VFX compris, puisque les effect sont des "objects", a priori), tu met un delayCommand dedans.

Pour l'explication plus scriptée, je te conseille de t'inspirer du nw_s0_fireball qui contient un Delay calculé par la distance, ce qui permet d'eviter l'ecueil du GetFirstInShape, tout en donnant un resolution plus en temps réel...
Citation :
Provient du message de Zunder
Petite question stupide a propos des dup : on fait comment pour les modules online ou le joueur est pas sensé avoir le mod sur son disque ?
Heu... ma question va peut-être paraitre saugrenue mais... Qu'est ce que tu entends par "les dup" ?
Citation :
Provient du message de Solaufein
Heu... ma question va peut-être paraitre saugrenue mais... Qu'est ce que tu entends par "les dup" ?
C'est le format des fichiers generés par la machine infernale du Professeur PomPom pour permettre d'avoir des dialog.tlk associés a des modules.

Pour plus de details sur ce truc super interessant, lire le pavé ci dessus.(et vi... on a helas rien sans rien )
Ok complettement stupide ma réponse donc je l'efface, je suis un peu dans le pâté. Il y a une solution relativement simple, mais pas du tout satisfaisante, franchement je ne vois pas comment faire mieux (en fait je vois *plus ou moins* ,mais je ne sais pas trop si j'en suis capable pour l'instant).

Je te donne la solution tout de suite: faire un module bidon avec juste une zone microset, qui reprend la même description, et probablement le même nom, même si cela n'a aucune importance, que l'original et le mettre avec le dup et le tlk. Le module fera 29k0 environ donc ce n'est pas un drame. Du coup le joueur aura le module dans sa liste, et pourra le lancer pour jouer à l'original. Le launcher du programme ne passe aucun paramettre à nwmain.exe donc ceci ne pose aucun problème, une fois connecté au serveur le joueur jouera au bon module.


Pour l'instant je n'ai pas vraiment de solution propre, pour être tout à fait honnête, mon programme était plutôt dirigé vers les modules SP ou les MP entre amis étant donné que Revinor a fait un truc qui marche très bien pour les modules persistants, sur un principe assez différent. Tu me dira que même pour les MPs entre amis il n'y a aucune raison que tout le monde ai le module.
Je ne vais pas m'embarquer dans une solution bidouille du type distribuer un fichier supplémentaire plus simple qu'un .mod, par exemple fichier texte, car à terme ce serait contre productif.
Idéalement il faudrait faire un véritable launcher: on se connecte au serveur et celui ci renvoie la description du module. Je pense que c'est possible grace au protocole Gamespy, car la description du module s'affiche dans les "chambres" mais je ne sais pas comment faire (les protocoles internet c'est pas trop mon truc) . Il faut aussi que la description renvoyée soit systématiquement la description anglaise, là aussi je pense que c'est possible, m'enfin on sait jamais. Dès que j'aurais un peu plus de temps j'essaierai d'implémenter cela.
Ma question c'est : si le joueur n'a pas le module sur son disque, mais s'il possède pouet.tlk et pouet.dup, est-il quand meme possible que le jeu utilise le tlk et le dup ? A ce que j'ai compris de tes explications ca m'a pas l'air trop possible, mais je reconnais n'avoir pas tout compris quant au fonctionnement du machin
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés