FOIRE AUX QUESTIONS

Alignement
Clef
Day/night standpoints
Caractéristiques
Container
Copier-Coller
Dialogues
Dormir
Fade
Flags
Habits

Heartbeat
Heure
Au lancement
Lumières
Passage
@pcname@
Quêtes
Réaction d'un NPC
Secteurs

Slides
Sons
Substitute inventory
Terrain
Tapis
Tile script
Undat
Vitesse de jeu
WorldEd 2
Winzip

  • Alignement
- La variable de dialogue "al" contrôlant l'alignement du joueur n'a aucun effet. Même problème dans le fichier Rules\gamequest.mes.
- La variable "al" fonctionne par unité de 10 points. Ainsi, si l'on veut par exemple augmenter l'alignement du joueur de +5, on écrira : al +50.

  • Clef
- J'ai donné un nom à une clef, via le fichier Gamedesc.mes, mais il n'apparaît pas !
- Si vous avez rempli pour cette clef le champ "KEY ID" avec un chiffre, le seul nom qui peut apparaître est celui qui correspond à ce chiffre dans le fichier Gamekey.mes. Ouvrez donc ce fichier pour y inscrire la description de la clef.


  • Day/night standpoints
- Je clique bouton droit sur un NPC, je sélectionne Day Stand. Je déplace le personnage sur une autre case, sélectionne Night Stand, puis sauvegarde le tout. Mais, quand je lance mon scénario, le perso ne change pas de position entre nuit et jour!
- Si vous avez crée votre NPC puis déjà compressé votre module, les standpoints ne seront pas reconnus après cette compression. Effacez le NPC, recréez le et réattribuez lui ses standpoints. Ceci vaut également pour les waypoints.

- J'utilise la ligne de script "set day standpoint of critter Attachee to X: Y: on this map" mais le NPC sur lequel est attaché le script ne se déplace pas du tout !
- Assurez-vous que le nouveau "day standpoint" n'est pas trop éloigné du point de départ du personnage. S'il le faut, placez autant de "day standpoints" intermédiaires jusqu'à la destination souhaitée. Par exemple :
0. If Attachee is at location X:500 Y:500 THEN set day standpoint of critter Attachee to X:501 Y:501 on this map ELSE goto line 2
1. Return and RUN default
2. If Attachee is at location X:501 Y:501 THEN set day standpoint of critter Attachee to X:502 Y:502 on this map ELSE do nothing
3. Return and RUN default

  • Caractéristiques
- Je souhaite faire en sorte que le joueur ait une option supplémentaire de discussion s'il possède une aptitude BEAUTE de niveau supérieur à 12. Mais, l'interface de dialogue permet de tester bien peu de caractéristiques : CHARISME, INTELLIGENCE, PERSUASION... Comment dois-je procéder ?
- Renvoyez le dialogue à ces trois lignes de script :
0. Stat 3 of Player : store in Local 1
1. If 12 <= Local 1 THEN Dialog 10 ELSE Dialog 20
2. Return and SKIP default
Le dialogue reprend en ligne 10 si le joueur a 12 ou plus en BEAUTE, sinon en ligne 20.
Grâce à la ligne de script "Stat (num) of (obj) : store in (num)", on peut tester les caractéristiques de base, mais aussi les statistiques dérivées (vitesse, poids transportables...), ainsi que les attributs naturels (race, genre...).
La liste de ces caractéristiques et du nombre qui est affecté à chacune d'elles se trouve en page 86 de la notice.

  • Container
- J'ai créé un container "storage crate" que j'ai défini par la suite comme vide (case "inventory source"). Puis, j'ai changé son look pour qu'il apparaisse comme une armoire. Mais, les objets que j'ai ensuite placés à l'intérieur n'apparaissent pas pendant le jeu!
- N'utilisez pour cette manipulation que des "Empty Chest", "Empty Barrel", "Empty Safe", etc. Tout container dont le nom commence par "empty".

  • Copier-Coller
