La Création de module

Le but de cette page n'est pas de vous expliquer de A à Z comment créer un module. Il existe déjà des sites proposant cela, mais leurs explications sont souvent trop détaillées ou pas du tout.

De ce fait, il s'agirait plutôt d'un complément d'information. Les réponses aux questions que je me suis posé après être allé sur ces sites et avoir lu ces explications. Puis, un petit rappel de choses importantes (plutôt qu'essayer de les retrouver parmis une tonne d'info).

Si vous cherchez de tels sites, employez les mots clés "arcanum mod".

Mon module  
Quel éditeur prendre ? Comment récupérer WorldEditor 1 Création d'objet dans WorlEditor 1
WorldEd quelques trucs Placez votre Start Location Création d'une Quête
Rappel des icônes Menu de raccourcis Les Dialogues
Les scripts : les fichiers La création de script Les scripts d'évènement
Les générateurs Les noms internes Les Lits, dormir
Restreindre l'utilisation d'un objet Gestion des dialogues 
Les Rumeurs Les réputations Les TownMap
Les options (Flags) des objets  
Liste des objets Les (Obj) possibles Liste des numéros de stat



WorldEditor V1 VS V2

Franchement la version 2 n'est pas mieux que la V1. Toutes les deux sont buggées, mais avec la V2 les dégâts occasionnés sur votre module sont plus importants. N'ouvrez surtout pas une version puis l'autre dans la même cession Windows, redémarrez.

Les plus (et moins) de la version 2 : Je préfère de loin la V1 (la lecture de forums de concepteur de module, vous confirmera que c'est l'avis général).


Comment récupérer WorldEditor 1

Renommez WorldEd.exe (par exemple en WorldEd2.exe), extrayez le fichier WorldEd.exe du fichier Setup2.cab (CD d'installation) à l'aide de votre compresseur préféré (Winzip, Winrar, Winace, Power Archiver... n'importe pourvu qu'il gère les .CAB, sinon procurez-vous une version plus récente). Renommez-le (par exemple en WorldEd1.exe). Et créez-vous deux nouveaux raccourcis et effacez l'ancien.

Tant que vous y êtes, si ce n'est déjà fait, créez-vous des associations pour les .dlg et les .mes avec le notepad (bloc-notes de Windows). Car croyez-moi, vous allez en ouvrir.


Création d'objet dans WorlEditor 1

Contrairement à ce que beaucoup croient, vous pouvez créer les mêmes objets qu'avec la version 2. Seulement la présentation est différente.
Dans dernière version, vous avez des onglets et pour chaque catégorie, un choix par liste déroulante du type.
Dans la 1ère, tous les icônes de catégorie sont sur le même panneau. Exemple vous voulez la lampe à pétrole :
  • Cliquez sur cette icône
  • Cliquez sur "select" (Voir ci-contre 1er image)
  • Une nouvelle fenêtre s'ouvre. Cliquez sur petit objet métallique (un seau), c'est l'équivalent de la liste déroulante dans la V2. Puis sur OK. La fenêtre se ferme.
  • Vous avez le seau comme image représentative. Cliquez sur "Edit" (sous cette image). La fenêtre intitulée "Override Prototype" s'ouvre (voir à gauche).
  • Cliquez sur l'image du cadre "Art" et, en faisant défiler avec les flèches, trouvez et sélectionnez votre lampe. Puis cliquez sur le sol pour le créer à cet endroit.
Cela peut paraître compliqué, mais avec l'habitude (car vous allez créer de nombreux objets), vous le ferez en quelques secondes.

Quelques astuces pour WorldEditor

Lorsque vous avez créé un objet valable (ex: une commode container, verrouillée, pt de verrouillage 50...). Vous n'allez pas refaire la même chose pour la baraque d'à côté. Mettez-vous en mode sélection (icône flèche), cliquer dessus en appuyant sur la touche "Ctrl". L'objet se dupliquera juste à coté. Il vous suffira de le déplacer là où il doit être.

De même, n'allez pas créer un bureau-coffre (qui s'ouvre) alors qu'à côté, vous avez une commode-coffre. Dupliquez la commode-coffre et changez son apparence.

Vous pouvez prendre un objet et même temps vous déplacer sur l'écran. Cliquez dessus, maintenez le bouton de la souris appuyé et déplacez vous sur l'écran avec le pavé numérique.

Personnellement, je mets tous les objets communs dans la rue. Puis chaque fois que j'en ai besoin d'un, je le duplique et le transporte à sa destination.

