Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Un petit problème sur les dialogues
Un petit problème sur les dialogues
Par Prophetia Astrae le 8/12/2002 Ã 13:22:01 (#2736589)
J'ai un problème sur les dialogue.
J'ai un pnj qui est la patronne d'une taverne et elle énumère les différent produit qu'elle peut vendre. (Je voulais m'affranchir de mettre un magasin pour ce pnj)
Donc l'énumération de ses produits se fait à l'aide du dialogue, et pour mettre en forme cette liste, j'ai mis des retours à la ligne dans ce dit dialogue. Mais voila le problème, c'est qu'à chaque endroit où j'ai mis un retour à la ligne, dans le jeu un petit carré apparrait à cet endroit, la mis en forme étant gardé ce n'est pas très gênant, mais d'un point de vu esthétique, c'est très bof.
Donc si vous avez une idée....
Prophetia
Par coolstar le 8/12/2002 Ã 13:54:02 (#2736825)
;)
Par daemogorgon le 8/12/2002 Ã 14:13:03 (#2736934)
Tu ecris ta ligne (1 seule), et tu mets rien pour la reponse PJ, tu continus pour la ligne suivante, etc..., et tu n'as plus le petit carre.
Bon, d'accord, c'est plus long a lire (avec les "suite..."), mais ca fait plus fini !:p
Par eMRaistlin le 8/12/2002 Ã 14:25:22 (#2737003)
PNJ : Que voulez acheter ?
PJ : Multi reponse en liste :
-1 : Lotion capillorefractaire
-2 : Potion d'intelligence pour les nains
-3 : Potion de guerison de la credulité pour ceux qui achetent le 2...
Etc, etc...
Comme ca, y'a une ligne par choix.
Par coolstar le 8/12/2002 Ã 14:39:44 (#2737117)
Provient du message de eMRaistlin
Good eMR! Voilà bien ce qui me semble le plus approprié pour compenser! ;)
l'autre solution : tu met un truc du genre
PNJ : Que voulez acheter ?
PJ : Multi reponse en liste :
-1 : Lotion capillorefractaire
-2 : Potion d'intelligence pour les nains
-3 : Potion de guerison de la credulité pour ceux qui achetent le 2...
Etc, etc...
Comme ca, y'a une ligne par choix.
Par Taern le 8/12/2002 Ã 14:43:51 (#2737151)
Il suffit de déclarer en CustomToken la chaîne de caractère "\n" (attention au sens du slash), et de le rappeler dans les dialogues à l'endroit ou on veut effectuer un retour à la ligne.
Ce qui dans la fenêtre de l'éditeur de dialogue, nous donnerait :
Nous vous proposons ceci :BièreVinJus d'orangeLait de fraise
Et dans le jeu :
Nous vous proposons ceci :
Bière
Vin
Jus d'orange
Lait de fraise
Il ne faudra pas oublier de déclarer le token (dans le OnModuleLoad par exemple, vu que c'est un token commun à tous les pnjs) en faisant :
DeclareCustomToken(1000, "\n");
Voilou ;)
Par Prophetia Astrae le 8/12/2002 Ã 14:51:05 (#2737202)
J'avais justement essayé de mettre un \n mais sans succès, voila ma réponse :)
En fait le petit carré c'est juste que le je jeu ne reconnais pas le \r enfin j'imagine ;)
En tout cas merci pour l'astuce
Prophetia
p.s: Juste une petite correction en passant, ce n'est pas DeclareCustomToken, mais SetCustomToken la fonction à utiliser :p
En tout cas ça marche tres bien ;)
Par coolstar le 8/12/2002 Ã 21:36:31 (#2739995)
Par Jedaï le 9/12/2002 à 0:22:05 (#2740994)
Pourquoi, mais pourquoi donc "\n" ne marche-t-il pas alors que si on crée un custom token qui est remplacé par "\n", ça marche ?:confus: :rasta: :hardos:
Par coolstar le 9/12/2002 Ã 0:31:58 (#2741037)
:D
Par Taern le 9/12/2002 Ã 17:27:18 (#2745261)
A noter que les balises de tokens (style ou ) ne font aucun effet quand elles sont entrées directement dans une chaîne de caractère. Ou alors je m'y suis mal pris :rolleyes:
Par eMRaistlin le 9/12/2002 Ã 17:32:30 (#2745306)
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
J'en deduis que c'est pour ca que ca marche pas de base ^^
Par coolstar le 9/12/2002 Ã 17:47:24 (#2745452)
Par Taern le 9/12/2002 Ã 19:26:54 (#2746344)
D'où la nécessité de passer par un CustomToken qui contient cette petite chaîne de caractère pourtant si utile :)
[EDIT] Oups merci Tyn' ;) Ã chaque fois je me plante dans le slash :o
Par Tynril le 9/12/2002 Ã 20:11:37 (#2746706)
\n est le caractère de retour de chariot en C (et autres langages). Seulement, il faut qu'il soit compilé pour être fonctionnel. Dans un script, il est compilé (donc transformé en retour de chariot réel), mais pas dans un dialogue.
Enjoy :p
Par coolstar le 9/12/2002 Ã 20:26:25 (#2746817)
;)
Par Jedaï le 9/12/2002 à 20:27:16 (#2746823)
Je suppose que quand on essaie de passer à la ligne dans l'éditeur de script, on insère les deux caractères. Dans l'éditeur de dialogue, qui fonctionne sous Windows directement (je ne sais pas si je me fais bien comprendre là :p ) cela ne pose pas problème, mais sous NWN qui doit fonctionner sous DOS (enfin c'est à peu près ça, après c'est un peu compliqué), le caractère "saut de ligne" n'est pas reconnu et à la place apparaît le traditionnel "petit carré rectangle" !
Je propose donc une alternative à l'usage d'un token custom (c'est lourd et inélégant à chaque saut de ligne !), ça serait d'insérer directement le caractère retour chariot : quelqu'un connait-il son code ASCII et accessoirement celui du saut de ligne qu'on puisse vérifier si ce n'est pas le contraire.:confus:
Par Jedaï le 9/12/2002 à 21:48:37 (#2747430)
j'ai un nouveau lecteur de CD, mais il semblerait que j'ai jeté l'ancien avec le disque de NWN à l'intérieur :mdr:, donc je ne peux pas faire les tests...:hardos:
PS: pour ceux qui ne le saurait pas : pour entrer un caractère en code ASCII, il suffit de maintenir ALT appuyé pendant qu'on tape le chiffre puis de relâcher. :)
Par Azrael07 le 9/12/2002 Ã 22:07:59 (#2747568)
j'ai un nouveau lecteur de CD, mais il semblerait que j'ai jeté l'ancien avec le disque de NWN à l'intérieur , donc je ne peux pas faire les tests...
euh pardon t'es serieux la ?????????????????
non mais je rèèèèèèèèèèèève
comme en théorie toute personne fréquentant ce forum est une personne démunit de toute pensée maléfique, il n'y a pas de copie de nwn qui circulent, j'en déduit donc que tu as balancé UN CD ORIGINAL :eek: :eek: :eek: :eek: :eek:
:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeek:
mdr
bon une fois les délire de ce genre la terminé, ben je vais tester ca je vous repond dans 5min ^_^
EDIT : heuuuuuuuu.......
alt + 1 + 3 ca donne un ?
t'es sur de ton coup jedi ?
Par Jedaï le 9/12/2002 à 22:11:28 (#2747596)
Par coolstar le 9/12/2002 Ã 22:12:41 (#2747606)
Heeuuu... A part ça... perso j'ai essayé, mais avec "ALT+010" et "ALT+013" (sinon ça marche pas du tout!)... et ben ça marche pas (j'ai pas dit PAS DU TOUT!)... ça fait bien le "Retour", mais toujours avec le prob du "petit carré"... :D
...
Par Azrael07 le 9/12/2002 Ã 22:22:59 (#2747668)
pfffffffffff ca c vraimnet le genre de bug chiant
bon ben on va etre obligé de passer par les tokens alors
:(
Par Jedaï le 9/12/2002 à 22:25:01 (#2747685)
Azrael07>Ca donne un "?" ben ça c'est pas banal... Pour la manip normalement c'est : tu presse alt, tu tape "13" sur le pavé numérique en maintenant alt, puis tu relache alt, et ça marque le caractère, ou ça va à la ligne dans notre cas.
Coolstar>Je suppose que tu as essayé l'un puis l'autre à deux sauts de ligne différents :confus: , sinon y a aucune chance que ça marche.
Par coolstar le 9/12/2002 Ã 22:27:23 (#2747700)
Et vi, ça donne "?" à chaque sans le "0"... :D
:D
Par Jedaï le 9/12/2002 à 22:30:54 (#2747720)
Par coolstar le 9/12/2002 Ã 22:32:42 (#2747730)
:mdr:
Par Azrael07 le 10/12/2002 Ã 19:13:06 (#2754665)
jedi tu sais, g une image deja, envoie moi un private si tu veux que je te le send y'a pas de probs....
ca me fait trop mal au coeur de te voir sans nwn :(
Par eMRaistlin le 10/12/2002 Ã 21:45:49 (#2755918)
Par Tynril le 10/12/2002 Ã 22:28:06 (#2756241)
Provient du message de Jedaï
Ahhh! Mon Dieu! Horreur ! Vilénie ! Fiélon ! Suppot de Satan !
Allez, je vais faire une supposition osée : NWN ne reconnaît pas le caractère "saut de ligne", en effet, sur ordinateur, il y a deux caractères qui sont utilisé pour terminer une ligne et passer à la suivante : "saut de ligne" et/ou (ça dépend des environnements et des langages) "retour chariot". :cool:
Je suppose que quand on essaie de passer à la ligne dans l'éditeur de script, on insère les deux caractères. Dans l'éditeur de dialogue, qui fonctionne sous Windows directement (je ne sais pas si je me fais bien comprendre là :p ) cela ne pose pas problème, mais sous NWN qui doit fonctionner sous DOS (enfin c'est à peu près ça, après c'est un peu compliqué), le caractère "saut de ligne" n'est pas reconnu et à la place apparaît le traditionnel "petit carré rectangle" !
Je ne puis laisser une telle horreur circuler entre les mains des jeunes programmeurs papillonnant de post en post sur ce forum, butinant les informations sans se méfier un seul instant du terrible POISON qu'ils sont en train de consommer ! Aahhhh, Jedaï, je t'ai vu, tu empoisonne la jeunesse de perversités qui vont leur rester coller aux basques jusqu'en école sup' ! Honte sur toi !
Non, je déconne, hein. Tout le monde peut se tromper.
Petite théorie si je puis me permettre.
L'éditeur de scripts NWN est largement basé sur le C, qui est ce que l'on appelle un langage de programmation à compiler (ce qui n'est pas le cas, par exemple, du HTML ou du Javascript, qui sont des langages interprétés). Comme vous avez pu le constater, chaque script NSS dans votre module est suivit comme son ombre d'un fichier NCS, du même nom (sauf les scripts à inclure, hein). Ce fichier NCS est créé lorsque vous compilez le script NSS, en sauvegardant (ou en cliquant sur le bouton prévu à cet effet). NWN, lui, n'utilise que ce dernier. Il n'en a en effet que faire des fichiers NSS, lourds et incompréhensible pour lui. Effectivement, NWN bouffe du binaire. Si les fichiers NSS sont sauvegardés, c'est parce qu'il est impossible de faire une "compilation inverse" pour revenir au script originel.
Maintenant, traitons un peu du compilateur. Imaginez le comme un mixeur, un concasseur de scripts, qui transforme votre script illisible pour l'ordinateur en un joli petit tas de zéro et de uns. Seulement, pour pouvoir traduire votre script, le compilateur se fie à un dictionnaire que l'on appelle couramment "langage de programmation". Un langage de programmation se compose de fonctions, de trucs et de machins qui permettent de faire tout ce que l'on veut faire faire à l'ordinateur. C'est pour ça que, parfois, lorsque vous écrivez "PutainDeFonction();" dans votre script, le compilateur crie au secours. Le pauvre, malgré ses recherches dans son dictionnaire, il ne connait pas "PutainDeFonction();", et est troublé par cette chose. Serait-ce une erreur ? Votre erreur ? Celle de son Grand-Maître-Veneré ? Dans son honnêteté, il renvoi son petit panneau, "Unidefined function PutainDeFonction() at ligne 48", ne manquant pas de déchainer vos foudres rageuses contre sa pauvre petite personne innocente.
Bref, le compilateur mange du script et défèque du binaire à longueur de journée. Il comprends certain mots-clefs, comme "void", ou "int", voir même "+" et "-". "\n" est un de ces mots clefs. Il sait qu'il doit traduire "\n" par un retour de chariot. "\n" devient donc une suite de 0 et de 1 facilement digerable par l'ordinateur.
En revanche, l'éditeur de conversation, lui, ne possède pas de dictionnaire de langage de programmation, seulement un dictionnaire de mots-clefs à remplacer par un autre mot clef (et non pas par des 0 et des 1), ce sont les tokens. "\n" n'est pas un token, il a donc autant d'effet que si vous aviez écrit "un" ou "cucurbitacée".
C'était Tynril dans "printf("%s",echo);", notre emission programmation. A vous les studios !
Par Jedaï le 10/12/2002 à 22:57:51 (#2756467)
Non, je déconne, hein. Tout le monde peut se tromper.
Ben...je vois pas où je me suis trompé, ce que tu dit est tout à fait exact, mais ce que j'ai dit aussi non ?:confus:
"\n" est transformé en une suite de 0 et de 1, certes, mais c'est le cas de tout caractère que je sache ? Retour chariot et Fin de ligne ne font pas exception, ce sont des caractères comme les autres du point de vue de l'ordinateur : une suite de 7 bits, qu'il interprète grâce au code Ascii, (8 bits pour l'ASCII étendu). Leur statut particulier tient surtout à leur coexistence alors qu'ils sont censés remplir la même fonction. Si en C on utilise "\n" pour coder le saut de ligne, on peut tout autant à ma connaissance utiliser \010 ou \013 (je sais plus lequel). Idem pour "\0" qui termine une string en C, une fois compilé, c'est un caractère comme les autres. De toute façon, tout affichage de string est une interprétation d'une suite de 0 et de 1, certaines suites sont interprétés d'une façon qui nous semble un peu différente, voilà tout.:cool:
Par Tynril le 11/12/2002 Ã 0:21:46 (#2756994)
Par coolstar le 11/12/2002 Ã 0:22:08 (#2756998)
;)
Par eMRaistlin le 11/12/2002 Ã 1:50:25 (#2757318)
Bein, c'est pour ca que j'ai montré le 2da sur les token : pour montrer que effectivement, c'est pas prevu
Par coolstar le 11/12/2002 Ã 2:19:00 (#2757396)
Par Jedaï le 11/12/2002 à 12:35:41 (#2759450)
Sinon, eMRaistlin, "\n" est bien un "token", mais pas exactement du même type que ceux qui sont accessible dans l'éditeur, il est traité à plus bas niveau. On pourrait par contre imaginer, si on savait à quoi correspondent les différentes catégories dans le token.2da (comment il s'appelle d'ailleurs :confus: ), de créer un token ", pas sûr que ce soit possible, mais à creuser...:)
Parce que je maintiens que c'est un peu lourd....:enerve:
Par eMRaistlin le 11/12/2002 Ã 12:50:13 (#2759625)
Par Jedaï le 11/12/2002 à 13:18:14 (#2759933)
De plus j'ai effectué une recherche de str*.2da et de *tok*.2da dans le répertoire de nwn (avec sous répertoires) et il n'as rien trouvé...:confus:
C'est le deuxième .2da que je ne trouve pas, déjà je n'ai pas trouvé exptable.2da (par contre j'ai bien XPtable.2da), c'est grave docteur ?:monstre:
Par eMRaistlin le 11/12/2002 Ã 14:39:41 (#2760726)
Par coolstar le 11/12/2002 Ã 15:02:37 (#2760946)
JOL Archives 1.0.1
@ JOL / JeuxOnLine