- Existe-t-il une interface du genre copier-coller dans l'éditeur de cartes ?
- Il est possible de copier-coller un personnage (NPC). Il suffit de sélectionner l'icône flêche, de presser la touche CTRL tout en cliquant gauche sur le NPC de son choix. Le personnage dupliqué apparaît alors au même emplacement que l'original, il ne reste plus qu'à le déplacer (sans oublier de lui allouer un "day stand" et un "night stand"). L'intérêt de l'opération est que l'on duplique caractéristiques et inventaires. Un gain de temps considérable. Cela fonctionne également avec les objets.

  • Dialogues
- J'ai bien enregistré mon dialogue au même nom que le script qui lui est attaché mais le dialogue ne se lance pas!
- Créez un répertoire "dlg". Vérifiez que le point d'attache Dialog soit rempli du même chiffre que celui qualifiant les fichiers dialogue et script. Enregistrez le fichier dialogue avec l'extension .dlg et au format : texte seulement. Les fichiers doivent être compris entre 00001 et 00996. Exemple : 00052aubergiste.dlg - 00052aubergiste.scr (respectez les minuscules/majuscules). Ici, on inscrira 52 dans la case Dialog du NPC.

- J'ai relié un dialogue à une ligne de script (en inscrivant dans la "response line" le numéro de la ligne de script avec le signe "-"), mais une fois que le script s'exécute, le dialogue ne reprend pas!
- Il vous faut tout simplement ajouter cette ligne à votre script :
Dialog (numéro de ligne NPC où le dialogue doit reprendre).