Prenez régulièrement des copies de votre module, vous ne le regretterez pas. Pour ma part, sur l'explorateur, clic droit et zip, après avoir renommé l'ancien en .xx (ex : module.zip.12 si l'avant dernier est .11) et ne garde que les 3 derniers.

Pensez à mettre les fenêtres et les portes en invulnérables (Flag), si vous avez mis quelqu'un en "set notify" dessus. Sinon, si par hasard, en utilisant une arme à distance, le joueur la casse en ratant son adversaire, il aura ennemi un de plus. Faites de même pour les objets de quête.

Dans le même ordre d'idée, ne mettez pas les personnages importants près de monstre. J'ai du recommencer le module de base, car j'avais, sans le savoir blessé le bibliothécaire de Tarante. Oui, les grenades peuvent blesser à travers les murs. D'ailleurs le bibliothécaire n'était pas le seul, j'avais blessé de la même manière la fille du centre Zoologique.


Menu de raccourcis

Créez-vous un petit menu comme ci-contre. Il faut bien sûr créer auparavant l'association avec les .mes.

Comment créer un menu :

Dans "Mes Documents" (par exemple), créez-vous un dossier "arcanum", entrez dedans.
Avec l'exploreur, récupérez les raccourcis créés lors de l'installation du jeu (par un copier-coller).
A l'intérieur du dossier Arcanum, créez les sous-dossiers et les raccourcis (indiqués dans l'arborescence ci-dessous).
Sous Windows 98SE (les autres traduisez), allez dans Affichage, Volet d'exploration et cliquez sur Dossier. Puis agrandissez les cadres à votre convenance.

Pour créer des raccourcis, ne rigolez pas certains ne savent pas, dans l'explorer clic droit, copier, dans le répertoire de destination, coller le raccourci. Pour le modifier clic droit dessus, puis choisir dans le menu déroulant.

Arborescence du répertoire "Editeur" : Bon, je n'ai pas tout mis car certains fichiers ne sont utiles que rarement. Ceci est un exemple, à vous de l'adapter à vos habitudes.

