Fr:Comment inclure un script à un niveau

From X-Moto
Revision as of 11:22, 26 November 2010 by Wiki.xmoto (talk | contribs) (Reverted edits by Opofefemucu (Talk) to last revision by Shepard62700FR)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Introduction

Scripter un niveau signifie de le rendre dynamique. Vous pouvez changer les paramètres physiques, bouger des objets, modifier la logique du jeu, etc. Un script est écrit en language Lua et peut-être inclut dans X-Moto.

La documentation concernant Lua :
http://www.lua.org/manual/5.1/

Pour créer un script, vous devez pas trop en savoir sur les fichiers .lvl (Niveaux X-Moto). Utilisez Inksmoto, vous pouvez ajouter les scripts facilement. Pour faire ceci, vous devez créer un fichier texte, avec les fonctions que vous allez devoir utiliser. Dans Inksmoto, indiquez juste où se trouve le script, dans la partie 'lua script' (Dans Effects->XMoto->Level->Set level properties). Voici un simple exemple :

zone1 = {}

function OnLoad()
  Game.SetCameraRotationSpeed(0.05);
  Game.CameraRotate(math.pi);
  return true;
end

function zone1.OnEnter()
  Game.PlayAudio("ring");
end


Depuis XMoto 0.3.0, le multijoueurs est supporté ; dans un script, un joueur est défini par un index. Jouer 1 identifié en tant que 0, Joueur 2 identifié en tant que 1, ...

Les exemples vont utiliser ce fichier niveau:

<?xml version="1.0" encoding="utf-8"?>
<level id="tutscript">
<info>
<name>tutscript</name>
<description></description>
<author></author>
<date></date>
<sky>sky1</sky>
</info>
<script>
</script>
<limits left="0" right="50" top="30" bottom="0"/>
<block id="Block0">
<position x="0" y="0"/>
<usetexture id="default"/>
<vertex x="5" y="5"/>
<vertex x="5" y="10"/>
<vertex x="10" y="10"/>
<vertex x="10" y="5"/>
</block>
<entity id="MyPlayerStart0" typeid="PlayerStart">
<size r="0.4"/>
<position x="7.5" y="10"/>
</entity>
<entity id="Strawberry0" typeid="Strawberry">
<size r="0.4"/>
<position x="20" y="0.5"/>
</entity>
<entity id="SnowMan0" typeid="Sprite">
<param name="name" value="SnowMan"/>
<position x="19" y="0.2"/>
<param name="z" value="-1"/>
</entity>
<zone id="Zone0">
<box left="40" right="50" top="5" bottom="0"/>
</zone>
</level>

Ce niveau est faisable dans Inksmoto. Il inclut un bloc nommé Block0 qui est carré, une fraise nommée Strawberry0 et une zone appelée Zone0. Une zone est une partie invisible par le joueur qui peut déclencher une action.

Certaines fonctions demandent une version minimum de X-Moto pour fonctionner. Si vous utilisez une de ces fonctions, ajoutez cette information dans votre niveau. Par exemple, Si votre niveau est accessible uniquement aux joueur de XMoto 0.2.0 ou +, ajoutez cette ligne dans votre niveau :

<level id="tutscript" rversion="0.2.0">

Scripted level.jpg

Le script est écrit en Lua. Si décidez d'écrire le script directement dans le fichier niveau, < et > doivent être remplacés respectivement par &lt; et &gt;. Le script doit être inclut entre les balises <script> et </script> du fichier niveau.