- Comment faire pour engager un dialogue dès le debut du jeu ? Comme avec Virgile dans le jeu de base...
- Essayez ce script, relié au point d'attache FIRST HEARBEAT du personnage qui doit engager le dialogue :
0. If attachee can see player THEN call script 2 at line 0 with triggerer player and attachee attachee in 1 seconds
1. Return and SKIP default
Script 2 (relié au point d'attache DIALOG) :
0. If player has met attachee THEN dialog 300 ELSE dialog 1
1. Return and SKIP default
Le dialogue reprend en ligne 300 si le joueur a déjà rencontré le personnage.

  • Dormir
- Je cherche la fonction qui permet d'interdire au joueur de dormir dans une ville ou un secteur, en général.
- On ne peut dormir dans un secteur où on a créé une "townmap". Il est par ailleurs possible de permettre au joueur d'attendre, en utilisant "[w:1]" dans le fichier townmaps.mes.
Par exemple :
{0}{}
{1}{Malicorne [w:1]}
{2}{Montrouge}
Ici, il est possible de faire attendre son personnage dans la ville de Malicorne mais pas dans celle de Montrouge.

  • Fade
- Je souhaite téléporter le joueur après que l'écran soit devenu noir pendant 3 secondes durant lesquelles on entendrait un son. J'utilise la commande de script suivante mais l'écran ne disparaît simplement qu'une seconde à peine et je n'entends aucun son...
Fade and teleport : pass 3 seconds, play sound 6001, play 0 movie, and teleport Player to map 5001 at X:541 Y:373
- Le premier champ à remplir dans cette ligne de script correspond aux secondes qui s'écoulent en temps de jeu, à l'exécution du script. Ce n'est pas le temps pendant lequel l'écran noir se fige. Pour parvenir à arriver au résultat escompté il faut utiliser ces deux lignes de script :
0. Fade : pass 3600 (par exemple) seconds, play sound 6001, play movie 0, with 30 seconds during fade
1. teleport player to map 5001 at X:541 Y:373
L'écran se figera pendant 3 secondes (30/10) et le son sera joué (voir le paragraphe Sons pour la création de bruitages). Après l'exécution du script, une heure de temps de jeu se sera écoulée (3600 secondes).

  • Flags
- Comment utiliser les flags et à quoi servent-ils?
- Ils sont de deux sortes: local flags (ceux qui ne réfèrent qu'à un script) et global flags (ceux que tous les scripts peuvent prendre en référence). On peut utiliser jusqu'à 10 lf dans un dialogue et/ou script s'y rattachant (de 0 à 9). Il n'y a pas de limites pour les gf (ils démarrent à 1000). Les flags peuvent avoir deux positions : 1 (activé) ou 0 (désactivé). On peut les utiliser dans multiples cas.
Exemples :
Au sein d'une ligne de dialogue :
{1}{Qui êtes vous?}{}{5}{}{lf1 0}{30}{lf1 1}
Ici, la condition pour que cette ligne apparaisse est que le local flag 1 soit sur 0. Une fois que le joueur aura cliqué sur cette option de dialogue, lf1 passera sur 1, rendant par la même la phrase impossible à redire, la condition n'étant plus remplie.
Dans un script :
0. If local flag 1 is set then teleport player to XY else goto 2
1. Return and script default
2. If player has item named 1800 then teleport player to XY else goto 4
3. set local flag 1 to true
4. return and script default
J'ai utilisé ce script pour une trappe. Quand le joueur détenait la bonne clef pour l'ouvrir, il pouvait la franchir. Mais pas besoin qu'il détienne la clef par la suite, la trappe restant ouverte grâce au local flag.
les global flags sont utiles quand on veut les prendre en référence d'un script à un autre. Je m'en suis notamment servi dans le cas d'une action effectuée par le joueur et qui a ouvert une option de diaolgue chez un NPC.

  • Habits
- Je donne des habits aux personnages que je place sur ma carte, mais, lorsque je lance mon scénario, certains d'entre eux les gardent dans leur inventaire sans les porter...
- Le meilleur moyen est de déposer l'équipement choisi sur le personnage de façon classique, tout en appuyant sur la touche "shift". Ceci fait, si le personnage porte l'habit aussitôt, il le portera également au cours du jeu.

  • Heartbeat
- Comment faire en sorte qu'un "item" puisse utiliser le point d'attache HEARTBEAT. "Hearbeat" ne concerne en effet que les NPC. Par exemple, il est alors impossible de faire varier l'état on/off de l'objet quand un événement quelconque arrive, du genre déclenché par un "global flag"...
- La solution bancale peut être de créer un NPC et de le relooker en un "item" (Cf. Amtut). Reste qu'il garde ses attributs de NPC et cela pose de nouveaux problèmes (l'objet ne peut être mis dans l'inventaire du joueur...). La question reste en suspens sur tous les forums connus...

- Je veux qu'un évènement se produise concernant un NPC quand un "global flag" est activé. J'ai relié le script au point d'attache HEARTBEAT du NPC, mais, du coup, lorsque le joueur l'attaque, il ne répond pas !
- Votre script utilise la ligne "Return and SKIP default". Remplacez la par "Return and RUN default".

  • Heure
- Je souhaite définir une action qui se déroulerait entre 18h et 6h du matin. Mais, selon les conditions mises à notre disposition, on trouve bien "If (num)<=(num)" et non pas "If (num)>=(num)...
- Essayez ce script :
0. Store current hour in Local 1
1. If Local 1 <= 17 THEN goto 2 ELSE goto line 4
2. If Local 1 <= 5 THEN goto line 4 ELSE do nothing
3. Return and RUN default
4. (Action que vous souhaitez définir)
5. Return and SKIP default

  • Au lancement
- Comment se fait-il qu'au lancement de mon scénario je n'obtienne pour seul résultat qu'un écran figé sur un fond noir ?
- Vérifiez que vous avez bien défini un point de départ à votre module. Pour ce faire, ouvrez le fichier "votre module\rules\maplist.mes". Changez la ligne {5001} comme suit :
{5001}{[inscrivez ici le nom de votre carte], [inscrivez ici la valeur X, première coordonnée], [inscrivez ici la valeur Y, seconde coordonnée], Type: START_MAP, WorldMap: 0}
Veillez enfin à ne pas supprimer la carte appelée ShopMap.

  • Lumières
- J'aimerais tester les lumières qui doivent apparaître de nuit pendant le jeu, sans avoir à lancer mon module. Cela est-il possible ?
- Oui. Ouvrez le menu View/Ambient Colors/Scheme et remplacez la valeur 12 (midi) par 20. Pour revenir à la lumière du jour, réinscrivez la valeur 12.

  • Passage
- Je veux qu'une clef ouvre une trappe. Le problème est que la trappe n'a pas de "Key ID", comme une porte...
- Vérifiez d'abord que la case "Click through" de la trappe n'est pas cochée. Ensuite, reliez le script suivant au point d'attache USE de la trappe :
0. If local flag 1 is set THEN teleport Player to map (num) at X:(num) Y:(num) ELSE goto line 2
1. Return and SKIP default
2. If Player has item named (insérez ici "l'internal name" affecté à la clef) THEN teleport Player to map (num) at X:(num) Y:(num) ELSE goto line 4
3. Set local flag 1 to true
4. Return and SKIP default
Le "local flag 1" est utilisé ici pour que la trappe reste ouverte après que le joueur se soit servi une première fois de la clef. Ainsi, il n'a plus besoin de la détenir par la suite pour ouvrir.

  • @pcname@
- Puis-je utiliser la fonction @pcname@ dans une note ou un livre, comme dans un dialogue ?
- Non.

  • Quêtes
- Je veux ajouter une quête dans le journal de bord, à la lecture d'une note. J'ai créé le script suivant, relié au pont d'attache USE de la note en question, mais cela n'a pas l'effet escompté :
0. Set quest 1005 of player in state 2
1. Return and SKIP default.
- Utilisez Return and RUN default, en ligne 1.

- Comment utiliser la commande {Q:} ?
- Une page d'aide a été éditée à ce sujet :
http://www.weekapaugclan.com/whitesandswww/qtut.html.

- Comment réaliser une quête ?
- La création de quêtes se fait en plusieurs étapes.
Tout d'abord, on ouvre le fichier Rules/Gamequest.mes. Chaque quête correspond à une ligne dans ce fichier.
{1000}{3 +50 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1}
Dans le cas présent, la quête est la n°1000. Lorsque le joueur l'achèvera, il touchera un nombre de points d'expèrience égal à une quête de niveau 3 (premiere valeur du second champ). Son alignement sera modifié de +5 (deuxième valeur, par incrément de 10).
Ensuite, il faut choisir le texte qui apparaîtra dans le carnet de route du joueur, lorsqu'il aura eu connaissance de la quête. Pour ce faire, on ouvre les fichiers mes\Gamequetslog.mes et mes\Gamequestlogdumb.mes. Le texte du premier fichier s'affichera si le joueur possède un niveau d'Intelligence supérieur ou égal à 5. Sinon, le texte du second fichier sera pris en compte. Au créateur de module de prévoir ces deux variantes.
Ceci fait, il reste à proposer la quête au joueur au sein d'un dialogue ou d'un script. On utilise la commande {qu} comme suit, dans le septième champ d'une ligne de dialogue :
qu1000 0 (inconnue), qu1000 1 (mentionnée), qu1000 2 (acceptée), qu1000 3 (achevée mais le joueur doit encore prévenir la personne qui la lui a donnée), qu1000 4 (réalisée), qu1000 5 (un autre joueur a réalisé la quête - multijoueur), qu1000 6 (rayée, désormais irréalisable).
Exemple :
{1}{Acceptez-vous la quête?}{Acceptez-vous la quête?}{}{}{}{}
{2}{Oui.}{}{1}{qu1000 0}{0}{qu1000 2}
{3}{Non.}{}{1}{qu1000 0}{0}{qu1000 1}
{4}{Déjà fait.}{}{1}{qu1000 3}{0}{qu1000 4}
Ici, la quête 1000 sera simplement mentionnée dans le carnet de route du joueur si celui-ci répond non à son interlocuteur. S'il lui répond oui, la quête sera écrite en bleu car expressément acceptée. Si le joueur a déjà réalisé la quête (état 3), la ligne 4 de dialogue apparaîtra et les lignes 2 et 3 ne seront plus lisibles.
Faire varier l'état d'une quête peut se faire ainsi, au sein d'une discussion, mais aussi par l'utilisation d'un script. Par exemple, si la quête 1000 consiste à tuer un monstre, on attachera le script suivant au point Dying dudit monstre :
0. Set PC (Player) quest (1000) to state (3)
1. Return and RUN default
Il est à noter que d'autres lignes de script existent, selon que l'on joue en multijoueur, notamment.

  • Réaction d'un NPC
- J'ai placé deux gardes, l'un à côté de l'autre et lorsque j'attaque l'un, l'autre n'intervient pas!
- Ils doivent appartenir à la même faction pour attaquer ensemble.

- J'ai placé un magicien dans mon module. Je lui ai donné des sortilèges. Mais, en combat, ils ne les utilisent pas!
- N'oubliez pas de donner un total de points de fatigue suffisant à votre magicien (ils augmentent avec le niveau). Sa caractéristique VOLONTE et son niveau doivent être à la hauteur pour lancer les sorts. Donnez une IA à votre personnage. Pour cela, ouvrez le fichier Votremodule\Rules\GameAI.mes. Créez une ligne dans laquelle la valeur D13 soit égale au pourcentage de chances souhaité pour que le personnage parvienne à lancer ses sorts. Pour les sorts de guérison, choisissez la valeur D14. Enfin, dans la case AI du magicien, inscrivez le numéro de la ligne que vous venez d'écrire dans GanmeAI.mes.

- Un des monstres que j'ai placé dans mon scénario ne tombe pas à terre, au moment de mourir, mais reste debout à l'état de cadavre !
- Vous avez relié au point d'attache DYING du monstre en question un script qui utilise la ligne "Return and SKIP default". Remplacez la par "Return and RUN default".

  • Secteurs
ATTENTION : lorsqu'on efface un secteur en cliquant dessus bouton droit et en sélectionnant "Delete", tous les changements apportés au module depuis la dernière sauvegarde sont également supprimés. Pire encore, le programme sauvegarde automatiquement après qu'un secteur ait été effacé !... Prudence...

  • Slides
- J'ai relié au point d'attache DYING d'un personnage le script suivant permettant d'envoyer l'écran de fin du module :
0. End game and play slides
1. Return and RUN default
Mais, quand le personnage meurt, le programme comprend bien que la partie est terminée mais il me renvoit directement au menu d'entrée d'Arcanum, sans faire apparaître l'écran de fin !
- Ouvrez le fichier Rules\Slides.mes et remplacez les lignes 1 et 2 par celles-ci :
{1}{Credits.bmp 10second.mp3}
{2}{TheEnd.bmp 10second.mp3}

  • Sons
- J'ai placé un fichier appelé explosion.wav dans le répertoire Sound de mon scénario. Dans le fichier snd_user.mes, j'ai inséré cette ligne : {6001}{explosion}. Puis j'ai écrit le script suivant :
0. Play sound 6001
1. Return and SKIP default
Mais quand le script est lancé, je n'entends aucun son !
- Voici la syntaxe à utiliser dans le fichier snd_user.mes :
{6001}{explosion.wav}

- Je souhaiterais créer des dialogues parlés. Comment procéder?
- Il s'agît tout d'abord de créer un répertoire dans l'emplacement suivant du module : sound\speech\. Le répertoire doit prendre le nom des 5 chiffres définissant le script auquel le dialogue que vous souhaitez doubler.

- Comment affecter une musique à un secteur ?
- Créez un répertoire "Music" dans le répertoire "Sound" de votre module. Insérez le fichier mp3 que vous souhaitez jouer au moment où le joueur entrera dans le secteur choisi. Donnez un nom à ce fichier tel qu'il soit dans la liste des musiques connues par l'éditeur (Tarant, Dernholm, Arcanum...). Cliquez droit sur le secteur en question. Choisissez la ligne "Sound Scheme", puis sélectionnez la ligne qui correspond au nom de votre fichier. Tarant, par exemple, si votre fichier mp3 s'appelle Tarant.mp3.

  • Substitute inventory
- Je souhaite transférer, au cours d'un dialogue, un objet d'un coffre appartenant à un NPC vers l'inventaire du joueur. Lorsque je place l'objet sur le NPC et que j'utilise la commande "Transfer item named (num) from attachee to player", cela fonctionne. Mais, lorsque l'objet se trouve dans le coffre, comme je le souhaite, le transfert n'a pas lieu. Pourtant, en utilisant la commande {B:} dans ce même dialogue, le coffre choisi comme inventaire de remplacement s'ouvre bien et les achats/ventes entre NPC et joueur sont possibles.
- Les inventaires de remplacement ne valent en effet que pour la commande "Barter". Pour réaliser ce que vous souhaitez, il faut d'abord donner un "internal name" à votre coffre. Prenons 1401, par exemple. Et 3608 l'objet à transférer. En tapant le script qui suit, tout devrait bien se passer :
0. Loop for every container in the vicinity
1. If Current Looped Object is named 1401 THEN transfer item named 3608 from Current Looped Object to Player. ELSE Goto line 2
2. Loop End
3. Dialog 20
4. Return and SKIP DEFAULT
Ces lignes doivent s'insérer dans le script relié au point d'attache DIALOG du NPC. Ici, après le transfert, le dialogue se prolongera à la ligne 20.

  • Tapis
- Où se trouvent les tapis ?!
- Menu Environnement/Façades/de 218 à 225.

  • Terrain
- J'ai voulu créer un souterrain et, pour cela, je l'ai entouré de cases noires. Mais j'ai dû également enlever manuellement (!) toutes les herbes présentes d'origine. Y a-t-il un moyen plus rapide de procéder ?
- L'astuce est de créer des montagnes via le bouton "Edit terrain..." puis de les enlever par la suite. Il ne reste alors à leur place que des cases noires sans aucune vegétation. Autre astuce : placer le souterrain en pleine étendue d'eau.

  • Tile script
Il est possible d'affecter à tout un secteur un "tile script" comme on peut le faire pour une simple case. Il suffit de passer en vue aérienne ("top-down view"), puis cliquer bouton droit sur le secteur désiré et enfin sélectionner la ligne script dans le menu contextuel apparaissant.

  • Undat
- Comment faire pour compresser/décompresser un fichier .dat ?
- Que ce soit avec le logiciel officiel ou celui de The Mod Squad, la manipulation de base est la même : ouvrez une session DOS sous windows (cliquez sur l'icône MsPrompt qui se trouve dans le répertoire Windows). Entrez dans le répertoire où est installé Undat (commandes : "cd + nom répertoire" pour ouvrir un répertoire, "cd.." pour revenir en arrière d'une étape dans l'arborescence jusqu'à la racine). Tapez "undat". Un message d'accueil s'affiche. Enfin, tapez undat [emplacement du fichier à décompresser] [emplacement de destination].
Exemple : undat c:\sierra\arcanum\module\vormatown c:\modulesdécopressés.
Remarquez que le fichier à décompresser est mentionné sans l'extension .dat.

  • Vitesse de jeu
- Bien au contraire du jeu lui-même, mon module rame!
- Ne mélangez pas différents types de murs au sein d'une même façade/maison.

  • WorldEd 2
La seconde version de l'éditeur de cartes/scripts étant plutôt lourde, The Tarant Daily nous propose une manipulation simplissime permettant de sauvegarder les améliorations apportées au jeu par le patch 1.0.7.4, tout en revenant à la version antérieure de l'éditeur, appréciée de tous.
1- Ouvrez le répertoire Sierra\Arcanum et changez le nom de WorldEd (l'application WorldEd.exe) en WorldEd2.
2- Installez le patch 1.0.7.0 (voir la rubrique Patch) dans un répertoire quelconque.
3- Aussi simple que cela puisse paraître, extrayez de ce répertoire le fichier WorldEd.exe et insérez le dans le répertoire Sierra\Arcanum !
Vous conservez ainsi les deux versions de l'éditeur.

- J'utilise la version 1074 de l'éditeur. Comment créer un répertoire ou un fichier dans mon module ? Je n'ai accès à aucun d'entre eux puisque l'interface compresse mon scénario à chaque fois que je quitte l'éditeur?
- Si vous utilisez la version 1074 de l'éditeur, recherchez le répertoire de votre module dans le répertoire windows\temp\worlded working folder, pendant que l'éditeur de cartes est ouvert.