Pour les fichiers du répertoire "_Paramètre généraux", ils sont compressé dans Arcanum3.dat et/ou Arcanum4.dat, utiliser "Arcanun" pour les récupérer. Vous pouvez les mettre comme paramétrés ci-dessus, ou ailleurs. Je vous conseille de ne pas les modifier. Pour éviter cela cliquez droit sur le raccourci devant le nom du fichier rajoutez C:\WINDOWS\SYSTEM\VIEWERS\QUIKVIEW.EXE et un espace (l'aperçu rapide doit être installé). Si vous n'avez pas coché Permettre l'aperçu rapide, il vous demandera à chaque fois si vous voulez utiliser l'aperçu par défaut.

Dès que vous créez une carte (surtout la 1ère) mettez le "Start Location" car si vous l'oubliez vous allez planter au 1er essai.

Création d'une Quête

Pour créer une quête vous devez définir son nom (gamequestlog.mes) et son paramétrage (gamequest.mes).

Le fichier paramètre : gamequest.mes

Exemple voici deux quêtes :
{0001}{1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1}
{0002}{25 -200 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1}
Les éléments des séries de 7 correspondent à des possibilités de dialogue que je n'ai pas approfondi. Vous pouvez mettre -1 pour neutraliser cela.

Dans les dialogues, on pourra tester (5ème parenthèse) ou mettre un valeur (7ème parenthèse) de cette façon :

qux y x étant le numéro de la quête, et y l'état de la quête (voir tableau ci-dessous).

0=Inconnue1=Mentionnée2=Acceptée3=Accomplie non rapportée
4=Finie5=Réalisée par un autre6=Bloquée 


Attention :

Le niveau d'expérience est en fait le nombre de points qu'il faudrait pour passer du niveau 1 au niveau 2.
Le nombre de points d'alignement est ici le nombre réel multiplié par 10.

Le fichier des titres de quêtes (gamequestlog.mes)

Il doit commencer au numéro 1000 (ex :{1000}{Faire machin pour truc.}). Il contient les descriptions qui apparaitront dans le livre des quêtes.

Pour les joueurs ayant une intelligence <= 4, il existe un fichier spécial Gamequestlogdumb.mes qui leur est réservé.


Les scripts : les fichiers

Avant de parler proprement des scripts, il faut en détailler ses composants

Repères généraux (Arcanum\Modules\nom_module\semes\globalflags.mes)

Ils sont positionnés (1) ou non positionnés (0).
Ils servent généralement à tester si telle action à été effectuée, si tel truc est vrai, si on à parlé à tel personnage...

Attention en multijoueurs, se sont des repères généraux donc si vous voulez que cela ne s'applique qu'à un joueur utiliser des repères personnalisés.

Ils s'utilisent dans les dialogues et/ou les scripts. Exemples (les mots en vert sont des commentaires qui sont à remplacer par le texte du dialogue):

{1}{phrase du PNJ si le joueur est un homme.}{phrase du PNJ si le joueur est une femme.}{}{}{}{}
{2}{Réponse du joueur si GF1003 = 1}{}{5}{gf1003 1}{0}{}
{3}{Réponse du joueur et met GF1004 = 1}{}{5}{}{0}{gf1004 1}

0. If Global Flag 2632 = 1
THEN do nothing
ELSE goto line x
1. Global Flag 2655 = 1
Théoriquement, si c'est comme en programmation, un flag est a 0 ou à 1. Franchement je n'ai pas testé si on peut mettre autre chose.

Variables Générales (Arcanum\Modules\nom_module\semes\globalvars.mes)

Elles servent à compter le nombre de fois qu'une action ou un évènement a été effectué.

Attention en multijoueurs, se sont des compteurs généraux donc si vous voulez que cela ne s'applique qu'à un joueur utiliser Pcvars.mes .

Dans les fichiers dialogues (.dlg), vous pouvez en changer la valeur ou la tester (uniquement pour l'égalité). Pour les incrémenter ou les tester plus finement (<= ou >=) vous devez utiliser les scripts. Exemples

Dlg :
{1}{phrase du PNJ si le joueur est un homme.}{phrase du PNJ si le joueur est une femme.}{}{}{}{}
{2}{Réponse du joueur si la variable globale 1003 = 10}{}{5}{gv1003 1}{0}{}
{3}{Réponse du joueur et met 5 dans la variable globale 4}{}{5}{}{0}{gv1004 5}

Scr :
0. Global Variable 1 = Global Variable 1 + 5
1. If Global Variable 1<= 5
THEN goto line x
ELSE do nothing
Repère Joueur (Arcanum\Modules\nom_module\semes\pcflags.mes)

Idem que repère généraux mais spécifique au joueur. Simplement utiliser l'abréviation PF au lieu de GF. Exemple de script :

0. If PC Flag 0 of Triggerer = 1
THEN do nothing
ELSE goto line x
1. PC Flag of Triggerer 2 =1
Variables joueur (Arcanum\Modules\nom_module\semes\pcvars.mes)

Idem que repère généraux mais spécifique au joueur. Simplement utiliser l'abréviation PV au lieu de GV pour les dialogues. Exemple de script :

Scr: (Notice that the script requires identifying the relevant PC):
0. Pc Variable 1 of Triggerer = Pc Variable 1 of Triggerer + 5
1. If Pc Variable of Triggerer 1<= 5
THEN goto line x
ELSE do nothing

La création de script

Nous somme obligés d'utiliser pour cela le scripmaker fourni avec le jeu, les autres étant plus ou moins buggés. A la limite, vous pouvez vous servir de ScriptEditor pour changer une valeur ou déplacer un ligne (ne surtout pas écrire avec plusieurs commandes sont inversées).
Un petit conseil, mettez un titre explicite dans votre script (pour ScriptEditor File/Properties).

Les fichiers de script (.scr) sont stockés dans le répertoire scr du module et les fichiers de dialogue (.dlg) dans le répertoire dlg. Ces deux répertoires sont dans celui de votre module.

Le script le plus simple est celui associé à un dialogue basique :
0. dialog 1
1. Return and SKIP default
La ligne 0 : commencer le dialogue associé (fichier .dlg avec le même nom) à la ligne 1.

Ligne 2 : retourner à l'appelant (ici le dialogue) sans exécuter d'action.

Les scripts d'évènement

Ils sont liés à des objets (d'une simple trappe jusqu'à une carte) et à divers points d'attache.

Pour les lier à un objet ou un NPC, clic droit dessus , cliquer sur script, choisir un évènement de déclanchement et taper le numéro du script dans la case prévue à cet effet.

On peut lier des scripts différents à chaque évènement.

Dans l'exemple ci-contre, on a lié à l'évènement Examine, le script 100. Et un autre script est lié à celui de Dying.

Les cases counter sont liés à l'objet (ou NPC). Ils peuvent être remplis au moment de l'attachement du script et utilisé dans le script. Le counter 0 étant tout simplement appelé dans les script par counter 0 etc. ...

Les 32 flags (de 0 à 31, le 0 est à droite) devraient être (je n'ai pas encore essayé) les locals flags (ex : local flag 0). Ils ne sont, à priori, utilisables pour les test qu'en dialogue, mais peuvent êtres modifiés par un script.


Les objets ont souvent plusieurs points d'attache liés à des actions: examiner, utiliser et détruire, ou encore pris, jetés, lancés. Et les portes, fenêtres, coffres ont des points d'attache liés à verrouiller.

Un exemple :
Name: Piége explosif, une seule fois
Flags: Nonmagical trap, Auto-removing
Lines: 3
0: script eye candy: play 55 on Triggerer
1: damage Triggerer for 20 points of type 3 damage
2: return and Run default
Ce script devra être attaché à un objet tel qu'un coffre. Il a un flag "trap", qui pourra être détecté par sort, compétence (détection de piège) ou autre, et enlevé de même. Le flag "remove" est fait pour que le piège ne se déclanche qu'une fois, et pour qu'il s'enlève automatiquement. Attention, si ce coffre est détruit par un joueur, le piège sera enlevé.

Nous avons mis "Triggerer" (celui qui déclanche) pour l'objet car "Player" (joueur) n'aurait pas été adéquate car un compagnon peut le déclancher.

Autre exemple, celui-ci est lié au piège de type "TS" (dans "WorlEdit") :

Name: Apparition automatique de squelettes ou de rats
Flags: None
Lines: 3
0. If GlobalFlag 1 = 1
   Then Return and Run default
1. IF it is DayTime
   Then create objet with basic prototype 28353 near Triggerer
   Else  create objet with basic prototype 28321 near Triggerer
2. Return and Run default
La ligne 0 teste le "GlobalFlag 1" pour savoir si on va exécuter ou non le script. La ligne 1 crée des rats ou des squelettes (suivant que c'est le jour ou la nuit) près du déclencheur. Pour la liste des prototypes voir la liste des objets .


Les générateurs

Une autre solution pour faire plein de bestioles est de créer un générateur. Dans WorldEd, créer une bestiole, puis clic droit, edit, generator (l'avant dernier), No et le "No" se transforme en "Yes". Attention chaque générateur doit avoir un numéro d'ID différent sinon, au mieux, il se mélange les pinceau dans les compteurs.


Les noms internes

Lorsque vous voulez tester un objet en particulier (ex : pour une quête), vous êtes obligé de lui donner une référence interne pour le programme le puisse le distinguer des autres.

Fichier utilisés : Comment faire :

Vous voulez gérer la clé des entrepôts. En bleu la ligne créée.

Maintenant, vous pouvez écrire dans un dialogue ce qui suit (à condition que la quête 1001 existe) :
{13}{Alors, avez-vous le passe des entrepôts ?}{}{}{}{}{}
{14}{Oui, bien sûr, le voici.}{}{1}{in4601 }{16}{in4601 ,qu1001 4}

Les réputations

Fichiers :

Arcanum\modules\nom_du module\mes\gamereplog.meslibellé qui apparaîtront dans le livre
Arcanum\modules\nom_du module\rules\gamerep.mesparamètres

Syntaxe : Ex : {1000}{0 0 0, -20 1 0, +10 0 0, +15 2 1}

Liste des objets

Vous avez la liste des prototypes dans arcanum\data\mes\description.mes . Sinon vous pouvez l'extraire de arcanum3.dat (avec l'utilitaire "arcanun" par exemple).

Attention vous ne devez ni modifier, ni compléter cette liste (pas touche). Si vous voulez créer un nouvel objet utilisez arcanum\modules\nom_du_module\mes\GameDesc.mes . En fait ce sera que le nom de l'objet que vous créerez.


Les townMap

Town maps permet au joueur de se repérer plus facilement. Elles créent des vues isométriques semblables à celle de l'écran de jeu mais plus réduites, des sortes de cartes. Si des secteurs sont définis et nommés, ces "cartes" peuvent être générées automatiquement. Pour cela il faut :

Définir les noms des zones

Aller dans le menu déroulant Edit/Maps/Tow maps. En fait cela ouvre le fichier "Arcanum\modules\nom_module\Rules\townmap.mes".

Son contenu :


Si vous n'avez qu'une zone remplacer "my town" par le nom de celle-ci. Si vous avez plusieurs zones mettez-les à la suite ex :



Attention comme il est écrit dans le fichier d'origine la 1er ligne doit absolument être :

L'ajout du paramètre "[W:1]" permet au joueur d'attendre dans la zone et enlève le "brouillard de guerre" ex :



Dans cet exemple seul le lac Machin sera affecté par cette option.

Maintenant vous devez sauvegarder et fermer votre module avant de passer à l'étape suivante.

Affecter les secteurs

Ouvrez le module et la carte concernés. Mettez vous en vue aérienne "Top-Down", et zoom arrière au max (touche -). Vous constater que des lignes jaunes délimitent des grand carrés : ce sont les secteurs.
Positionnez-vous sur le secteur à "mapper". Clic droit, TownMap, puis choisissez dans la liste déroulante. Si la zone doit contenir plusieurs secteurs, faites de même pour les autres.

Attention, les secteurs d'une zone doivent être contiguës (doivent se toucher par un coté). Une zone de plus de 9 secteurs n'a pas l'air de fonctionner correctement. Donc, essayez de la factionner en plusieurs zones.

Créer la carte

Repassez en "Isometric" clic droit sur le sol, Towmap, generate.


Les Rumeurs

Les fichiers :
Arcanum\modules\nom_module\mes\Game_rd_npc_f2f.mes Arcanum\modules\nom_module\mes\Game_rd_npc_f2m.mes Arcanum\modules\nom_module\mes\Game_rd_npc_m2f.mes Arcanum\modules\nom_module\mes\Game_rd_npc_m2m.mes Arcanum\modules\nom_module\mes\Game_rd_npc_m2m_dumb.mes
"f2m" signifie d'une femme à un homme (femele to male) et "dumb" pour idiots.

Syntaxe : {numéro_rumeur}{libellé_de_la_rumeur}

Les rumeurs démarrent au numéro 20000 et par pas de 20 (20020, 20040...). Elles peuvent se composer au plus de 12 nuances. Ceci en ajoutant un chiffre à la rumeur. Ex :

{20400}{On dit qu'il n'y a pas meilleur connaisseur que Ristezze l'importateur en matière d'objets rares et exotiques.}
{20401}{Il paraît que personne ne connaît mieux les objets exotiques que Ristezze l'importateur.}
{20402}{Dieu m'en ai témoin, personne ne connaît mieux les objets exotiques que Ristezze l'importateur.}
{20403}{Personne ne connaît mieux les objets exotiques que Ristezze l'importateur, monsieur le mage.}
....
La 1ère est celle dont le libellé apparaîtra sur le livre section rumeur. Pour qu'elle n'apparaisse pas, ne rien mettre entre les parenthèses prévues à cet effet.

Les autres servent de variantes pour les différentes classes de personnage :

+1 class_noble
+2 class_priest
+3 class_wizard
+4 class_technologist
+5 class_shopkeeper
+6 class_guard
+7 class_city_dweller
+8 class_villager
+9 class_beggar
+10 class_thief
+11 class_bandit

Seule la 1ère (pour le livre) et la 2ème ligne (pour noble) sont obligatoires. Si une ou plusieurs des autres sont manquantes, celle du noble la remplacera.

Dans les dialogues, la syntaxe d'une rumeur est "RU" suivi du numéro de la rumeur divisé par 20 (pour la rumeur 20020 => RU1001).

Les Dialogues

Ils sont constitués de blocs : Pour les dialogues parlant de compétence :

0 = arc1 = esquive2 = Corps à corps3 = lancer 4 = discrétion5 = vol à la tire
6 = attaque sournoise7 = détection piège8 = jeu 9 = marchandage10 = soin
11 = persuasion12 = réparation13 = armes à feu 14 = crochetage15 = piège 



Un petit mot sur DialogEditor

Il permet d'insérer, effacer, renuméroter des lignes (petit problème, il faut sauvegarder avant et après la numérotation).

Vous facilite la vie pour la syntaxe, vous avez accès aux tests et aux ordres par icônes et menu déroulant.

Et enfin, vous avez une meilleure visualisation de votre dialogue.

Par exemple le dialogue suivant :

{18}{Tantine, d'après SansFiltre, vous rechercheriez de l'aide.}{}{1}{qb1017 1, lc0 14, qa1018 4}{29}{}
{19}{Tantine, j'ai votre broche.}{}{1}{qu1017 2,lc0 14,in3001 }{31}{}
{20}{Le Gouverneur s'inquiétait pour vous. Par bonheur vous êtes encore vivants.}{}{1}{lc0 17,qu1022 3}{42}{}
{21}{Ne reçevant pas la livraison de viande, le Gouverneur s'est inquiété pour vous. Par bonheur vous êtes encore vivants.}{}{1}{lc0 18,qu1024 3}{44}{}
{22}{E:}{}{1}{}{}{}
{23}{Devant la prolifération des monstres, il n'y a pas assez eu de gardes. Les prisonniers ont reçu un jugement rapide. Le plus dangereux a été condamné à mort. Certains ont du payer une forte amende, et ont été relachés. Les autres ont eu le choix entre s'enroler dans la garde (le temps des évènements) ou être expulsés de la ville. Avec les monstres qui trainent, ils ont ,naturellement, tous optés pour la 1ère solution. La prison sert actuellement de dortoir et de cantine pour la Garde.}{}{}{}{}{}
{24}{Autre chose.}{}{1}{}{6}{}
{25}{Voyez-vous cher @pcname@, des monstres m'empèche d'entretenir mon champ. Vous serez aimaible de m'en débarraser.}{}{}{}{}{}
{26}{Naturellement @npcname@.}{}{1}{}{6}{qu1016 2}
{27}{Formidable @pcname@. Vous pouvez utiliser le cabanon près du champ pour dormir ou entreposer vos biens. La récolte est loin, je ne m'en servirais pas encore. D'ici là, vous serez sûrement parti pour d'autres aventures. Encore une chose, Allez voir la gitane SansFiltre, elle a peût-être du travail pour vous.}{}{}{}{}{}
{28}{Merci, paysan. Ce me sera utile.}{}{1}{}{6}{qu1016 4,ru1014 }
{29}{L'autre matin, mon chat s'est échappé, je suis allé voir vers les champs pour le chercher. Je l'ai trouvé mais un monstre le poursuivait. Nous avons couru tous deux vers la maison. Puis, je me suis rendu compte qu'il avait cessé de nous poursuivre, il a du voir des gens au loin. Le problème est que dans l'affolement, j'ai perdu ma broche. Si vous la trouvez, pourriez-vous me la ramener ?}{}{}{}{}{}
{30}{Bien sûr Tantine, si je la trouve je vous la ramènerais.}{}{1}{}{6}{qu1017 2,rq1015 }



Pour pouvez remarquer que vous avez le détail de la ligne en cours dans le cadre inférieur.


Gestion des dialogues

Vous pouvez éviter d'avoir un fichier dialogue par PNJ en vous servant des compteurs qui lui sont associés. Exemple :
...

{6}{Voulez-vous troquer ou bien des renseignements ?}{}{}{}{}{}
{7}{R: $0, 1001-1010}{}{1}{}{6}{}
{8}{B:}{}{1}{}{6}{}
{9}{Paysan, as-tu du travail ?}{}{1}{lc0 1,qu1003 0}{25}{}
{10}{Paysan, j'ai ta pelle.}{}{1}{lc0 1,qu1003 2,in5801}{28}{}
{11}{[suite]}{}{1}{}{13}{}
{12}{E:}{}{1}{}{}{}...
On a mis, au préalable, 1 dans le counter 0 du paysan (lorsqu'on lui a affecté le dialogue). Les lignes 9 et 10 n'apparaîtront qu'avec le paysan (le test est lc0 1). Les autres paramètres : Vous pouvez mettre autant de lignes de ce style que vous voulez. Dans l'exemple, on a 6 réponses mais la 9 et la 10 ne peuvent s'afficher simultanément. On respecte donc la limite d'affichage (5 lignes).

Si on a plus de lignes, on est obligé de faire une suite, comme dans la ligne 11.

Puisque nous avons commencé à parler de quête, voici la suite :
...

{25}{Récupérez notre pelle s'il vous plait....}{}{}{}{}{}
{26}{D'accord. Je vous la ramènerais.}{}{1}{}{6}{qu1003 2}
{27}{J'ai autre chose qu'à courir après des pelles.}{}{1}{}{6}{qu1003 1,al-10 }
{28}{C'est vrai, vous avez la pelle ?}{}{}{}{}{}
{29}{Oui, tenez.}{}{1}{}{6}{in5801 ,qu1003 4,rp1003 }
...
J'ai mis le même numéro 1003 pour la quête et la réputation pour faciliter la gestion. Mais ils peuvent être différents.

Rappel des icônes

sélection Type de sol Décors Détruire Bâtiments Portes
Lumières  Trous êtres vivants Coffres Armes
Fenêtres Façades Armures Cheminées Objets Téléportation
Munitions Ingrédients Or Ecrits Tile Script Clé
Parchemins Pièges Blocking Tile    

Les lits, Dormir

Par défaut vous ne pouvez pas dormir dans un lit. Il faut lui assigner un script ou il y aurait :
Return and skip defaut
Il existe un script standard, le 1893 qui le fait.

Si dans un script vous ne voulez pas que le joueur dorme : Return and run defaut


Restreindre l'utilisation d'un objet

Vous voulez limitez l'utilisation d'un objet, du style : "Vous n'êtes pas assez fort pour ouvrir cette porte" ou "Vous n'êtes pas assez intelligent pour lire ce livre"...

Il faut un script et un dialogue associé. Je vous rappelle qu'ils doivent avoir strictement le même nom, seule l'extension change. Prenons l'exemple d'une porte.

Contenu du fichier dialogue

{1}{Je ne suis pas assez fort pour ouvrir cette porte. Il faudrait avoir au moins 10 dans cette discipline.}{Je ne suis pas assez forte pour ouvrir cette porte. Il faudrait avoir au moins 10 dans cette discipline.}{}{}{}{}
Le numéro de la ligne (1 ici) doit être la même que celle indiquée dans le script. Et le texte sert à mettre un message explicatif à l'intention du joueur.

Contenu du fichier script

0. stat 0 of Triggerer: store in Counter 3

1. IF 10 <= Counter 3
THEN return and RUN default

2. float line 1 above Triggerer

3. return and SKIP default

Ligne 0 :

Met la stat 0 (force) dans le counter 3 (j'utilise le compteur 3 de l'objet pour éviter d'utiliser une variable). Pourquoi transférer dans une variable, parce que je n'ai pas trouvé de moyen de tester directement la stat. (liste des stats)

L'action à choisir est stat (num) of (obj): store in (num)

Ligne 1 :

Teste si la force est supérieure ou égale à 10. Ben, oui, en test on n'a pas >= donc on inverse sinon faut faire un goto No de ligne et un Else (puis je n'aime pas les goto No de ligne )

Si le test réussi on laisser se réaliser l'action par défaut.

Le test à sélectionner est (num) <= (num)

Ligne 2 :

Affiche la ligne 1 du dialogue associé, à l'intention du joueur, pendant quelques instants (le temps qui sorte de l'inventaire s'il y est).

L'action à choisir est float line (num) above (obj)

Ligne 3 : on shunte l'action par défaut.

Vous pouvez bien sûr utiliser ce même script pour plusieurs portes.



Pour éviter de plaire plusieurs scripts, si vous vous voulez restreindre d'autres objets, utilisez la même structure, modifiée ex :

Contenu du fichier dialogue

{1}{Je ne suis pas assez fort pour ouvrir cette porte. Il faudrait avoir au moins 10 dans cette discipline.}{Je ne suis pas assez forte pour ouvrir cette porte. Il faudrait avoir au moins 10 dans cette discipline.}{}{}{}{}
{2}{Je ne suis pas assez intelligent pour lire ce livre. Il faudrait avoir au moins 10 dans cette discipline.}{Je ne suis pas assez intelligente pour lire ce livre. Il faudrait avoir au moins 10 dans cette discipline.}{}{}{}{}
{3}{Je ne suis pas assez adroit pour ouvrir cette grille. Il faudrait avoir au moins 12 dans cette discipline.}{Je ne suis pas assez adroite pour ouvrir cette grille. Il faudrait avoir au moins 12 dans cette discipline.}{}{}{}{}

Contenu du fichier script

0. stat 0 of Triggerer: store in Counter 3

1. IF Counter 0 == 1
THEN stat 4 of Triggerer: store in Counter 3

2. IF Counter 0 == 2
THEN stat 1 of Triggerer: store in Counter 3

3. counter 2 = 10

4. IF Counter 0 == 2
THEN counter 2 = 12

5. IF Counter 2 <= Counter 3
THEN return and RUN default

6. IF Counter 0 == 0
THEN float line 1 above Triggerer

7. IF Counter 0 == 1
THEN float line 2 above Triggerer

8. IF Counter 0 == 2
THEN float line 3 above Triggerer

9. return and SKIP default

Ici on se sert de counter 0 pour identifier l'objet, et de counter 2 pour mettre la valeur à tester.

En ligne 0 et 3 il n'est pas utile de faire un test (2 pour la 3).

Dans WorldEdit, lorsque vous lierez le script à l'objet (en bas à droite dans counter 0):
- pour la porte rien mettre ou mettre 0.
- pour le livre mettre 1.
- pour la grille mettre 2.
On a mis, pour la porte, la valeur 0 plutôt que débuter à 1. Car, si on avait déjà un script et qu'on le modifie. On évite ainsi de retrouver et modifier le counter 0 des objets déjà liés.

Conseil : utilisez scripted_beta26 pour modifier des scripts. Vous pouvez faire des copier/couper coller (avec le menu contextuel : clic droit) et modifier facilement le valeurs. Mais ne créez pas de script avec, il y a des bugs.


Les options (Flags) des objets



OffCache l'objet au joueur (en vert dans l'éditeur).FlatMet l'objet à plat au sol, comme un tapis.
See Throughvoir à traversShoot Throughtirer à travers
No Blockpas de blocking tileClick ThroughObjet inclicable
Don’t LightEnlève toutes les lumières affectés à l'objet et le rend éclairé. StonedDonne à l'objet l'apparence de pierre (niveau de gris)
Hit Pointsconstitution : Nb de points de vie de l'objet. Dark ShadowMet de l'ombre à la place de la lumière
Indoor AmbientLumière de type intérieur Outdoor AmbientLumière de type extérieur (varie selon le soleil)
AloofCe PNJ ne tiendra pas compte de la beauté ni de la race du joueur AnimalPNJ est un animal. Il ne pourra ouvrir les portes ni lancer de sorts.
Bustedéclaté : pour les fenêtres, portes et contenant, sont ouverts, sans serrures. Can Use BoxL'objet peut être utilisé avec l'icône main (dans l'inventaire)
FenceReceleur : le personnage peut acheter des objets volés (marqués Stolen) Hand Count Fixedrend obligatoire les flags : objet à un main ou à deux mains
HexedRend l'objet mauditIdentifiedRend l'objet déjà identifié
Marks TownmapCet objet sera inclus dans la TownMap MuteMuet : rend le PNJ muet ou pas



Liste des numéros de stat

Je vous donne la liste complète mais je ne traduis que celles que j'ai testé

0 force1 dextérité2 constitution3 beauté4 intelligence
5 perception6 volonté7 charisme8 carry weight9 damage bonus
10 ac adjustment11 speed12 heal rate13 poison recovery rate14 reaction modifier
15 max followers16 magic tech aptitude17 level18 experience points19 alignement
20 fate points21 unspent points22 magic points23 tech points24 poison level
25 age26 gender(0=female; 1=male)27 race (0 human, 1 dwarf, 2 elf, 3 half elf, 4 gnome, 5 halfling, 6 half orc, 7 half ogre, 8 dark elf, 9 ogre, 10 orc)



Les (Obj) possibles

Dans le voisinage = à proximité, sur l'écran près de l'attaché (l'élément concerné par script)

Any Container in VicinityN'importe container dans le voisinage
Any Follower (single player)N'importe qui dans le groupe
Any Item in VicinityN'importe objet dans le voisinage
Any Portal in VicinityN'importe Portail dans le voisinage
Any Scenery in VicinityN'importe décors dans le voisinage
Anyone in Group (PC and NPC, single player)N'importe qui dans le groupe du déclencheur, lui compris
Anyone in Party (PC only, multiplayer)N'importe qui de l'équipe du déclencheur, lui compris
Anyone in Team (PC and NPC, multiplayer)N'importe qui dans le groupe du déclencheur, lui compris
Anyone in VicinityN'importe qui dans le voisinage
AttacheeL'objet, le script est attaché à ? (can be NULL for scripts on tiles)
Current Looped ObjectL'objet en cours (associé avec l'instruction FOR)
Every Container in VicinityTous les décors du voisinage
Every Follower (single player)Tous les compagnons du déclencheur
Every Item in VicinityTous objet dans le voisinage
Every Portal in VicinityTous porte, portail... dans le voisinage
Every Scenery in VicinityTous décors dans le voisinage
Everyone in Group (PC and NPC, single player)Tous le groupe
Everyone in Party (PC only, multiplayer)Toutes l'équipe
Everyone in Team (PC and NPC, multiplayer)Toutes le groupe et l'équipe
Everyone in VicinityTous le monde dans le voisinage
Extra Objectl'objet (supplémentaire ?) mentionné dans le script en cours d'exécution.
Local Objectthe local object indexed by the associated number
PlayerLe joueur (joueur concerné en multijoueur)
TriggererCelui qui déclanche le script



Placez votre Start Location

Pour lancer votre mod dans Arcanum, la première chose à faire est de désigner un endroit où votre personnage doit commencer.

Version 1.0.7.4 : Pour ce faire, cliquez droit où vous souhaitez voir apparaître votre PJ et choisissez ‘set as start location’.

version 1 : si vous quittez WorldEd et lancez Arcanum, il freezera probablement. Parce que vous devez modifier quelques trucs en plus.

Cherchez, dans le répertoire de votre module (quelque chose du genre "c:\jeux\Arcanum\modules\NOM DU MOD"), le répertoire Rules, et ouvrez le fichier maplist.mes avec Notepad ou tout autre éditeur de texte (évitez Word quand même). Vous devriez associer les fichier '.mes' avec Notepad, parce que vous allez en ouvrir pas mal.

Vous devriez, dans ce fichier maplist.mes, voir ce qui suit :
//
// Map List Info
//
// Types:
// START_MAP -- This is the starting map (there should only be one of these!)
// SHOPPING_MAP -- This is the shopping map used in character creation. If not
// present, then this process is skipped during character creation.
// Starting Location (Convert for World by:)
// (54624 - 32) / 64 = 853
// (45408 - 32) / 64 = 709
// Area: <#> -- This is the Index # in area.mes that the map maps to
// List of valid maps for game & Starting X/Y position
{5000}{ShopMap, 31, 29, Type: SHOPPING_MAP}
{5001}{start, 2048, 2048, Type: START_MAP, WorldMap: 0}
Nous devons changer la ligne 5001. Tout d'abord, "start" devrait être le nom de votre carte. Dans cet exemple, ça sera "village" (entrez-le EXACTEMENT comme il apparaît dans WorldEd. Si vous n'êtes pas sûr(e) de vous, faites File -> Open, et regardez comment est écrit le nom de la carte). Les deux chiffres suivants sont le point de départ du joueur dans le jeu. Retournez dans WorldEd et chargez votre carte.

En vue isométrique pointez un endroit devant la petite maison en bois. Choisissez un endroit que vous pensez adapté au point de départ du joueur. En d'autres mots, une partie d'herbe vide. Lorsque vous bougerez la souris, deux nombres vont changer sur la gauche. Ces nombres sont les coordonnées où vous pointez.

Après avoir bougé le curseur là où vous voulez, écrivez les deux chiffres quelque part. Reprenez Notepad, et remplacez les deux nombres avec ceux que vous avez choisit. Dans mon cas la ligne :
{5001}{start, 2048, 2048, Type: START_MAP, WorldMap: 0}
Deviendra :
{5001}{Village, 76, 59, Type: START_MAP, WorldMap: 0}
Sauvez le fichier "maplist.mes", et fermez-le. Retournez à WorldEd et faites File/Compress module. Cela créera un fichier .dat dans le répertoire Arcanum\modules. Ce sera le fichier que vous distribuerez sur Internet (lorsque vous aurez fini bien sûr). Note : vous n'avez pas besoin de faire ça pour pouvoir lancer le mod, mais ça facilite le transfert sur Internet puisque vous n'avez ainsi plus qu'un fichier.

type de dommage

Type de dommage : 0 normal1 poison2 électrique3 feu4 fatigue





Damage (obj) for (num) points of type (num) damage : Applique (num) points de dommage de type (num) à (obj)


Mon module

Mon premier module n'est pas fini mais vous pouvez déjà bien vous amuser. Malgré ma connaissance du scénario , je mets entre 4 et 5 heures pour le finir.

Je le mets aussi en ligne pour le faire tester par les bonnes âmes. Mon adresse christiansarda@free.fr

D'autre part, je commence à avoir marre de le teste et le retester car comme je l'ai dis plus haut c'est chaque fois 4-5 heures. De plus, je viens d'avoir NeverWinter (j'aimerais avoir aussi le temps d'y jouer ). Et puis après y avoir passé un mois et demi, j'ai envie de faire autre chose. Donc la suite du module ce n'est pas avant fin févier 2003.

Le Module est en 3 versions :
L'installation :

Vous devez absolument copier les fichiers suivants :

fichierrépertoire
gamelevel.mes..\arcanum\data\rules
gamelevelname.mes..\arcanum\data\mes
InventSource.mes..\arcanum\data\rules
InventSourceBuy.mes..\arcanum\data\rules
addon01.dat..\arcanum\data\modules


Fichier non obligatoire : description.mes dans ..\arcanum\data\mes

..\arcanum\data\rules signifie que vous devez copier le fichier dans sous-répertoire rules qui est dans le sous-répertoire data qui est lui même dans le répertoire où est installé Arcanum. La copie de ces fichiers ne gêne aucunement le module de base et les autre modules qui utilisent les paramètres de base, j'ai seulement ajouté des options.

Si vous avez une version récente de Winzip copiez Add01_mod.zip dans le répertoire d'Arcanum et dézipez-le.

Signification des fichiers:

InventSource.mes et InventSourceBuy.mes : c'est en fait ce que vendent et achètent les gens. Ils sont indispensables car ils évitent de passer son temps à dormir en attendant que le truc soit en vente ou que l'on veut bien vous l'acheter. gamelevel.mes et gamelevelname.mes sont les paramètres d'évolution de vos compagnons. Sans ces fichiers, ils n'évolueront pas. description.mes : description des objets. Je n'ai fait que modifier certains noms pour qu'ils soient plus "parlants".

Attention : Pour charger le module, il faut aller dans option choisir le module puis cliquer sur retour. Ne vous affollez pas s'il y a 30 secondes à 3 mn d'attente (suivant la machine) çà le fait pour tous les modules. De même, n'ayant mis d'introduction pour vous faire patienter, vous aurez un écran noir pendant 10 secondes à 1 mn, après créé votre personnage.

Associer un type de fichier avec notepad sous Windows 9x/ME

Pour la méthode reportez-vous à Association de fichiers

Un plus serait de rajouter la possibilité d'aperçu rapide pour les fichiers que vous n'avez pas à modifier. Pour cela, après avoir créé l'association, dans l'Explorateur de Windows, Outils/Options Dossiers, onglet Types de fichiers, chercher fichier MES, double cliquez dessus (pour entrer dans les propriétés) et cochez Permettre l'aperçu rapide puis sur OK (il faut que l'aperçu rapide soit installé).