Skip to content
This repository has been archived by the owner on Jul 24, 2020. It is now read-only.

Principe des commandes

Xavier Van de Woestyne edited this page Jul 20, 2017 · 26 revisions

Le principe des commandes est sans aucun doute une des plus grosses parties de ce document de référence. C'est grâce aux commandes que le maker peut s'affranchir de beaucoup de contraintes de RPG Maker.

Qu'est ce qu'une commande ?

Typiquement, une commande n'est rien de plus qu'une action :

  • Pouvant renvoyer une valeur (par exemple, les coordonnées d'un évènement)
  • Pouvant effectuer quelque chose (par exemple, effacer une image)
  • Pouvant effectuer quelque chose et renvoyer quelque chose

Taxinomie d'une commande

Une commande est référencée par son nom. Elles sont généralement utilisées dans des appels de scripts mais peuvent être utilisées dans des scripts. Il existe plusieurs manières d'appeler une commande :

  • command(:nom_de_la_commande, arg1, arg2, etc.)
  • cmd(:nom_de_la_commande, arg1, arg2, etc.)
  • c(:nom_de_la_commande, arg1, arg2, etc.)
  • Command.nom_de_la_commande(arg1, arg2, etc.)
  • nom_de_la_commande(arg1, arg2, etc.) : uniquement dans un appel de script.

Les premières formes permettent aux commandes d'être accessible depuis n'importe quel script (si elles le permettent).

La dernière n'est utilisable que dans les appels de scripts (dans un événement). Comme les commandes ont été pensées pour n'être utiles que dans des appels de scripts, dans la documentation, j'aurai l'habitude de n'utiliser que la dernière forme.

Maintenant, si vous souhaitez utiliser une commande RME dans l'écriture d'un script, libre à vous de choisir votre syntaxe préférée parmi les quatre premières.

Usage de la documentation

Toutes les commandes sont référencées dans la documentation (disponible ici ) et sont organisées par catégories. Chaque commande est décrite formellement.

Arguments d'une commande

Une commande peut prendre plusieurs arguments (ou aucun). Si une commande ne prend aucun argument, il n'est pas nécessaire d'utiliser () en fin de commande.

Par exemple la commande mouse_x, qui renvoie la position X de la souris n'en demande aucun, je peux donc tout à fait faire V[1] = mouse_x pour attribuer la position X de la souris au moment de l'appel à la variable 1.

L'action d'attribuer une valeur à un argument est souvent nommée "passer x en argument". Les arguments ont des types de données différents et ces types sont référencés dans la documentation.

Voici les types que l'on peut trouver :

Type Description
:Fixnum il s'agit d'un entier soit n'importe quel nombre entier de - l'infini à + l'infi. (1, 10, -7000 par exemple). Il s'agit du type d'argument le plus fréquent.
:Float il s'agit de n'importe quel nombre à virgule
:String il s'agit d'une chaîne de caractères. Les chaînes de caractères doivent toujours être placées entre guillemets ou entre apostrophes. (Par exemple "chien" est valide, mais 'chat' aussi).
:Boolean il s'agit de true (pour vrai, ou activé) ou false (pour faux ou désactivé). Une commande attendant un booléen peut donc prendre un interrupteur (local) à la place de true ou false
:Symbol il s'agit d'un mot préfixé de :, par exemple :chien ou :chat. En général, quand une commande attend ce genre de paramètre, la liste des symboles autorisés est spécifiée dans la documentation. Les symboles sont aussi très souvent utilisés pour référencer une touche du clavier ou de la souris.
:Tone il s'agit d'une teinte, on conseillera d'utiliser la commande tone(r, v, b, g) qui génère une teinte pour la passer en argument.
:Color il s'agit d'une couleur, on conseillera d'utiliser la commande color(r, v, b, a) qui génère une couleur pour la passer en argument.
:Selector il s'agit d'une construction pour sélectionner plusieurs évènements d'un coup, les sélecteurs sont décrit précisément ici

Arguments facultatifs

Un argument facultatif est un argument qui possède une valeur par défaut. Par conséquent, il n'est pas obligatoire de spécifier cet argument, si on ne veut pas le modifier.

Dans la documentation, les arguments facultatifs sont précédés d'un "*".

Par exemple, imaginons cette commande :

une_commande(a, b, c, *d, *e, *f)

a, b et c sont des arguments obligatoires.
d, e et f sont des arguments facultatifs.

Je peux donc utiliser cette commande de différentes manières :

  • une_commande(truc, bidule, chouette) et les arguments de d, e, f prendront leur valeur par défaut
  • une_commande(truc, bidule, chouette, machin) et les arguments de e, f prendront leur valeur par défaut
  • une_commande(truc, bidule, chouette, machin, chose) et l'argument f prendra sa valeur par défaut
  • une_commande(truc, bidule, chouette, machin, chose, bilou) et aucune valeur par défaut ne sera utilisée.

Il est strictement impossible de jouir de la valeur par défaut de "e" si on veut spécifier la valeur de "f". Cependant pas de panique, la documentation spécifie chaque fois la valeur par défaut que prennent ces arguments facultatifs.

Exemple de lecture de la documentation pour une commande

Prenons la commande picture_show comme exemple (parce qu'elle est longue, et utilise plusieurs types d'arguments !)

picture_show(id, name, *x, *y, *origin, *zoom_x, *zoom_y, *opacity, *blend_type)

Affiche une image à l'écran

Nom Type Description
id Fixnum ID de l'image
name String Nom de l'image (sans l'extension)
*x Fixnum Position en X de l'image (par défaut 0)
*y Fixnum Position en X de l'image (par défaut 0)
*origin Fixnum Origine de l'image, 0 = Haut gauche, 1 = centré, [x,y] = orienté autours de X,Y, par défaut, zéro
*zoom_x Fixnum Zoom sur la largeur de l'image par défaut 100 (pour 100%)
*zoom_y Fixnum Zoom sur la hauteur de l'image par défaut 100 (pour 100%)
*opacity Fixnum Opacité de l'image, par défaut 255 (de 0 à 255)
*blend_type Fixnum Mode de fusion, par défaut 0, 0=Normal, 1=Addition, 2=Soustraction

