Tutoriel - Script de conversation d'IndeedPete
J'ai fait un mini tutoriel en français comprenant les fonctionnalités de base du script, mais voilà le fil officiel en anglais si vous voulez pousser plus loin:http://forums.bistudio.com/showthread.p ... ost2655661
Deux éléments sont nécessaires pour faire fonctionner le script de conversation d'IndeedPete: le fichier "conversations.hpp" et une ligne de script sur l'IA qui doit utiliser la conversation.
Il y a beaucoup d'éléments optionnels et je conseille de les laisser de côté tant que vous n'en avez pas besoin.
1) Conversations.hpp
Dans les fichiers de la mission, sous le répertoire "mission" on trouve le fichier "conversations.hpp" qui est automatiquement intégré au fichier description.ext. Aucune edition n'est donc nécessaire de ce point de vue.
Le contenu du fichier "conversations.hpp" est assez simple, voici un exemple complet:
Code : Tout sélectionner
class Conversations
{
class exit
{
condition = "";
expression = "call IP_fnc_closeConversation;";
responses[] = {};
sentences[] = {"Au revoir"};
};
class start
{
arguments[] = {"(name player)"};
responses[] = {"exit"};
sentences[] = {
"Bonjour l'ami, ça va bien?",
"Oui merci %1."
};
};
};
Chaque élément de conversation lui est repris dans une sous-classe à laquelle vous donnerez un nom logique dans le flux de la conversation.
Ici on a deux éléments de conversation:
- start: assez logiquement, ce sera le début de notre conversation.
- exit: qui met fin à la conversation.
- condition: (Optionnel) c'est une ligne de code a exécuter qui permet de savoir si cet élément de conversation est disponible ou pas, elle doit renvoyer true ou false
- expression: (Optionnel) c'est une ligne de code a exécuter lorsqu'on active cet élément de conversation
- arguments: (Optionnel) ce sont des variables utilisables dans les phrases de la conversation. Ici je prend le nom du joueur qui a ouvert la conversation, ça permet de personnaliser un peu.
- responses: C'est la liste des autres éléments de conversation disponibles depuis l'élément courant. Dans le point "Start", le seul élément accessible est "exit", ce qui fait qu'au bas de la page de conversation on n'aura à disposition que le lien: "Au revoir"
- sentences: Ce sont les lignes de conversation qui seront affichées dans la page. On peut en mettre autant qu'on veut, tout en sachant qu'à chaque ligne, on alterne entre le personnage et le joueur. Ca permet de créer une suite de questions/réponses.
Attention! La première ligne est TOUJOURS prononcée par le joueur, c'est la ligne de conversation qu'il a choisie dans la liste.
2) Initialisation de l'IA
On peut initialiser l'IA pour la conversation soit dans l'éditeur, soit dans un script, mais attention, ces lignes de code doivent s'exécuter sur TOUS les clients, sinon la conversation ne sera disponible que sur les clients qui ont été initialisés.
Si on a deux camps, on peut imaginer initialiser l'un ou l'autre contenu de conversation.
Initialisation de la conversation
La première et unique initialisation qui soit obligatoire est celle qui défini l'élément de conversation de départ:
Code : Tout sélectionner
[Journaliste, "start"] call IP_fnc_addConversation;
Le deuxième paramètre est l'élément de conversation de départ. Dans notre cas on a choisi "start". Mais dans un exemple de conversation plus complexe, on pourrait avoir différents éléments possibles.
Rien n'empêche d'appeler cette ligne de code dans un déclencheur par exemple, pour que la conversation ne soit disponible que lorsqu'on a accompli un certain objectif.
Utiliser une photo dans la conversation
Pour que l'écran de conversation soit un peu plus personnalisé, on peut ajouter une photo à la mission qui sera affichée dans l'écran de conversation. Pour lier l'image à l'IA on utilise le code suivant:
Code : Tout sélectionner
journaliste setVariable ["IP_Avatar", "mission\journaliste.jpg"];
3) Message automatique
Vous pouvez souhaiter qu'une IA interpelle un joueur lorsqu'il passe à proximité, pour cela, vous pouvez utiliser la ligne de code suivante dans un déclencheur ou dans un script:
Code : Tout sélectionner
nul = [Journaliste, format["Hé! viens par ici %1!",name player], "DIRECT",3] spawn IP_fnc_simpleSentence;
Et voici un exemple issu de notre Domination: