Difference between revisions of "SL Cert - Intermediate Scripting"

From Second Life Wiki
Jump to navigation Jump to search
Line 16: Line 16:
==Criteria for testing to intermediate level==
==Criteria for testing to intermediate level==


'''Loops and Flow''' Show an understanding of the for, do, do while and while loops. Also be able to recognise labels and jump command. (note: may be helpful to cover how loops hold back a new event from being triggered ie delays progression to end of current event. Surprises me how few people realise this. Mention event queues??)
Scripting includes a wide variety of categories. At the intermediate level the different categories are broken out separately. The different categories are given below with the associated topics. Note that there is some overlap between categories. This is because the different topics can not be easily divided and are related. Some topics may be necessary for multiple categories and are listed multiple times to avoid prerequisite clashes between categories.  


'''Dataserver''' Show an understanding of the dataserver event and why there is the use of a handler key. Also understand the similarity between of these functions: llGetNotecardLine() llGetNumberOfNotecardLines() llGetllRequestAgentData() llRequestInventoryData() llRequestSimulatorData() (may also be worth noting that dataserver events can also be triggered from other scripts residing in the same prim)
=== Primitives, Objects  ===


'''Lists''' Be able to understand the concept of how various forms of data can be held simultaneously in a list. Understand that lists can grow in length and that their index always starts at zero.
The different ways scripts can manipulate an object is included in this category. It does not include the ways to interact between objects and agents. The interaction categories are included in the detection and communications categories.


'''Sensors''' Show an understanding of the use for sensors, the different "types" available and be able define a scan direction using arc. Also be aware of the subtle differences between llSensor() and llSensorRepeat() (nb there is more to this than one being timer based) (nb time required for 100% consistant scan which does not miss an item appears to be linked to range)(nb llSensorRepeat() is capable of detection in adjacent sim)
* Faces
# Each face on a prim has a number associated with it.
# The number varies by prim type and can vary depending if the prim has a "cut."  


'''Object-to-object''' communication Show an understanding of object intercommunication via chat channels. Be able to explain the reason for llListen() handles and the benefit of using negative channels.  
* Changing color
# Commands for changing the color
# RGB definition of a color and how it is different from the editor window.


'''Prim-to-prim''' communication Show an understanding of prim intercommunication via link message. Understand the many benefits of this system over the object-to-object method.
* Changing alpha
# Commands for changing the alpha level
# Difference between changing alpha level and the two different transparant textures.


'''Rotations''' Understand the difference between local and global rotation. Be able to convert euler to quaternions and degrees to radians. (much more required here...  Grandma Bates excellent work needs inclusion)
* Changing textures
# Commands for changing the textures
# Predefined constants for UUIDs of textures


'''Sitting''' Understand how to set a sit target position, rotation and control camera offsets. Be able to detect the avatar sat on a prim and unsit them. Recognise how being sat automatically allows acceptance of some permissions. Understand how the sit offset can be used to produce a teleport effect.
* Particles
# Command to create particles
# basic limitation of particles
# basic understanding on how to turn on and turn off particles


'''Permissions/Script''' Show an understanding of how various permissions can be obtained via script. (Debit, Controls, Anim, Attach, Links, Camera track, Camera control)
* Link commands and options
# Commands to determine the UUID, link number, total number of prims etc. for prims within the current object.


'''Animations''' Demonstrate an ability to obtain permissions and animate an avatar. Understand the format for upload of relevant animations and their priority settings. (nb mention internal animations ability to animate things .bvh file cannot. ie face etc?)
* Text and pie menu text
# Commands to change the text on a prim.
# Commands to change the text for different options in the pie menu.


'''Camera tracking and control''' Understand how once permissions are obtained, an avatars camera position and rotation can be monitored and controlled.
* Primitive name and description
# Commands to get the name and description of a prim.
# Commands to change the name and description of a prim.
 
* Dataserver events
# Basic understanding of the data server event.
# Basic understanding of the different kinds of information that can be obtained using the Dataserver event.
 
* Obtaining object information
# Getting agent information (llRequestAgentData)
# llGetObjectDetails
 
* Sound
# Commands to preload sound files.
# Commands to play sounds.
 
 
Note that for many of these items there are a large number of commands asociated with the topic. For example, just to change the color of a prim the following commands can be used: llSetColor, llSetLinkColor, llGetColor, llSetPrimitiveParams, llGetPrimitiveParams, llSetLinkPrimitiveParams. It is adequate for a person to just know how to use llSetPrimitiveParams and llSetLinkPrimitiveParams to change the color of a prim, but the person should know the other commands in case they are asked to adapt another person's code.
 
=== Avatars and Agents ===
 
* Sit positions and associated functions
# Setting the position and rotation of a sit position.
# Turning off a sit position after it has been set.
# Know how to set the camera orientation for a sitting avatar.
 
* Permissions
# Basic understanding of the permissions system.
# Know how to obtain permissions and basic understanding when it is required.
 
* Animations
# Know how to set a the animation of a person sitting on a prim.
# Know how to obtain permission before setting the animation.
# Know how to remove an active animation.
 
* Camera Controls
# Know how to obtain permission to change the camera orientation.
# Know the basic ways to change the camera.
 
* Dataserver
# Know the commands that can be used to obtain information about an agent.
# Know how to obtain agent and avatar information via the data server event.
 
 
=== Inventory and Simulator Information ===
 
* Notecards
# Get the number of lines in a note card.
# Step through and get each line in a note card.
# Know how to stop reading a note cart by testing for the EOF constant.
 
* Detect when the inventory has changed.
* Inventory information
# Get creator's name.
# Inventory numbering system.
# Inventory types.
# Inventory Permissions.
 
* llRequestSimulatorData
 
 
=== Communications ===
 
* Creating, using and removing a listener
# Creating a listener and keeping track of it.
# The listen event.
# Channel numbering system.
# Predefined channels (DEBUG_CHANNEL and PUBLIC_CHANNEL).
# Various chat commands.
 
* Link messages
# The link_message event.
# Sending link messages.
# Limiting link messages to specific prims within a build.
 
* Basic security
# Relying on arcane channels is not secure.
# Methods to insure a message is coming from an agent/object.
# Basic validation using MD5 and SHA1 hashes
 
 
 
 
 
 
=== Physics ===
 
* Linear and Angular Force
* Linear and Angular Momentum
* Vehicles
 
 
 
=== Detection ===
 
* Touch events
# The three touch events.
# Functions to detect information about who has touched a prim.
# Passing touch information to other prims in a build.
 
* Collision events
# The three collision events.
# Functions to detect information about what/who took part in the collision.
 
* Land collision events
# The three land collision events.
# Functions to detect information about what/who took part in the land collision.
 
* Sensors
# The  sensor commands.
# The two sensor related events.
# Limiting the scope of a sensor.
# Limitations of a sensor.
 
 
=== Programming and Software Development ===
 
* More advanced use of lists.
* More advanced string functions.
* More advanced revision systems.

Revision as of 12:58, 6 November 2009

Overview

Criteria required for persons to become certified in intermediate scripting.

Audience

Persons who wish to demonstrate competence in intermediate LSL scripting.

Prerequisites

Applicant must hold basic scripting certification.

Criteria for testing to intermediate level

Scripting includes a wide variety of categories. At the intermediate level the different categories are broken out separately. The different categories are given below with the associated topics. Note that there is some overlap between categories. This is because the different topics can not be easily divided and are related. Some topics may be necessary for multiple categories and are listed multiple times to avoid prerequisite clashes between categories.

Primitives, Objects

The different ways scripts can manipulate an object is included in this category. It does not include the ways to interact between objects and agents. The interaction categories are included in the detection and communications categories.

  • Faces
  1. Each face on a prim has a number associated with it.
  2. The number varies by prim type and can vary depending if the prim has a "cut."
  • Changing color
  1. Commands for changing the color
  2. RGB definition of a color and how it is different from the editor window.
  • Changing alpha
  1. Commands for changing the alpha level
  2. Difference between changing alpha level and the two different transparant textures.
  • Changing textures
  1. Commands for changing the textures
  2. Predefined constants for UUIDs of textures
  • Particles
  1. Command to create particles
  2. basic limitation of particles
  3. basic understanding on how to turn on and turn off particles
  • Link commands and options
  1. Commands to determine the UUID, link number, total number of prims etc. for prims within the current object.
  • Text and pie menu text
  1. Commands to change the text on a prim.
  2. Commands to change the text for different options in the pie menu.
  • Primitive name and description
  1. Commands to get the name and description of a prim.
  2. Commands to change the name and description of a prim.
  • Dataserver events
  1. Basic understanding of the data server event.
  2. Basic understanding of the different kinds of information that can be obtained using the Dataserver event.
  • Obtaining object information
  1. Getting agent information (llRequestAgentData)
  2. llGetObjectDetails
  • Sound
  1. Commands to preload sound files.
  2. Commands to play sounds.


Note that for many of these items there are a large number of commands asociated with the topic. For example, just to change the color of a prim the following commands can be used: llSetColor, llSetLinkColor, llGetColor, llSetPrimitiveParams, llGetPrimitiveParams, llSetLinkPrimitiveParams. It is adequate for a person to just know how to use llSetPrimitiveParams and llSetLinkPrimitiveParams to change the color of a prim, but the person should know the other commands in case they are asked to adapt another person's code.

Avatars and Agents

  • Sit positions and associated functions
  1. Setting the position and rotation of a sit position.
  2. Turning off a sit position after it has been set.
  3. Know how to set the camera orientation for a sitting avatar.
  • Permissions
  1. Basic understanding of the permissions system.
  2. Know how to obtain permissions and basic understanding when it is required.
  • Animations
  1. Know how to set a the animation of a person sitting on a prim.
  2. Know how to obtain permission before setting the animation.
  3. Know how to remove an active animation.
  • Camera Controls
  1. Know how to obtain permission to change the camera orientation.
  2. Know the basic ways to change the camera.
  • Dataserver
  1. Know the commands that can be used to obtain information about an agent.
  2. Know how to obtain agent and avatar information via the data server event.


Inventory and Simulator Information

  • Notecards
  1. Get the number of lines in a note card.
  2. Step through and get each line in a note card.
  3. Know how to stop reading a note cart by testing for the EOF constant.
  • Detect when the inventory has changed.
  • Inventory information
  1. Get creator's name.
  2. Inventory numbering system.
  3. Inventory types.
  4. Inventory Permissions.
  • llRequestSimulatorData


Communications

  • Creating, using and removing a listener
  1. Creating a listener and keeping track of it.
  2. The listen event.
  3. Channel numbering system.
  4. Predefined channels (DEBUG_CHANNEL and PUBLIC_CHANNEL).
  5. Various chat commands.
  • Link messages
  1. The link_message event.
  2. Sending link messages.
  3. Limiting link messages to specific prims within a build.
  • Basic security
  1. Relying on arcane channels is not secure.
  2. Methods to insure a message is coming from an agent/object.
  3. Basic validation using MD5 and SHA1 hashes




Physics

  • Linear and Angular Force
  • Linear and Angular Momentum
  • Vehicles


Detection

  • Touch events
  1. The three touch events.
  2. Functions to detect information about who has touched a prim.
  3. Passing touch information to other prims in a build.
  • Collision events
  1. The three collision events.
  2. Functions to detect information about what/who took part in the collision.
  • Land collision events
  1. The three land collision events.
  2. Functions to detect information about what/who took part in the land collision.
  • Sensors
  1. The sensor commands.
  2. The two sensor related events.
  3. Limiting the scope of a sensor.
  4. Limitations of a sensor.


Programming and Software Development

  • More advanced use of lists.
  • More advanced string functions.
  • More advanced revision systems.