On voit que ses arguments minimes sont id et name. Donc pour afficher l'image "lol.png", en tant qu'image 1, il me suffit de faire : picture_show(1, "lol").

Maintenant voyons plusieurs cas de figure :

  • picture_show(1, "lol", 10, 20) > > Affichera l'image 1, le fichier "lol", à 10 pixels de la gauche et 20 pixels du haut
  • picture_show(1, "lol", 10, 20, 1)
    La même chose, sauf que l'image sera positionnée par rapport à son centre (origine : 1 = centré)
  • picture_show(1, "lol", 10, 20, [10, 10])
    Cette fois ci, l'origine de l'image ne sera ni le point Haut/gauche, ni le centre, mais précisément le point de coordonnées [10, 10].
    Si la taille de l'image fait 30*40 px, il est possible de prendre comme origine le point Bas/gauche : [0,40], le point Haut/droite : [30,0], ou typiquement... n'importe quel point. Très pratique !
  • picture_show(1, "lol", 10, 20, 0, 100, 84, 220, 1)
    Cette fois on utilise tous les paramètres : l'origine de l'image sera son point Haut Gauche (0), elle fera toute sa largeur (zoom_x = 100) mais seulement 84% de sa hauteur (zoom_y = 84), elle aura une opacité de 220 (donc sera légèrement transparente) et son mode de fusion sera l'addition (blend_type = 1).

Arguments particuliers

En général, l'annotation de type d'un argument donne une information limitée. C'est très visible dans le cas des arguments :Fixnum. Donc voici une spécification sur certains arguments entiers :

  • Lorsqu'une opacity est attendue, la valeur doit être comprise en 0 (transparent) et 255 (totalement opaque).
  • Lorsqu'un blend(_mode/type) est attendu, la valeur peut être 0 (normal), 1(addition) ou 2(soustraction).
  • Lorsqu'un zoom est attendu, la valeur doit être comprise entre 0 et 100.
  • Lorsqu'une speed est attendu, le nombre au négatif correspondra au sens opposé (par exemple pour une rotation dans le sens des aiguilles d'une montre la vitesse sera positive et pour tourner dans l'autre sens, la vitesse sera négative).

Commande renvoyant des valeurs

Il existe un certains nombre de commandes qui renvoient des valeurs (par exemple, mouse_x et mouse_y), ces commandes peuvent être liées à une variable (ou une variable locale, ou aux labels), de même qu'elles peuvent tout de suite construire des expressions.

Par exemple : V[1] = mouse_x. Ou encore Si script : mouse_x > 3.

Les commandes qui renvoient des booléens (true ou false) peuvent directement être utilisées dans une expression ou être liées à des interrupteurs (ou interrupteurs locaux), par exemple S[1] = pixel_in_picture?(1, mouse_x, mouse_y) ou encore Si script : pixel_in_picture?(1, mouse_x, mouse_y).

Commandes renvoyant des tableaux

Il existe certaines commandes qui renvoient des tableaux. Ces commandes sont un peu particulières à manipuler. Par exemple, la commande actor_armors(acteur_id), renverra un tableau de toutes les indexes des armures équipées par un héros. On peut connaître la taille d'un tableau au moyen de la commande standard length(tableau) et accéder à une cellule particulière au moyen de la commande standard get(tableau, index_de_la_cellule).

Conclusion

Les commandes constituent la brique centrale de RME, elles permettent des actions très complexes en Event Making classique. Pour en voir certains usages, je vous invite à vous rendre sur la page Biloucorp qui en présente quelques usages au travers de tutoriels ludiques :) (Ces tutoriels ont étés rédigés pour l'Event Extender mais sont à priori compatible avec RME).

Clone this wiki locally