Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Interaction GetStringByStrRef et fichier dialog.tlk

Par Azrael07 le 20/2/2003 à 9:18:10 (#3274021)

Quelqu'un pourrait il m'expliquer (enfin je dirais nous expliquer, je ne pense pas être le seul interessé :D, comment marche le fichier dialog.tlk, et comment peut on importer une chaine avec GetStringByStrRef (ma question consiste surtout à savoir a quoi correspond l'argument nStrRef)

Merci de votre aide :)

Par Ormus le 20/2/2003 à 10:33:10 (#3274484)

Ben le fichier Dialog.tlk fonctionne par entrées (tu le sais peut-être déjà), et chaque entrée contient une chaîne de caractères et a un numéro d'ID (La StrRef très probablement).

Tu peux explorer le fichier Dialog.tlk avec Zoligato NwN Viewer (il y a sûrement d'autres outils comme celui de Bioware ou d'autres créés pour l'Infinity Engine mais le Zoligato est bien) :)

D'ailleurs un certain Kroll (miriandel ?) avait dit qu'il était possible de stocker des informations dans le dialog.tlk grâce à cette fonction mais je vois pas trop comment vu que c'est un Get() :doute:

Voilà :D

Par Jedaï le 20/2/2003 à 11:07:30 (#3274744)

Je crois que ce que Miri voulait dire par là c'était que le dialog.tlk était une entrée pour NWN, de la même façon que le log était une sortie, et que si NWN lâchait le dialog.tlk de temps en temps et consultait bien le fichier d'origine lorsqu'on faisait un GetStringByStrRef(), on pouvait se servir du couple log/dialog.tlk pour établir un dialogue entre NWN et un logiciel extérieur.:maboule:

Il était en tout cas certain (et je le rejoins sur ce point), qu'une manipulation avisée du dialog.tlk aurait permis une automatisation du PWUM, mais ceci se passait en des temps très ancien, avant l'apparition du PUMA ou du NWNX, enfin ces petites merveilles qui nous rendent la permanence plus facile !:D

Par eMRaistlin le 20/2/2003 à 11:09:49 (#3274759)

C'est faisable, je crois, vu que c'est exploite (me demandez pas comment...:monstre: )

Toutefois, l'exploitation du dialog.tlk me gene dans le sens ou elle empeche la mise a jour facile de NwN, et empeche l'emploi plug n' play d'un module ou d'un hak...

Par Jedaï le 20/2/2003 à 11:22:18 (#3274840)

Oui, j'attends impatiemment le jour où l'on pourra mettre le dialog.tlk dans un hakpack, vu que c'est grâce à lui que sont gérés les tokens standard. Je pourrai alors me pencher de plus près sur la personnalisation poussée du système de tokens dans les dialogues, peut-être via un exécutable indépendant.:)
Enfin, on verra...;)

Par eMRaistlin le 20/2/2003 à 12:14:47 (#3275136)

et le stringtoken.2da, tu avait jete un oeil ?

Par Jedaï le 20/2/2003 à 17:10:06 (#3277627)

Oui, mais il me semblait justement que c'était là que j'avais vu que ça utilisait le dialog.tlk . A moins que je ne confonde...:monstre:

Par eMRaistlin le 20/2/2003 à 17:25:08 (#3277770)


2DA V2.0

Token ActionCode Default StrRef1 StrRef2 StrRef3 StrRef4 Category
1 Alignment 11 5180 265 266 264 -1 0
2 alignment 12 5180 4959 4960 4955 -1 0
3 Boy/Girl 1 -1 4860 4861 -1 -1 0
4 boy/girl 1 -1 4862 4863 -1 -1 0
5 Brother/Sister 1 -1 4864 4865 -1 -1 0
6 brother/sister 1 -1 4866 4867 -1 -1 0
7 Class 8 5172 -1 -1 -1 -1 0
8 class 9 5173 -1 -1 -1 -1 0
9 Day/Night 18 -1 4962 4961 4961 4961 1
10 day/night 18 -1 4964 4963 4963 4963 1
11 Deity 0 5180 -1 -1 -1 -1 0
12 FirstName 3 5180 -1 -1 -1 -1 0
13 FullName 2 5180 -1 -1 -1 -1 0
14 GameMonth 17 -1 -1 -1 -1 -1 1
15 GameTime 16 -1 -1 -1 -1 -1 1
16 GameYear 15 -1 -1 -1 -1 -1 1
17 Good/Evil 14 5180 265 264 266 -1 0
18 good/evil 14 5180 4959 4955 4960 -1 0
19 He/She 1 -1 4869 4870 -1 -1 0
20 he/she 1 -1 4871 4872 -1 -1 0
21 Him/Her 1 -1 4873 4874 -1 -1 0
22 him/her 1 -1 4875 4876 -1 -1 0
23 His/Her 1 -1 4877 4874 -1 -1 0
24 his/her 1 -1 4878 4876 -1 -1 0
25 His/Hers 1 -1 4877 4879 -1 -1 0
26 his/hers 1 -1 4878 4880 -1 -1 0
27 Lad/Lass 1 -1 4881 4882 -1 -1 0
28 lad/lass 1 -1 4883 4884 -1 -1 0
29 LastName 4 5180 -1 -1 -1 -1 0
30 Lawful/Chaotic 13 5180 268 264 267 -1 0
31 lawful/chaotic 13 5180 4954 4955 4956 -1 0
32 Law/Chaos 13 5180 4943 264 4944 -1 0
33 law/chaos 13 5180 4957 4955 4958 -1 0
34 Level 10 5177 -1 -1 -1 -1 1
35 Lord/Lady 1 -1 4885 4886 -1 -1 0
36 lord/lady 1 -1 4887 4888 -1 -1 0
37 Male/Female 1 -1 156 157 -1 -1 0
38 male/female 1 -1 4924 4925 -1 -1 0
39 Man/Woman 1 -1 4926 4927 -1 -1 0
40 man/woman 1 -1 4928 4929 -1 -1 0
41 Master/Mistress 1 -1 4930 4931 -1 -1 0
42 master/mistress 1 -1 4932 4933 -1 -1 0
43 Mister/Missus 1 -1 4934 4935 -1 -1 0
44 mister/missus 1 -1 4936 4937 -1 -1 0
45 PlayerName 23 5180 -1 -1 -1 -1 1
46 QuarterDay 18 -1 4962 4966 4967 4968 1
47 quarterday 18 -1 4964 4970 4971 4972 1
48 Race 5 5175 -1 -1 -1 -1 1
49 race 6 5176 -1 -1 -1 -1 1
50 Sir/Madam 1 -1 4939 4940 -1 -1 0
51 sir/madam 1 -1 4941 4942 -1 -1 0
52 StartAction 19 -1 -1 -1 -1 -1 1
53 StartCheck 20 -1 -1 -1 -1 -1 1
54 StartHighlight 21 -1 -1 -1 -1 -1 1
55 /Start 22 -1 -1 -1 -1 -1 1
56 Subrace 7 5175 -1 -1 -1 -1 1


Je suis pas sur qu'il y ai besoin de dialog.tlk, mais je sais pas ce que tu veux :p

Par Azrael07 le 20/2/2003 à 19:21:18 (#3278741)

Toutefois, l'exploitation du dialog.tlk me gene dans le sens ou elle empeche la mise a jour facile de NwN, et empeche l'emploi plug n' play d'un module ou d'un hak...


Euh.... dois je en déduire que le dialog.tlk marche au niveau client O_o..... Un peu étrange ???

bon ben Ormus merci, tout doit être basé sur ce numero d'id, je vais orienter mes recherches la dessus

Je crois que ce que Miri voulait dire par là c'était que le dialog.tlk était une entrée pour NWN, de la même façon que le log était une sortie, et que si NWN lâchait le dialog.tlk de temps en temps et consultait bien le fichier d'origine lorsqu'on faisait un GetStringByStrRef(), on pouvait se servir du couple log/dialog.tlk pour établir un dialogue entre NWN et un logiciel extérieur.


Gnarf Gnarf, a ton avis où je voulais en venir avec le dialog.tlk ? ;) :D :bouffon: :ange: :rasta:

Par Jedaï le 20/2/2003 à 20:06:09 (#3279053)

Oui, le dialog.tlk doit fonctionner au niveau client, presque sûr !:o

@ eMRaistlin > regarde, il y a des trucs qui s'appellent StrRef, je vois pas ce dont il pourrait s'agir à part du dialog.tlk. D'autant plus que lorsqu'on change de dialog.tlk, on change de tokens, donc...:cool:
L'idée c'est d'ajouter des tokens standard à mettre dans un dialogue, et non d'utiliser des customs tokens tout moche ! Même si avec ma bibliothèque, les customs tokens gagnent une vraie flexibilité, ce n'est pas l'idéal point de vue compréhension : une phrase du type "Bonjour mon ami " est moins compréhensible qu'une phrase "Bonjour mon ami ", non ?:(

Par Azrael07 le 20/2/2003 à 21:01:54 (#3279428)

ben j'ai vraiment du mal a comprendre comment ca marche si ca marche au niveau client O_o

les scripts sont tous effectués au niveau serveur. Donc la commande GetStringByStrRef va chercher dans le dialog.tlk du client ? mais quel client ?
Je n'ai jamais essayé personnelement, mais je ne voit pas trop comment ca peux fonctionner au niveau client un truc comme ca...

Par Jedaï le 20/2/2003 à 21:11:12 (#3279493)

Hum non, je me suis mal fait comprendre : les scripts utilisent toujours le dialog.tlk du serveur, mais le dialog.tlk permet en fait une localisation plus facile, et beaucoup de texte passe en fait par le dialog.tlk : au niveau client, cela évite de télécharger tous les textes qui se trouvent dans le module, puisqu'une bonne part est déjà répertorié dans le dialog et localisé en plus !:)

Mais les scripts utilisent évidemment le dialog.tlk du serveur, il faut faire la différence entre les emplois automatiques du dialog.tlk (par exemple il serait curieux que les textes des menus côté client soit téléchargé à partir du dialog du serveur ;) ) et les emplois dans les scripts.:cool:

Par Azrael07 le 20/2/2003 à 21:22:23 (#3279576)

ahhhhh ok la je comprend mieux

pour un custom dialog.tlk, je sais pas a quel point t'y tient, mais y'a toujours moyen de lancer ton module avec un .exe a part qui modifie le fichier juste avant de lancer le module et qui le restaure en quittant. C'est comme ca que je comptais faire pour 4eage (enfin en un peu plus complexe ;) )

Par eMRaistlin le 20/2/2003 à 22:32:00 (#3280007)

oui, il y a un StrRef, comme dans tout les 2da... mais ne pas le renseigner ne veut pas dire ne pas l'utiliser...

C'est juste une correspondance vers une liste de description/noms afin que ca s'affiche bien dans les editeurs/ingame.


@Azrael : oui, si tu donne ton dialog.tlk a un joueur, il verra par example le nom des sorts que tu as cree, au lieu de voir un BadStrRef. (enfin, si tu as modifie ton tlk avant, bien sur ^^)

Par Jedaï le 20/2/2003 à 23:33:24 (#3280475)

oui, il y a un StrRef, comme dans tout les 2da... mais ne pas le renseigner ne veut pas dire ne pas l'utiliser...


Hum, je ne comprend pas bien ce que tu veux dire, c'est quoi cette triple négation...:p

De toute façon j'ai vérifié, les strref renvoient bien à des lignes valides dans le dialog.tlk, et représentent bien les valeurs possibles pour le token.
Seul blanc actuellement : que représente l'ActionCode ?:confus:
Je vois bien qu'il doit s'agir de fonctions, renvoyant soit un nombre, soit une string (lorsque les strref 1 à 4 valent -1). Mais je ne voit pas bien où ces fonctions se trouvent, je crains qu'elles ne soient pas du tout accessible et nous serions alors limité aux actioncode déjà présents. Cela nous permettrait déjà d'avoir une infinité de tokens basés sur le sexe, puisque l'actioncode 1 renvoie visiblement la strref 1 si le PJ est masculin et la strref2 si le PJ est féminin.
Ceci dans la perspective d'un dialog.tlk autorisé dans les hakpack (@ Azrael > non je ne peux pas utiliser la solution que tu me propose puisque l'intérêt est justement de pouvoir diffuser des modules comprenant ce dialog.tlk modifié, pour ce faire, il vaut mieux que la procédure soit la plus simple possible, même si on peut envisager ta solution dans une communauté bien établie).

JOL Archives 1.0.1
@ JOL / JeuxOnLine