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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Un petit problème sur les dialogues

Par Prophetia Astrae le 8/12/2002 à 13:22:01 (#2736589)

Bonjours,

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)

Question déjà abordée... Réponses sans solutions! Sûrement un bug frustre dont on peut espérer la correction de Bioaware... :D

;)

Par daemogorgon le 8/12/2002 à 14:13:03 (#2736934)

Ne mets pas de retour à la ligne.

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)

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 coolstar le 8/12/2002 à 14:39:44 (#2737117)

Provient du message de eMRaistlin
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.
Good eMR! Voilà bien ce qui me semble le plus approprié pour compenser! ;)

Par Taern le 8/12/2002 à 14:43:51 (#2737151)

Si si il y a un moyen de faire un retour chariot proprement, mais ce n'est pas forcément très pratique.
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)

Merci!!!!!!!!!!!!!!!

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)

[CanardFermeSaGueule!]:merci:[/CanardFermeSaGueule!]

Par Jedaï le 9/12/2002 à 0:22:05 (#2740994)

Ah les mystères de NWN :rolleyes:
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)

Peut-être tout simplement parce que Bioware a omis de scripter cette option dans le fonctionnement de l'Editeur de Dial, mais qu'en passant par l'Editeur de Scripts on la valide avec tous les paramètres manquant (induit par SetCustomToken) afin de pouvoir l'intégrer... genre ??? :confus:


:D

Par Taern le 9/12/2002 à 17:27:18 (#2745261)

Ou peut être parce que le texte que l'on entre dans l'éditeur de script est déjà "formaté" (bien qu'il n'y ai pas beaucoup de possibilité de formatage), et que donc pour pouvoir insérer des indications de formatage il faut passer directement par une chaîne de caractère.
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)

J'ai pas vu /n dans les token existant :

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)

Normal, "\n" n'est pas un token eMRaistlin :)
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)

C'est \n pas /n.

\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)

Merci Tyn! Voilà une formulation technique signifiant bien ce que je cherchais à signifier... :D

;)

Par Jedaï le 9/12/2002 à 20:27:16 (#2746823)

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 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)

Après maintes recherches, il appert que la clé tant recherché soit le code Ascii 13 pour le CR (retour chariot) et le 10 pour le "saut de ligne". Si quelqu'un pouvait faire des tests... :D

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)

Oui, je sais que je suis parfois un peu distrait....:sanglote:

Par coolstar le 9/12/2002 à 22:12:41 (#2747606)

:mdr:


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)

ah ouaiiiiiiiiiii le 0, c pas con ca, j'avais pas pensé, mais c klr que ca arrenge pas gd chose

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)

Ben c'est dommage, mais normalement ça devrait marcher, normalement... :(

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)

Vivi, j'ai bien fait la distinction à l'essai, Pfff! :D

Et vi, ça donne "?" à chaque sans le "0"... :D


:D

Par Jedaï le 9/12/2002 à 22:30:54 (#2747720)

Ah, quel monde de merde, j'ai foutu mon CD NWN à la poubelle avec mon lecteur et maintenant on est obligé de passer par un custom token pour insérer un saut de ligne....:( :( :(

Par coolstar le 9/12/2002 à 22:32:42 (#2747730)

Y paraît qu'on peut débrider "Image Mirroir"... Tu veux que je te fasses une copie de mon CD avec ??? :D

:mdr:

Par Azrael07 le 10/12/2002 à 19:13:06 (#2754665)

ben ca....

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)

Le reste se passera en MP, je vous prie ^^

Par Tynril le 10/12/2002 à 22:28:06 (#2756241)

Provient du message de Jedaï
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" !
Ahhh! Mon Dieu! Horreur ! Vilénie ! Fiélon ! Suppot de Satan !

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)

Ce qui m'a outré, c'est la comparaison WindowsDOS :D Je me choque de rien, effectivement :p

Par coolstar le 11/12/2002 à 0:22:08 (#2756998)

Le débat informatique est lancé, mais qui gagnera??? nan, sérieux, vos allégations sont certainement aussi justes les unes que les autres, d'un point de vu "informatique", mais c tout de même NWN qui l'emportera! car c'est lui qui détient la réponse à ses secrets... N'oubliez pas que NWN utilise évidemment le "langage informatique", quel qu'il soit, (comme n'importe quel programme d'ailleurs), mais il n'en est pas un lui-même... et c Scripts sont juste une version "épurée" proposée par Bioware pour l'occase... et quand à ce qui est de l'Editeur de Dial, ben à mon avis si "\n" n'est pas prévu, il est pas prévu... il faut lui apprendre cette instruction donc, comme le ferait Bioware s'il en avait besoin... comme il le fait d'ailleurs dans les Patch en rajoutant ça et là des "Nouvelles Fonctions Manquantes", chaque fois que l'envie lui chante... non ??? :D

;)

Par eMRaistlin le 11/12/2002 à 1:50:25 (#2757318)

ben à mon avis si "\n" n'est pas prévu, il est pas prévu...

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)

:D

Par Jedaï le 11/12/2002 à 12:35:41 (#2759450)

Pour WindowsDos, c'est vrai que...:rolleyes:

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)

stringtokens.2da

Par Jedaï le 11/12/2002 à 13:18:14 (#2759933)

Désolé, je le trouve pas, j'ai cherché partout :source\, override\, 2dasource.zip...:(

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)

mp moi ton mail, que je te les envoies...

Par coolstar le 11/12/2002 à 15:02:37 (#2760946)

:mdr:

JOL Archives 1.0.1
@ JOL / JeuxOnLine