Cours de Scripts pour les Quiches. Leçon Une.

Répondre
Partager Rechercher
Par Celowin mailto:james.foxglove@verizon.net
traduit par Amaranthe mailto:amaranthe@free.fr

Introduction
Le but de cette série de leçons, est d'apprendre a se servir des scripts a n'importe qui. Cette première leçon est très simple, et quiconque ayant déjà codé devrait pouvoir s'en passer. Maintenant, il est toujours possible d'y apprendre un truc ou deux

Je ne m'étendrais pas en détail sur le fonctionnement du toolset, ceci est suppose comme déjà connu.

Ouvrez le Toolset et créez un nouveau module, que nous appellerons 'Test Module'. Créez une nouvelle zone, que nous appellerons 'Test Area 001'. Utilisez la taille et le tileset qui vous plait, cela n'a aucune incidence sur les scripts. Préférez cependant une taille pas trop grande, il vous sera plus facile de vous y retrouver et cela prendra moins de temps à sauvegarder/charger pour les innombrables tests que vous devrez forcément faire.

Placez un npc sur votre carte. Donnez-lui l'apparence que vous voulez.
Puis :
- Clic droit sur le npc.
- Choisissez l'option de menu 'Propriétés' ( properties )
- Changez le tag du NPC en CHANTEUR
- Ouvrez l'onglet des scripts.
- Il y a des scripts par défaut a chaque option. Cliquez sur chacun et supprimez-les.
- Cliquez sur le bouton 'Edit' a coté du script sur le 'On Heartbeat'.
- Tapez le script suivant en respectant les minuscules et les majuscules.

Code PHP:

void main()
{
    
ClearAllActions();
    
ActionSpeakString("Ils sont dans les vignes les moineaux...");
    
ActionWait(1.5);
    
ActionSpeakString("Ils ont manges les raisins...");
    
ActionWait(1.5);
    
ActionSpeakString("Ils ont craches les pepins...");
    
ActionWait(1.5);

- Je vous conseille de tapez le texte plutôt que de le copier/coller. Vous apprendrez mieux ainsi. Et si vous faites une erreur, vous n'en apprendrez que plus.
- Cliquez sur 'Save As' et appelez le tm_chanteur_hb
- Vérifiez que le résultat ressemble à : "0 Errors. ‘tm_singer_hb’ Compiled successfully." Sinon c'est que vous avez du faire une erreur quelque part... revérifiez !
- Fermez l'éditeur de script.
- Cliquez sur "OK" dans la fenêtre du NPC.
- Sauvegardez votre module.
- Relancez le jeu et choisissez 'Other Modules' pour vérifier ce que vous avez fait.
- Votre npc devrait chanter cette ritournelle... encore et encore...


Analyse.
Tentons maintenant d'explique ce que nous venons de faire. Ceci sera fait par le biais de questions / Réponses, en tentant d'imaginer les questions que vous pourriez vous poser.

Pourquoi l'appeler 'Test Module' ?
Cela n'a en fait aucune importance. Le seul intérêt est de le distinguer facilement des autres dans la liste des modules proposés. Pour cela, il est préférable que tous vos modules ne commencent pas par 'Module'...

Pourquoi avoir appelé la zone 'Test Area 001' ? Est-ce que le nom par défaut n'était pas suffisant ?
Pour ce petit module de test, cela ne devrait effectivement pas prêter à conséquences. Mais c'est une bonne habitude à prendre que de renommer les choses que l'on customise, afin que chacune aie un nom unique et non équivoque. Si tout le monde utilise 'Area 001', alors le transfert de zones d'un module a l'autre risque d'être problématique.

Pourquoi avoir donné au npc le tag CHANTEUR ? Pourquoi l'avoir mis tout en majuscules ?
Il est préférable pour des raisons internes au programme, de mettre les tag en majuscules. Vous pourriez très bien ne jamais avoir de problèmes, mais c'est quand même une bonne habitude à prendre.
Je recommande de la même manière de donner à chaque créature ou npc un tag clair et non équivoque. CHANTEUR décrit parfaitement le npc. Il est maintenant plus simple de s'y référer dans un script plus compliqué.
Les tags doivent également rester court. Evitez les tags de plus de 8 caractères.

Pourquoi avoir supprimer tous les scripts par défaut ? A quoi servent-ils si on doit les détruire ?
Les scripts par défaut définissent tout un tas de comportements dont nous n'avons que faire pour le moment. Nous les avons supprimés afin qu'ils n'interfèrent dans notre test. Nous souhaitions que notre npc chante, et rien d'autre.
Nous verrons dans de prochaines leçons comment se servir des scripts par défaut.

Pourquoi avoir placé notre script sur le 'On Heartbeat' ? Pourquoi est ce qu'il y a tant de choix ?
Chacun de ces choix, définit un moment ou le script est appelé. Le 'On Heartbeat' appelle le script a chaque battement de cœur, soit toutes les 6 secondes. C'est pourquoi le chanteur ne s'arrête jamais. Toutes les six secondes, il recommence sa chanson.
Chacun des autres choix a son utilisation, en fait, le "On Heartbeat' est celui qui devrait être le moins utilisé. Trop de scripts lancés toutes les six secondes devraient rapidement mettre votre ordinateur sur les rotules.

Qu'est ce que ce "void main()" ?
Ce petit bout de code n'a l'air de rien, mais essayez donc de l'oublier et vous verrez son importance. Je vais essayer de vous l'expliquer, même si cela ne sera sans doutes clair qu'après les autres chapitres.
Les scripts sont codés en utilisant des 'fonctions', qui disent au programme ce qu'il doit faire. Certaines fonctions sont déjà écrites, et nous ne faisons que les utiliser. Ecrire un script revient en fait à créer une nouvelle fonction. Cette ligne est en quelque sorte une description de cette fonction.
Premièrement le mot "void". Qui peut signifier néant. Cela indique au script la "réponse" qui va revenir de la fonction. Notre chanteur fait des choses, mais il ne calcule rien. Ce "néant" indique que la fonction ne ramènera aucune réponse.
Le mot "main" qui signifie principal indique que cette fonction est la principale. Nous pouvons en écrire d'autres, et nous le ferons, mais ce mot indique l'endroit ou le script commencera.
Entre les parenthèses se trouvent les arguments, ou paramètres, ou encore informations qui sont donnés et nécessaires à la fonction pour qu'elle s'exécute. Dans ce cas, notre script se suffit à lui-même et n'a besoin d'aucunes informations.

Qu'est ce que les { et } ?
Ils sont utilisés pour délimiter les sections du script et les fonctions. Cela signifie que tout ce qui est entre nos deux { } fait partie de notre fonction "main".

Pourquoi est ce que chaque ligne se termine par un ; ?
Principalement pour indiquer au script que la ligne se termine. Certaines instructions sont parfois trop complexes pour tenir sur une seule ligne. Il est ainsi possible de les écrire sur autant de ligne que l'on veut. Le programme les considérera comme une seule et même ligne tant qu'il ne tombera pas sur un ;

A quoi sert le ClearAllActions() ?
En fait dans ce cas, a rien
C’est une garantie.
Chacune des autres lignes du script est une commande. Le npc va les exécuter une par une, en prenant bien soin de finit la première avant de passer à la suivante.
Mais, notre fonction est placée dans le "On Heartbeat" et va donc être appelée toutes les 6 secondes. Mais nous avons 7 actions. Que se passe t'il s’il a seulement le temps d'en faire 3 en 6 secondes ? Il reste encore 4 actions à faire et on lui redemande d'en faire 7... ce qui lui en fait 11 maintenant... Cela va aller en augmentant, et au bout d'un moment, cela risque de poser problème.
Il y a de meilleurs moyens de régler ces problèmes. Mais pour l'instant, contentons-nous de dire au npc d'oublier tout ce qu'il lui reste à faire. C'est ce que fait le ClearAllActions().
Si vous voulez expérimenter, éditez le script et changez les valeurs a l'intérieur des commandes ActionWait. Remplacez par exemple le 1.5 par 3.0
Pendant qu'on y est. Le ClearAllActions est une fonction, comme notre main. Une fois de plus, le fait qu'il n'y ait rien entre les parenthèses signifie qu'on ne passe aucune information a cette fonction. Par contre, la fonction ActionWait, elle a besoin d'informations, en l'occurrence le temps qu'il va falloir attendre. D'où la présence d'un nombre a l'intérieur des parenthèses...

Et pour les autres lignes du main ?
Ce sont toutes les instructions expliquant au npc ce qu'il doit faire. Elles sont assez explicites, mais je vais quand même détailler un peu.
ActionSpeakString fait dire au npc quelque chose. Ce quelque chose étant le texte passé en paramètre a la fonction. Ce texte est une Chaîne de caractères ( String ), et doit être encadré par des ".
ActionWait fait asseoir et attendre le npc, le nombre de secondes précisé. ActionWait(0.5) fait attendre le npc pendant 0.5 secondes entre chaque phrase.

Pourquoi nommer le script tm_chanteur_hb ?
Une fois encore, vous pouvez l'appeler comme bon vous semble, du moment que vous vous en souvenez.
"tm" signifie ici Test Module. Tous nos scripts pour ce module commenceront ainsi.
"chanteur" signifie que ce script s'applique au npc chanteur. Il est préférable de mettre les noms de scripts en minuscules, et je vous recommandais de garder les noms de tags sur 8 caractères au plus, de façon justement a ce qu'on puisse les réutiliser dans les noms de scripts sans que cela soit gênant.
"hb" signifie que le script concerne le "On Heartbeat".

Pourquoi est ce que cette leçon n'est pas plus longue ?
Je trouve pour ma part qu'elle est suffisamment longue. Elle le fut à écrire au moins. De plus je ne souhaite pas vous noyer sous des tonnes d'informations. Laissez-moi quelques jours, et vous aurez votre deuxième leçon.

Amaranthe.
N'hesitez jamais a poser des questions...

Si ces lecons ne sont pas assez claires... ou si vous voulez des complements de formation.

Cours particuliers a domiciles possibles... joindre une photo récente et lisible a fin de détermination du tarif
Citation :
Provient du message de Amaranthe
Cours particuliers a domiciles possibles... joindre une photo récente et lisible a fin de détermination du tarif
Une photo lisible? Tu veux que je fasse une photo de mon CV c'est ca?

Non parce que j'ai pas une gueule qui se lit moi :bouffon:
Citation :
Provient du message de Amaranthe
N'hesitez jamais a poser des questions...

Si ces lecons ne sont pas assez claires... ou si vous voulez des complements de formation.

Cours particuliers a domiciles possibles... joindre une photo récente et lisible a fin de détermination du tarif
franchement c tres claire merci bcp
Excellent!! Continue comme ça!
Citation :
Provient du message de turk182
Merci beaucoup pour au nom de toutes les quiches


ca le fait bien
vivement la suite
Mais non, on dit une ouiche lorraine (cf la classe américaine, ou le grand détournement)

C'est une très bonne idée. C'est très bien expliqué et je dirais même un peu trop détaillé et c tant mieux.

Amaranthe
Wink
je t aime



j ai 2 jours sur ce site et deja j aime tout le monde,
toi et les autres !!!

HOUAIIIII je vous aime toussssss !!!



premiere etape, imprimer le fichier aide pour les naz (en francais)!!!

FAIT

deuxieme etape,aller plus loin dans les recherche et trouver comment faire discuter les PNJ et PJ.(en francais)

FAIT

troisieme etape,attendre par gourmandise la suite et pas dormir de la nuit et toujours regarder le chat ....

JE LE FAIT.....

mon histoire est simple.

y a longtemps,comme un con, je me leve, lave, brosse les dents,
et par en chasse (les filles)

2 ans apres un homme (un peu gros)me dit ca:
mr voulez vous prendre pour epouse mlle ici bla bla bla !!!

3 ans apres une equipe cree un jeu nomé NWN .

je l achete....je joue...je fini ...je pleure...je recommence...

ET LA ....ma grosse, me dit : tu joue encore a ton jeu pourri !!!!

....j ai bien failli lui faire bouffer toute la vaisselle...en plus elle desire partir en vacance....non mais, elle est folle...

now,je veux divorcer et devenir un jouet pour vous ou la chose,une bete de sexe,ou tout ce qui vous passera par la tete !!
je sais lancer la balle et la ramener,je dis oui a tout et demande en echange une SEUL CHOSE !!!! APPRENDRE APPRENDRE encore et encore !!!!

qui est preneur ?????

merci a tous pour l aide que vous nous apportez !!!
oh nom de toute les tanches de mon especes. oh ! Combien rependu en ce bas monde et qui se confondent et se multiplies parmis les quichent et autres chevres du genres, Milles merci !
Enfin, je le répète souvent mais vous pouvez même utiliser le filtre des fonctions (en haut à droite) pour rentrer tous les accents que vous voulez, ça marche très bien, pas la peine d'ouvrir un autre programme pour ça, un copier-coller à partir de là et c'est bon !
Ok merci je pensais qu'on pouvait pas mettre d'accents vu que quand on fait une sauvegarde dans le jeu on peut pas mettre de symboles donc je me disais ça doit être normal quand j'essayais bêtement de mettre des accents dans l'éditeur de script.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés