Difference between revisions of "Scripted levels"
(→Functions called by XMoto) |
|||
Line 123: | Line 123: | ||
Game.Message("Leaving the zone") | Game.Message("Leaving the zone") | ||
end | end | ||
+ | |||
+ | = Callabled XMoto's functions = | ||
+ | |||
+ | == GetTime() == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == Message(msgs) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == ClearMessages() == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetGravity(x, y) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == GetGravity() == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == IsPlayerInZone(zone) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetPlayerPosition(x, y, bRight) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == GetPlayerPosition() == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetEntityPos(entity, x, y) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == GetEntityPos(entity) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetKeyHook(key, function) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == GetKeyByAction(function) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == Log(msgs) == | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == MoveBlock(block, x, y) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetBlockCenter(block, x, y) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetBlockPos(block, x, y) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == GetBlockPos(block) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetBlockRotation(block, angle) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetDynamicEntityRotation(entity, initAngle, radius, period, startTime, endTime) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetDynamicEntityTranslation(entity, fX, fY, period, startTime, endTime) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetDynamicEntityNone(entity) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetDynamicBlockRotation(block, initAngle, radius, period, startTime, endTime) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetDynamicBlockTranslation(block, fX, fY, period, startTime, endTime) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == SetDynamicBlockNone(block) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == CameraZoom(z) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == CameraMove(x, y) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == GetEntityRadius(entity) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === | ||
+ | |||
+ | == IsEntityTouched(entity) == | ||
+ | [require Xmoto >= 0.2.0] | ||
+ | === Explanation === | ||
+ | |||
+ | === Script example === |
Revision as of 21:27, 15 August 2006
Contents
- 1 Introduction
- 2 Functions called by XMoto
- 3 Callabled XMoto's functions
- 3.1 GetTime()
- 3.2 Message(msgs)
- 3.3 ClearMessages()
- 3.4 SetGravity(x, y)
- 3.5 GetGravity()
- 3.6 IsPlayerInZone(zone)
- 3.7 SetPlayerPosition(x, y, bRight)
- 3.8 GetPlayerPosition()
- 3.9 SetEntityPos(entity, x, y)
- 3.10 GetEntityPos(entity)
- 3.11 SetKeyHook(key, function)
- 3.12 GetKeyByAction(function)
- 3.13 Log(msgs)
- 3.14 MoveBlock(block, x, y)
- 3.15 SetBlockCenter(block, x, y)
- 3.16 SetBlockPos(block, x, y)
- 3.17 GetBlockPos(block)
- 3.18 SetBlockRotation(block, angle)
- 3.19 SetDynamicEntityRotation(entity, initAngle, radius, period, startTime, endTime)
- 3.20 SetDynamicEntityTranslation(entity, fX, fY, period, startTime, endTime)
- 3.21 SetDynamicEntityNone(entity)
- 3.22 SetDynamicBlockRotation(block, initAngle, radius, period, startTime, endTime)
- 3.23 SetDynamicBlockTranslation(block, fX, fY, period, startTime, endTime)
- 3.24 SetDynamicBlockNone(block)
- 3.25 CameraZoom(z)
- 3.26 CameraMove(x, y)
- 3.27 GetEntityRadius(entity)
- 3.28 IsEntityTouched(entity)
Introduction
The scripts allow to a level to become dynamic : change some physic settings, move objects, ... A script is written in the Lua language and can be included in a level file.
To write a script, you must know a little about a level file. It is an xml file. It includes somes properties like the name of the level, it's description, ... Moreover, it includes blocks' and sprites' definitions. A block is composed of vertex which are the points to link to draw polygon.
To present the way to write a script, the simple following level example will be used :
<?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>
This level can be made easyly with the xmoto level editor. It mainly includes a block called Block0 which is a square, a strawberry called Strawberry0 and a zone called Zone0. A zone is an invisible part of the level to execute actions when the player is around it. Some functions require a minimum xmoto version to work ; if you use one of these function, please put this information in the level like it : <level id="tutscript" rversion="0.2.0">.
All the code of the script is written in Lua. You can found the syntax here. However, if you choose to include the script in an xml file, < and > symbol must be replaced by < and >. The code of the script can be included between <script> and </script> in the level file.
Functions called by XMoto
OnLoad()
Explanation
This function is called one time when the level starts. You must return true if nothing bad appened.
Script example
The example displays a message at the start of the level.
function OnLoad() Game.Message("This level is scripted") return true end
Tick()
Explanation
Function called 1 time every hundreath. You must return true if nothing bad appened.
Script example
This example will initialize gravity to 0 ; then, it will increment it with the time. Because earth gravity is 9.81, the earth gravity will not be reached before the 9.81 seconds. Be aware that in xmoto, vertical gravity must be multiplied by -1 because of screen coords which are reversed.
function Tick() if Game.GetTime() < 9.81 then Game.SetGravity(0, Game.GetTime() * -1) end return true end function Load() Game.SetGravity(0, 0) return true end
Entity.Touch()
Explanation
This function is called when an entity (a strawberry for example) is touched. The entity must be declared in the script. Note that the <size r> parameter allows to choose the distance of the entity which must be considered so that it is touched.
Script example
The example displays a message when the strawberry is touched.
Strawberry0 = {} function Strawberry0.Touch() Game.Message("Nice strawberry !") end
Zone.OnEnter()
Explanation
This function is called when the player enters in a zone.
Script example
The example displays a message when the player enters into the zone Zone0.
Zone0 = {} function Zone0.OnEnter() Game.Message("Entering in the zone") end
Zone.OnLeave()
Explanation
This function is called when the player leaves a zone.
Script example
The example displays a message when the player leaves the zone Zone0.
Zone0 = {} function Zone0.OnLeave() Game.Message("Leaving the zone") end
Callabled XMoto's functions
GetTime()
Explanation
Script example
Message(msgs)
Explanation
Script example
ClearMessages()
Explanation
Script example
SetGravity(x, y)
Explanation
Script example
GetGravity()
Explanation
Script example
IsPlayerInZone(zone)
Explanation
Script example
SetPlayerPosition(x, y, bRight)
Explanation
Script example
GetPlayerPosition()
Explanation
Script example
SetEntityPos(entity, x, y)
Explanation
Script example
GetEntityPos(entity)
Explanation
Script example
SetKeyHook(key, function)
Explanation
Script example
GetKeyByAction(function)
Explanation
Script example
Log(msgs)
Explanation
Script example
MoveBlock(block, x, y)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetBlockCenter(block, x, y)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetBlockPos(block, x, y)
[require Xmoto >= 0.2.0]
Explanation
Script example
GetBlockPos(block)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetBlockRotation(block, angle)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetDynamicEntityRotation(entity, initAngle, radius, period, startTime, endTime)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetDynamicEntityTranslation(entity, fX, fY, period, startTime, endTime)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetDynamicEntityNone(entity)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetDynamicBlockRotation(block, initAngle, radius, period, startTime, endTime)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetDynamicBlockTranslation(block, fX, fY, period, startTime, endTime)
[require Xmoto >= 0.2.0]
Explanation
Script example
SetDynamicBlockNone(block)
[require Xmoto >= 0.2.0]
Explanation
Script example
CameraZoom(z)
[require Xmoto >= 0.2.0]
Explanation
Script example
CameraMove(x, y)
[require Xmoto >= 0.2.0]
Explanation
Script example
GetEntityRadius(entity)
[require Xmoto >= 0.2.0]
Explanation
Script example
IsEntityTouched(entity)
[require Xmoto >= 0.2.0]