API Lua update |
0 | ||
Ce topic est une description détaillée, et en français, de l'API Lua de Transformice. Il est basé sur la documentation de Tigrounette : Topic-451587 • À qui s'adresse ce topic ? L'objectif de ce topic n'est pas de vous apprendre à programmer ou de vous apprendre le Lua ! Cela s'adresse donc à ceux qui ont déjà des connaissances minimum en programmation et qui souhaitent se lancer dans les modules Lua sur Transformice, ainsi qu'à ceux un peu plus expérimentés qui ont besoin de savoir comment s'utilise telle ou telle fonction ou event. • C'est quoi cette API ? L'API Lua de Transformice est un ensemble de propriétés, fonctions et events (ou « évènements » en français), utilisables dans des scripts Lua (via la commande /lua), qui permettent d'interagir avec Transformice et donc de créer des minijeux ou des utilitaires. Ces fonctions et évènements sont détaillés dans ce topic. Comme l'API est déjà assez dense, il y aura un post pour les fonctions, et un autre pour les évènements. Ces deux posts seront divisés en plusieurs sections logiques. Pour chaque fonction ou évènement, sont indiqués : - le nom de la fonction ou de l'évènement ; - une description pour comprendre ce que cela fait ; - les arguments : - une description pour savoir à quoi cela correspond ; - leur type (en gris) ; - la valeur par défaut s'il y en a une (en bleu) ; - la valeur de retour s'il y en a une ; - un exemple d'utilisation pour chacun des events ; - d'éventuelles notes supplémentaires. Pour les arguments, les différents types possibles sont : - int : un nombre entier (5, -3, 0xFF77BB, ...) - float : un nombre réel (5.0, -0.12, 12*Pi, ...) - boolean : un booléen, c'est-à-dire true ("vrai") ou false ("faux") - string : une chaîne de caractères ("texte", ...) - table : un tableau de données ({}, {"a", "b", "c"}, ...) - * : n'importe quel type Note : Vous pouvez évidemment utiliser des nombres en hexadécimal pour les paramètres de type int. C'est particulièrement utile pour tous les paramètres de couleur, puisque vous pouvez donc utiliser les mêmes codes couleurs que dans l'éditeur de carte (par exemple, 0xFF0000 correspond à la couleur rouge). • C'est quoi les events ? On dirait des fonctions !? Dans un programme informatique, un évènement (ou event en anglais) est un signal qui se déclenche automatiquement pour pouvoir intercepter les changements d'états de l'environnement. Par exemple, dans les modules Transformice, un certain évènement est déclenché lorsqu'un joueur entre dans un salon, un autre est déclenché lorsqu'un joueur appuie sur une touche, etc. Ces évènements se déclenchent automatiquement, mais pour réaliser une action spécifique lorsque tel évènement particulier se réalise, on dit qu'il faut « écouter » cet évènement. Cela revient à implémenter une fonction (dont le nom et les arguments sont déjà définis pour chaque event disponible) qui s'exécutera automatiquement lorsque cet évènement se déclenchera. Ainsi, vous n'avez donc pas à appeler vous-même ces fonctions, bien que cela soit possible et utile dans certains cas particuliers. Par ailleurs, les codes Lua donnés en exemple pour les events sont fonctionnels et utilisables tels quel. • Il me semble avoir vu une erreur ou un oubli, que faire ? Si vous rencontrez des erreurs, coquilles, oublis ou si vous avez tout simplement des suggestions à faire, n'hésitez pas à nous le signaler ! |
0 | ||
Catégories : - Joueurs - Objets - Paramètres de la partie / du salon - Popups et zones de texte - Modification de l'interface - Gestion clavier / souris - Debug - Fonctions réservées aux développeurs Lua ------------------------------ • Joueurs ------------------------------ tfm.exec.giveCheese (playerName) Donne le fromage à un joueur. - playerName:string → pseudo du joueur -------- tfm.exec.playerVictory (playerName) Fait rentrer un joueur dans le trou. - playerName:string → pseudo du joueur -------- tfm.exec.movePlayer (playerName, xPosition, yPosition, offset, xSpeed, ySpeed, offset) Déplace un joueur. - playerName:string → pseudo du joueur - xPosition:int → nouvelle position, selon l'axe horizontal, du joueur - yPosition:int → nouvelle position, selon l'axe vertical, du joueur - offset:boolean → true pour rajouter xPosition et yPosition à la position actuelle du joueur, false pour la remplacer - xSpeed:int → nouvelle vitesse, selon l'axe horizontal, du joueur - ySpeed:int → nouvelle vitesse, selon l'axe vertical, du joueur - offset:boolean → true pour rajouter xSpeed et ySpeed à la vitesse actuelle du joueur, false pour la remplacer -------- tfm.exec.killPlayer (playerName) Tue un joueur. - playerName:string → pseudo du joueur -------- tfm.exec.respawnPlayer (playerName) Fait respawn (= réapparaitre en jeu) un joueur - playerName:string → pseudo du joueur -------- tfm.exec.setVampirePlayer (playerName) Transforme un joueur en vampire. - playerName:string → pseudo du joueur -------- tfm.exec.giveMeep (playerName) Permet à un joueur de pouvoir meep. - playerName:string → pseudo du joueur -------- tfm.exec.setNameColor (playerName, color) Change la couleur du pseudo d'un joueur. - playerName:string → pseudo du joueur - color:int → code couleur Notes : Le joueur en question ne pourra pas voir la couleur de son pseudo. -------- tfm.exec.playEmote (playerName, emoteId, emoteParam) Permet de faire faire un émote à un joueur. - playerName:string → pseudo du joueur - emoteId:int → type de l'émote - emoteParam:string → paramètre associé à l'émote (uniquement pour l'émote drapeau) ------------------------------ • Objets ------------------------------ tfm.exec.addShamanObject (objectId, xPosition, yPosition, angle, xSpeed, ySpeed, ghost) Fait apparaître un objet sur la map - objectId:int → type de l'objet à afficher - xPosition:int → position, selon l'axe horizontal, où apparaîtra l'objet - yPosition:int → position, selon l'axe vertical, où apparaîtra l'objet - angle:int → angle selon lequel l'objet sera tourné (0) - xSpeed:int → vitesse initiale, selon l'axe horizontal, de l'objet (0) - ySpeed:int → vitesse initiale, selon l'axe vertical, de l'objet (0) - ghost:boolean → true pour rendre l'objet transparent, false pour qu'il soit normal (false) Valeur de retour : L'identifiant de l'objet invoqué (à utiliser avec tfm.exec.moveObject ou tfm.exec.removeObject). Notes : Pour les différents types possibles d'objet, il y a la table tfm.enum.shamanObject (non exhaustive) ou la liste de ce wiki -------- tfm.exec.moveObject (objectId, xPosition, yPosition, offset, xSpeed, ySpeed, offset) Déplace un objet - objectId:int → identifiant de l'objet à déplacer - xPosition:int → nouvelle position, selon l'axe horizontal, de l'objet - yPosition:int → nouvelle position, selon l'axe vertical, de l'objet - offset:boolean → true pour rajouter xPosition et yPosition à la position actuelle de l'objet, false pour la remplacer - xSpeed:int → nouvelle vitesse, selon l'axe horizontal, de l'objet - ySpeed:int → nouvelle vitesse, selon l'axe vertical, de l'objet - offset:boolean → true pour rajouter xSpeed et ySpeed à la vitesse actuelle de l'objet, false pour la remplacer Notes : La liste des objets invoqués est accessible via la propriété tfm.get.room.objectList -------- tfm.exec.removeObject (objectId) Enlève un objet de la map - objectId:int → identifiant de l'objet à enlever -------- tfm.exec.addConjuration (xPosition, yPosition, timeInMillis) Affiche un bloc de conjuration sur la map. - xPosition:int → position, selon l'axe horizontal, du bloc de conjuration (pouvant aller de 0 à 79) - yPosition:int → position, selon l'axe vertical, du bloc de conjuration (pouvant aller de 0 à 39) - timeInMillis:int → durée (en millisecondes) pendant laquelle le bloc restera affiché Notes : Les blocs de conjuration étant des carrés de 10 pixels, les positions xPosition et yPosition correspondent à une grille de 80x40 blocs. -------- tfm.exec.addJoint (id, ground1, ground2, definition) Ajoute un joint entre deux sols. - id:int → identifiant du joint - ground1:int → premier sol lié par le joint - ground2:int → second sol lié par le joint - definition:table → description du joint - type (int): 0 -> joint distance ; 1 -> joint prismatique ; 2 -> joint poulie ; 3 -> joint rotatif - point1 (string "x,y"): position du point d'ancrage du premier sol (par défaut, le centre du sol) - point2 (string "x,y"): position du point d'ancrage du second sol (par défaut le centre du sol), utilisé uniquement pour les joints distances et poulies - point3 (string "x,y"), point4 (string "x,y"): positions des points d'ancrages poulies, utilisés uniquement pour les joints poulies - frequency (float), damping (float): fréquence et raideur du joint (joint distance) - axis (string "x,y"), angle (int): axe et angle du joint (joint prismatique) - limit1 (float), limit2 (float), forceMotor (float), speedMotor (float): limites de translation/rotation et moteurs. (joints rotatifs et prismatiques) - ratio (float): ratio des joints rotatifs - line (int), color (int), alpha (float), foreground (bool): si aucune de ses propriétés n'est définie, le joint ne sera pas visible Notes : Dans le code xml d'une, vous pouvez ajouter à la définition d'un joint la propriété « lua="id" » pour lui permettre d'interagir avec le script LUA -------- tfm.exec.removeJoint (id) Supprime un joint de la carte. - id:int → identifiant du joint Notes : Dans le code xml d'une, vous pouvez ajouter à la définition d'un joint la propriété « lua="id" » pour lui permettre d'interagir avec le script LUA -------- tfm.exec.addPhysicObject (id, xPosition, yPosition, definition) Fait apparaitre un sol sur la carte. - id:int → identifiant du joint - xPosition:int → position, selon l'axe horizontal, où apparaîtra le sol - yPosition:int → position, selon l'axe vertical, où apparaîtra le sol - definition:table → description du sol - type (int), width (int), height (int), foreground (bool), friction (float), restitution (float), angle (int), color (int), miceCollision (bool), groundCollision (bool) - dynamic (bool), fixedRotation (bool), mass (int), linearDamping (float), angularDamping (float) pour les sols dynamiques Notes : Dans le code xml d'une, vous pouvez ajouter à la définition d'un sol la propriété « lua="id" » pour lui permettre d'interagir avec le script LUA -------- tfm.exec.removePhysicObject (id) Supprime un sol de la carte. - id:int → identifiant du sol Notes : Dans le code xml d'une, vous pouvez ajouter à la définition d'un sol la propriété « lua="id" » pour lui permettre d'interagir avec le script LUA -------- tfm.exec.explosion (xPosition, yPosition, power, distance, miceOnly) Fait une explosion. - xPosition:int → position, selon l'axe horizontal, de l'explosion - yPosition:int → position, selon l'axe vertical, de l'explosion - power:int → intensité de l'explosion - distance:int → rayon d'action de l'explosion - miceOnly:boolean → true pour que l'explosion ne touche que les joueurs, false pour que cela touche les joueurs et les objets (true) -------- tfm.exec.snow (secondes, snowballPower) Fait tomber de la neige. - secondes:int → durée (en secondes) pendant laquelle la neige va tomber (60) - snowballPower:int → puissance des boules de neiges (10) -------- tfm.exec.displayParticle (particleId, xPosition, yPosition, xSpeed, ySpeed, xAcceleration, yAcceleration, targetPlayer) Affiche une particule - particleId:int → type de particule à afficher - xPosition:int → position, selon l'axe horizontal, où apparaîtra la particule - yPosition:int → position, selon l'axe vertical, où apparaîtra la particule - xSpeed:float → vitesse initiale, selon l'axe horizontal, de la particule - ySpeed:float → vitesse initiale, selon l'axe vertical, de la particule - xAcceleration:float → accélération initiale, selon l'axe horizontal, de la particule - yAcceleration:float → accélération initiale, selon l'axe vertical, de la particule - targetPlayer:string → pseudo du joueur qui verra la particule(ou nil pour l'afficher pour tous les joueurs du salon) Notes : Pour les différents types possibles de particule, il y a la liste de ce wiki ------------------------------ • Paramètres de la partie / du salon ------------------------------ tfm.exec.newGame (mapCode, mirrored) Lance une nouvelle partie. - mapCode:string|int → code / caractéristiques de la map à charger : - 123 → map vanilla 123 - "@12345" → map @12345 - "#4" → map de catégorie p4 au hasard - "<code xml>" → charge le code xml (comme en éditeur de carte) - mirrored:boolean → Force la carte à être jouée en mode miroir (true) ou en mode normal (false) Notes : Sans argument (donc tfm.exec.newGame), cela relance la partie avec la map maison de tribu Si mirrored n'est pas renseigné, la carte jouera parfois en mode miroir -------- tfm.exec.disableAutoNewGame (yes) Active ou désactive le lancement automatique d'une nouvelle partie (lorsque le temps restant arrive à 0) - yes:boolean → true pour désactiver le lancement automatique, false pour le réactiver -------- tfm.exec.setShaman (playerName) Met un joueur chamane. - playerName:string → pseudo du joueur -------- tfm.exec.disableAutoShaman (yes) Active ou désactive la sélection automatique du chamane lors d'une nouvelle partie. - yes:boolean → true pour désactiver la sélection automatique, false pour la réactiver -------- tfm.exec.disableAllShamanSkills (yes) Active ou désactive les compétences shaman. - yes:boolean → true pour désactiver les compétences shaman, false pour les réactiver -------- tfm.exec.setGameTime (seconds, init) Change le temps restant d'une partie. - seconds:int → le nombre de secondes à mettre - init:boolean → true pour remplacer le temps restant, false pour ne le remplacer que s'il est supérieur à seconds (true) -------- tfm.exec.disableAutoTimeLeft (yes) Active ou désactive l'écoulement du temps restant d'une partie. - yes:boolean → true pour désactiver l'écoulement, false pour le réactiver -------- tfm.exec.setPlayerScore (playerName, score, add) Change le score d'un joueur. - playerName:string → pseudo du joueur - score:int → nombre de points - add:boolean → true pour rajouter les points au score actuel du joueur, false pour le remplacer -------- tfm.exec.disableAutoScore (yes) Active ou désactive la gestion automatique des scores des joueurs. - yes:boolean → true pour désactiver la gestion automatique, false pour la réactiver -------- tfm.exec.disableAfkDeath (yes) Active ou désactive la mort automatique des joueurs afks. - yes:boolean → true pour désactiver la mort automatique des afks, false pour la réactiver -------- system.disableChatCommandDisplay (command, yes) Active ou désactive l'affichage d'une commande (un message commençant par « ! » ) dans le chat. - command:string → la commande (sans le « ! » initial) - yes:boolean → true si on veut désactiver l'affichage, false pour le réactiver (true) Notes : Limité à 97 commandes ------------------------------ • Popups et zones de texte ------------------------------ ui.addTextArea (id, text, targetPlayer, x, y, width, height, backgroundColor, borderColor, backgroundAlpha, fixedPos) Affiche une zone de texte sur la map. - id:int → identifiant de la zone de texte - text:string → texte à afficher dans la zone de texte - targetPlayer:string → pseudo du joueur qui verra la zone de texte (ou nil pour l'afficher pour tous les joueurs du salon) - x:int → position, selon l'axe horizontal, du coin supérieur gauche de la zone de texte (50) - y:int → position, selon l'axe vertical, du coin supérieur gauche de la zone de texte (50) - width:int → largeur de la zone de texte (taille adaptée au texte) - height:int → longueur de la zone de texte (taille adaptée au texte) - backgroundColor:int → code couleur du fond de la zone de texte (0x324650) - borderColor:int → code couleur de la bordure de la zone de texte (couleur noire) - backgroundAlpha:float → opacité de la zone de texte, comprise entre 0.0 (transparent) et 1.0 (opaque) (1.0) - fixedPos:boolean → true pour fixer la position de la fenêtre par rapport à l'écran de jeu, false pour la fixer par rapport à la map (n'est utile que pour les maps longues) (false) Notes : Si backgroundColor a la valeur 0 (qui correspond normalement à la couleur noire), le fond et la bordure de la zone de texte seront transparents. Pour mettre un fond noir, il faut mettre 1. -------- ui.updateTextArea (id, text, targetPlayer) Met à jour le contenu d'une zone de texte affichée sur la map. - id:int → identifiant de la zone de texte - targetPlayer:string → pseudo du joueur qui verra le nouveau texte (ou nil pour l'afficher pour tous les joueurs du salon) - text:string → nouveau texte à mettre dans la zone de texte Notes : Il y a une erreur (rectifiée ici) dans l'ordre des paramètres dans la documentation officielle. -------- ui.removeTextArea (id, targetPlayer) Enlève une zone de texte affichée sur la map - id:int → identifiant de la zone de texte - targetPlayer:string → pseudo du joueur chez qui la zone de texte sera enlevée (ou nil pour l'enlever pour tous les joueurs du salon) -------- ui.addPopup (id, type, text, targetPlayer, x, y, width, fixedPos) Affiche une popup sur la map. - id:int → identifiant de la popup - type:int → type de la popup (0 -> popup simple, 1 -> popup de type oui / non, 2 -> popup permettant à l'utilisateur de rentrer du texte) - text:string → texte à afficher dans la popup - targetPlayer:string → pseudo du joueur qui verra la popup (ou nil pour l'afficher pour tous les joueurs du salon) - x:int → position, selon l'axe horizontal, du coin supérieur gauche de la popup - y:int → position, selon l'axe vertical, du coin supérieur gauche de la popup - width:int → largeur de la popup (taille adaptée au texte) - fixedPos:boolean → true pour fixer la position de la fenêtre par rapport à l'écran de jeu, false pour la fixer par rapport à la map (n'est utile que pour les maps longues) (false) -------- ui.showColorPicker (id, targetPlayer, defaultColor, title) Affiche une palette de couleurs. - id:int → identifiant de la palette - targetPlayer:string → pseudo du joueur qui verra la palette (ou nil pour l'afficher pour tous les joueurs du salon) - defaultColor:int → couleur par défaut de la palette - title:string → titre de la palette ------------------------------ • Modification de l'interface ------------------------------ ui.setShamanName (text) Remplace le nom du chamane dans la barre du haut par du texte. - text:string → le texte à mettre -------- ui.setMapName (text) Remplace le code de la map dans la barre du haut par du texte. - text:string → le texte à mettre ------------------------------ • Gestion clavier / souris ------------------------------ system.bindKeyboard (playerName, keyCode, down, yes) Active ou désactive l'écoute des évènements déclenchés par une des touches d'un joueur en particulier. - playerName:string → pseudo du joueur - keyCode:int → code de la touche à écouter - down:boolean → true pour écouter l'appui sur la touche, false pour écouter le relâchement - yes:boolean → true pour activer l'écoute, false pour la désactiver (true) Notes : Un exemple d'utilisation est donné dans la partie sur les Events. Pour la liste des codes touche, il y en a une ici et là Vous pouvez activer l'écoute des touches 0(gauche), 1(haut), 2(droite), 3(bas) pour suivre les déplacements du joueur quelque soit les touches qu'il utilise (wasd | zqsd | ←↑→↓) -------- system.bindMouse (playerName, yes) Active ou désactive l'écoute des évènements déclenchés par la souris (d'ordinateur) d'un joueur en particulier. - playerName:string → pseudo du joueur - yes:boolean → true si on veut activer l'écoute, false pour la désactiver (true) Notes : Un exemple d'utilisation est donné dans la partie sur les Events. ------------------------------ • Debug ------------------------------ print (something) Affiche dans le chat la valeur de l'argument passé. - something:* → variable dont on souhaite afficher la valeur Notes : Seul celui qui a lancé le script Lua peut voir les messages affichés. -------- system.exit () Arrête le script Lua en cours d'execution. -------- debug.disableEventLog (yes) Active ou désactive l'affichage dans le chat du log des évènements déclenchés. - yes:boolean → true si on veut désactiver l'affichage, false pour l'activer (true) Notes : Lorsque c'est activé, seuls les évènements écoutés sont affichés. ------------------------------ • Fonctions réservées aux développeurs Lua ------------------------------ tfm.exec.addImage (imageName, target, xPosition, yPosition, targetPlayer) Affiche une image sur la map. -------- tfm.exec.removeImage (imageId) Enlève une image rajoutée sur la map. -------- tfm.exec.chatMessage (message, playerName) Affiche un message dans le chat d'un joueur en particulier ou de tous les joueurs du salon. -------- tfm.exec.setRoomMaxPlayers (maxPlayers) Fixe le nombre maximum de joueurs dans le salon. -------- tfm.exec.setRoomPassword (password) Met un mot de passe au salon. Notes : Il n'est pas possible de mettre un mot de passe à une maison de tribu. -------- tfm.exec.lowerSyncDelay (playerName) Réduit le temps de synchronisation des paramètres de position et de vitesse du joueur (400ms max) -------- debug.disableTimerLog (yes) Active ou désactive l'affichage dans le chat du log des timers enregistrés. -------- system.newTimer (callback, time, loop, arg1, arg2, arg3, arg4) Crée un timer. -------- system.removeTimer (timerId) Arrête un timer. -------- system.savePlayerData (playerName, data) Enregistre des données associées à un joueur particulier pour la personne qui a lancé le script en cours -------- system.loadPlayerData (playerName) Charge les données associées à un joueur particulier pour la personne qui a lancé le script en cours. -------- system.saveFile (data, fileNumber) Enregistre des données dans un fichier. -------- system.loadFile (fileNumber) Charge des données à partir d'un fichier. Dernière modification le 1462537500000 |
0 | ||
Catégories : - Évènements joueurs - Évènements chamane - Évènements salon - Évènements popups et zones de texte - Évènements clavier / souris - Évènements réservés aux développeurs Lua ------------------------------ • Évènements joueurs ------------------------------ eventPlayerGetCheese (playerName) Cet évènement se déclenche lorsqu'un joueur récupère le fromage. - playerName:string → pseudo du joueur Exemple : function eventPlayerGetCheese(playerName) print(playerName .. " a récupéré le fromage !") end -------- eventPlayerWon (playerName, timeElapsed, timeElapsedSinceRespawn) Cet évènement se déclenche lorsqu'un joueur rentre dans le trou. - playerName:string → pseudo du joueur - timeElapsed:string → temps écoulé depuis le début de la map en seconde*001 (voir exemple) - timeElapsedSinceRespawn:string → temps écoulé depuis le respawn du joueur en seconde*0.01 (voir exemple) Exemple : function eventPlayerWon(playerName,timeElapsed,timeElapsedSinceRespawn) print(playerName .. " a réussi à rapporter le fromage au trou en "..timeElapsed.. " s !") end -------- eventPlayerDied (playerName) Cet évènement se déclenche lorsqu'un joueur meurt. - playerName:string → pseudo du joueur Exemple : function eventPlayerDied(playerName) print(playerName .. " est mort !") end -------- eventPlayerRespawn (playerName) Cet évènement se déclenche lorsqu'un joueur respawn, c'est-à-dire réapparait sur la map, lors d'une partie. - playerName:string → pseudo du joueur Exemple : function eventPlayerRespawn(playerName) print(playerName .. " est réapparu sur la map !") end function eventPlayerDied(playerName) print(playerName .. " est mort !") tfm.exec.respawnPlayer(playerName) end -------- eventPlayerVampire (playerName) Cet évènement se déclenche lorsqu'un joueur se transforme en vampire. - playerName:string → pseudo du joueur Exemple : function eventPlayerVampire(playerName) print(playerName .. " s'est transformé en vampire !") end -------- eventEmotePlayed (playerName, emoteId, emoteParam) Cet évènement se déclenche lorsqu'un joueur fait une émote (rire, pleurer, danser, etc.). - playerName:string → pseudo du joueur qui a lancé l'émote - emoteId:int → type de l'émote - emoteParam:string → paramètre associé à l'émote (uniquement pour l'émote drapeau) Notes : la table tfm.enum.emote permet d'obtenir la liste des différents types d'émote disponibles Exemple : function eventEmotePlayed(playerName, emoteId, emoteParam) for k,v in pairs(tfm.enum.emote) do if (v == emoteId) then print(playerName .. " a fait l'émote : " .. k) end end end ------------------------------ • Évènements chamane ------------------------------ eventSummoningStart (playerName, objectType, xPosition, yPosition, angle) Cet évènement se déclenche lorsqu'un chamane commence à invoquer un objet. - playerName:string → pseudo du chamane - objectType:int → type de l'objet qui va être invoqué - xPosition:int → position, selon l'axe horizontal, où le chamane invoque l'objet - yPosition:int → position, selon l'axe vertical, où le chamane invoque l'objet - angle:int → angle selon lequel le chamane invoque l'objet -------- eventSummoningCancel (playerName) Cet évènement se déclenche lorsqu'un chamane s'arrête en cours d'invocation d'un objet. - playerName:string → pseudo du chamane -------- eventSummoningEnd (playerName, objectType, xPosition, yPosition, angle, other) Cet évènement se déclenche lorsqu'un chamane finit d'invoquer un objet. - playerName:string → pseudo du chamane - objectType:int → type de l'objet invoqué - xPosition:int → position, selon l'axe horizontal, où l'objet a été invoqué - yPosition:int → position, selon l'axe vertical, où l'objet a été invoqué - angle:int → type de l'objet invoqué - other:table → table contenant diverses infos au sujet de l'objet invoqué (par exemple s'il est transparent ou non, son type, son identifiant, etc.) Notes : Dans la documentation de Tigrounette, "Int objectType" apparait deux fois. Il s'agit d'une erreur, il n'y a que le premier qui est bon. Si l'objet est invoqué directement par un chamane, les vitesses initiales sont nulles. Le seul moyen d'avoir un objet qui a une vitesse initiale est de l'invoquer via la fonction tfm.exec.addShamanObject. Exemple : function eventSummoningStart(playerName, objectType, xPosition, yPosition, angle) print(playerName .. " a commencé à invoquer un objet en position (" .. xPosition .. "," .. yPosition .. ") !") end function eventSummoningCancel(playerName) print(playerName .. " a arrêté d'invoquer un objet !") end function eventSummoningEnd(playerName, objectType, xPosition, yPosition, angle, objectType, other) print(playerName .. " a fini d'invoquer un objet en position (" .. xPosition .. "," .. yPosition .. ") !") end ------------------------------ • Évènements salon ------------------------------ eventNewGame () Cet évènement se déclenche lorsqu'une nouvelle partie commence. Exemple : function eventNewGame() print("Une nouvelle partie vient de commencer !") end -------- eventNewPlayer (playerName) Cet évènement se déclenche lorsqu'un nouveau joueur rejoint le salon. - playerName:string → pseudo du joueur Exemple : function eventNewPlayer(playerName) print(playerName .. " vient de rejoindre le salon !") end -------- eventPlayerLeft (playerName) Cet évènement se déclenche lorsqu'un joueur quitte le salon. - playerName:string → pseudo du joueur Exemple : function eventPlayerLeft(playerName) print(playerName .. " vient de quitter le salon !") end -------- eventLoop (currentTime, timeRemaining) Cet évènement se déclenche automatiquement environ toutes les 500 millisecondes. - currentTime:int → temps écoulé (en millisecondes) depuis le début de la partie - timeRemaining:int → temps restant (en millisecondes) jusqu'à la fin de la partie Exemple : function eventLoop(currentTime, timeRemaining) print("Temps écoulé : " .. currentTime/1000 .. "s") print("Temps restant : " .. timeRemaining/1000 .. "s") end -------- eventChatCommand (playerName, message) Cet évènement se déclenche lorsqu'un joueur envoie un message commençant par « ! ». - playerName:string → pseudo du joueur qui a lancé la commande - message:string → commande lancée (sans le « ! » initial) Exemple : function eventChatCommand(playerName, message) print(playerName .. " a lancé la commande : " .. message) end -------- eventChatMessage (playerName, message) Cet évènement se déclenche lorsqu'un joueur envoie un message dans le salon - playerName:string → pseudo du joueur qui a lancé la commande - message:string → message envoyé Exemple : function eventChatMessage(playerName, message) print(playerName .. " a dit : " .. message) end ------------------------------ • Évènements popups et zones de texte ------------------------------ eventPopupAnswer (popupId, playerName, answer) Cet évènement se déclenche lorsqu'un joueur répond à une popup (ouverte via la fonction ui.addPopup) de type 1 ou 2. - popupId:int → identifiant de la popup à laquelle le joueur a répondu - playerName:string → pseudo du joueur qui a répondu - answer:string → réponse du joueur ("yes" ou "no" pour une popup de type 1) Exemple : ui.addPopup(0, 1, "Aimes-tu la tartiflette ?", nil, 150, 200, 200) ui.addPopup(1, 2, "Quel est ton titre préféré ?", nil, 450, 200, 200) function eventPopupAnswer(popupId, playerName, answer) print(playerName .." a répondu à la popup n° ".. popupId .." : "..answer) end -------- eventTextAreaCallback (textAreaId, playerName, callback) Cet évènement se déclenche lorsqu'un joueur clique sur un évènement texte (balise a contenant un paramètre href commençant par "event:") contenu dans une zone de texte affichée avec ui.addTextArea. - textAreaId:int → identifiant de la zone de texte qui a déclenché cet event - playerName:string → pseudo du joueur qui a cliqué - callback:string → identifiant de l'event texte Notes : Si la callback (la fonction de rappel) commence par "#clear", la zone de texte sera effacée. Exemple : ui.addTextArea(0, "Cliquez <a href='event:clic1'>ici</a> ou <a href='event:clic2'>là</a> !", nil, 350, 200) function eventTextAreaCallback(textAreaId, playerName, callback) print(playerName .. " a déclenché l'event texte '" .. callback .. "'") end -------- eventColorPicked (colorPickerId, playerName, color) Cet évènement se déclenche lorsqu'un joueur clique sur valider dans le popup de la palette. - colorPickerId:int → identifiant de la palette qui a déclenché cet event - playerName:string → pseudo du joueur qui a cliqué - color:string → couleur choisi Exemple : ui.showColorPicker (0, nil, 0, "Palette de couleurs" ) function eventColorPicked ( colorPickerId, playerName, color ) print(playerName.." a choisi la couleur : "..color) end ------------------------------ • Évènements clavier / souris ------------------------------ eventKeyboard (playerName, keyCode, down, xPlayerPosition, yPlayerPosition) Cet évènement se déclenche lorsqu'un joueur presse ou relâche une touche. - playerName:string → pseudo du joueur qui a pressé ou relaché la touche - keyCode:int → code de la touche qui a déclenché l'event - down:boolean → true si la touche a été pressée, false si elle a été relâchée - xPlayerPosition:int → position, selon l'axe horizontal, du joueur qui a déclenché l'event - yPlayerPosition:int → position, selon l'axe vertical, du joueur qui a déclenché l'event Notes : Pour que cet évènement se déclenche, il faut explicitement spécifier quelles actions (presser ou relâcher) écouter, pour quelles touches et pour quels joueurs, avec la fonction tfm.exec.bindKeyboard Exemple : function eventKeyboard(playerName, keyCode, down, xPlayerPosition, yPlayerPosition) if(keyCode == 32) then local message = "Le joueur " .. playerName .. "," message = message .. " situé à la position (" .. xPlayerPosition .. "," .. yPlayerPosition .. ")," if (down) then message = message .. " a appuyé sur " else message = message .. " a relaché " end message = message .. "la touche espace !" print(message) end end -- pour chaque joueur dans le salon for playerName in pairs(tfm.get.room.playerList) do tfm.exec.bindKeyboard(playerName, 32, true, true) -- on écoute l'évènement "touche espace pressée" tfm.exec.bindKeyboard(playerName, 32, false, true) -- on écoute l'évènement "touche espace relachée" end -------- eventMouse (playerName, xMousePosition, yMousePosition) Cet évènement se déclenche lorsqu'un joueur clique avec sa souris. - playerName:string → pseudo du joueur qui a cliqué - xMousePosition:int → position, selon l'axe horizontal, de l'endroit où le joueur a cliqué - yMousePosition:int → position, selon l'axe vertical, de l'endroit où le joueur a cliqué Notes : Pour que cet évènement se déclenche, il faut explicitement spécifier pour quels joueurs on souhaite écouter les events de la souris, avec la fonction system.bindMouse Exemple : function eventMouse(playerName, xMousePosition, yMousePosition) local message = "Le joueur " .. playerName message = message .. " a cliqué à la position (" .. xMousePosition .. "," .. yMousePosition .. ")." print(message) end -- pour chaque joueur dans le salon for playerName in pairs(tfm.get.room.playerList) do system.bindMouse(playerName, true) -- on écoute l'évènement "clic" end ------------------------------ • Évènements réservés aux développeurs Lua ------------------------------ eventFileSaved (fileName) Cet évènement se déclenche lorsqu'un fichier de données est enregistré. -------- eventFileLoaded (fileName, file) Cet évènement se déclenche lorsqu'un fichier de données est chargé. -------- eventPlayerDataLoaded (playerName, data) Cet évènement se déclenche lorsque les données associées à un joueur ont fini d'être chargées. Dernière modification le 1461272940000 |
0 | ||
Changements :
Changements :
Changements :
Changements :
Changements :
Changements :
Changements :
Changements :
Dernière modification le 1461272280000 |