nyuuzyou/wikis huggingface dataset:
Script:Random Sounds

/*
 This script will play the sounds in the object's inventory randomly.
*/
float MinimumSeconds = 10.0;
float MaximumSeconds = 30.0;
float volume = 0.5; // How loud? Between 0 and 1.
///////////////////////////////////////////////////////////////////////
integer sounds = 0; // # sounds in inventory
list soundnames; // names of sounds in inventory
///////////////////////////////////////////////////////////////////////
LoadSounds()
{
 soundnames = [];
 sounds = llGetInventoryNumber(INVENTORY_SOUND);
 integer n;
 for (n = 0; n < sounds; ++n)
 {
 soundnames += llGetInventoryName(INVENTORY_SOUND, n);
 }
}
///////////////////////////////////////////////////////////////////////
default
{
 state_entry()
 {
 LoadSounds();
 
 if (sounds > 0)
 {
 llSetTimerEvent(0.1);
 }
 else
 {
 llOwnerSay("No sounds.");
 }
 }
 
 timer()
 {
 integer random = (integer) llFrand(sounds);
 string sound = llList2String(soundnames, random);
 llTriggerSound(sound, volume);
 
 llSetTimerEvent(MinimumSeconds + (llFrand(MaximumSeconds - MinimumSeconds)));
 }
 
 changed (integer change)
 { 
 if (change & CHANGED_INVENTORY)
 {
 llResetScript();
 }
 }
}
Script kindly contributed by .
Category:LSL Examples
Script:Synch Sound

/*
 Every PULSE seconds, ACCORDING TO THE CLOCK,
 this script plays the first sound in the object.
 
 So if you have a dozen things out with the same PULSE value
 they will all play at approximately the same time.
 © 2012 by Silent Mole
*/
integer PULSE = 60000; // 60 seconds;
integer time() 
{ // count milliseconds since the day began
 string stamp = llGetTimestamp(); // "YYYY-MM-DDThh:mm:ss.ff..fZ"
 return (integer) llGetSubString(stamp, 11, 12) * 3600000 + // hh
 (integer) llGetSubString(stamp, 14, 15) * 60000 + // mm
 llRound((float)llGetSubString(stamp, 17, -2) * 1000000.0)/1000; // ss.ff..f
}
integer howclose;
string mySound;
default
{
 state_entry()
 {
 howclose = -1;
 llSetTimerEvent( 0.1 );
 mySound = llGetInventoryName( INVENTORY_SOUND, 0 );
 }
 timer()
 {
 integer current = time() % PULSE;
 if ( howclose < 0 ) howclose = current;
 
 if ( current < howclose ) // bing!
 {
 llTriggerSound( mySound, 1.0 );
 llSetTimerEvent( 10.0 );
 }
 else if ( current > PULSE - 1000 ) // within a second
 {
 llSetTimerEvent( 0.05 ); // 0.05 is the min delay possible.
 }
 else if ( current > PULSE - 10000 ) // within 10 seconds
 {
 llSetTimerEvent( 1.0 );
 }
 else // far away
 {
 llSetTimerEvent( 10.0 );
 }
 howclose = current;
 }
 
 on_rez( integer p )
 {
 llResetScript();
 }
}
Category:LSL Examples
Script:Wind Powered Random Sounds

Category:LSL Examples
/*
 Sounds are played louder and faster as wind speed increases.
*/
integer sounds = 0; // # sounds in inventory
list soundnames; // names of sounds in inventory
LoadSounds()
{
 soundnames = [];
 sounds = llGetInventoryNumber( INVENTORY_SOUND );
 integer n;
 for ( n=0; n < sounds; ++n )
 {
 soundnames += llGetInventoryName( INVENTORY_SOUND, n );
 }
}
float GetWindStrength()
{
 return llVecMag(llWind(ZERO_VECTOR));
}
float GetVolume( float str )
{
 return str * 0.1;
}
string GetASound()
{
 return llList2String(soundnames,(integer)llFrand( sounds ));
}
integer count = 0;
default
{
 state_entry()
 {
 LoadSounds();
 
 if ( sounds > 0 )
 llSetTimerEvent( 0.1 );
 else
 llOwnerSay("No sounds.");
 }
 timer()
 {
 float str = GetWindStrength();
 ++count;
 if ( count > (integer)(10.0 - str) )
 {
 llTriggerSound( GetASound(), GetVolume(str) );
 count = 0;
 }
 }
 
 changed (integer change)
 { 
 if (change & CHANGED_INVENTORY)
 {
 llResetScript();
 }
 }
}
ScriptAnswerYes

==Message Layout==
{
	ScriptAnswerYes Low NotTrusted Unencoded
	{
		AgentData		Single
		{	AgentID		LLUUID	}
		{	SessionID	LLUUID	}
	}			 
	{
		Data	Single
		{	TaskID			LLUUID	}
		{	ItemID			LLUUID	}
		{	Questions		S32	}
	}
}
==Usage and Notes==
Used by client to grant script Run_time_permissions, in reply to ScriptQuestion.
TaskID = The prim containing the script
ItemID = The script's inventory ID
Questions = The permissions mask to set
==Related Messages==
RevokePermissions
Category:Messages
ScriptDialog

==Message Layout==
{
	ScriptDialog Low Trusted Zerocoded
	{
		Data	Single
		{	ObjectID	LLUUID			}
		{	FirstName	Variable	1	}
		{	LastName	Variable	1	}
		{	ObjectName	Variable	1	}
		{	Message		Variable	2	}
		{	ChatChannel	S32				}
		{	ImageID		LLUUID			}
	}
	{
		Buttons	Variable
		{	ButtonLabel		Variable	1	}
	}
}
==Usage and Notes==
Used with llDialog
Category:Messages
ScriptDialogReply

==Message Layout==
{
	ScriptDialogReply Low NotTrusted Zerocoded
	{
		AgentData		Single
		{	AgentID		LLUUID	}
		{	SessionID	LLUUID	}
	}
	{
		Data	Single
		{	ObjectID	LLUUID			}
		{	ChatChannel	S32				}
		{	ButtonIndex	S32				}
		{	ButtonLabel	Variable 1		}
	}
}
==Usage and Notes==
Used with llDialog and llTextBox. Reply to ScriptDialog
Category:Messages
ScriptMailRegistration

==Message Layout==
{
	ScriptMailRegistration Low Trusted Unencoded
	{
		DataBlock Single
		{	TargetIP		Variable 1	}	
		{	TargetPort		IPPORT	}
		{	TaskID			LLUUID	}
		{	Flags			U32	}
	}
}
==Usage and Notes==
Category:Messages
ScriptQuestion

==Message Layout==
{
	ScriptQuestion Low Trusted Unencoded
	{
		Data	Single
		{	TaskID			LLUUID	}
		{	ItemID			LLUUID	}
		{	ObjectName		Variable	1	}
		{	ObjectOwner		Variable	1	}
		{	Questions		S32	}
	}
}
==Usage and Notes==
Sim->viewer message when a script requests Run_time_permissions. Client replies with ScriptAnswerYes
==Related Messages==
RevokePermissions
Category:Messages
ScriptReset

==Message Layout==
{
	ScriptReset Low NotTrusted Unencoded
	{
		AgentData		Single
		{	AgentID			LLUUID	}
		{	SessionID		LLUUID	}
	}
	{
		Script				Single
		{	ObjectID		LLUUID	}
		{	ItemID			LLUUID	}
	}
}
==Usage and Notes==
Category:Messages
ScriptSensorReply

==Message Layout==
{
	ScriptSensorReply Low Trusted Zerocoded
	{
		Requester			Single
		{	SourceID		LLUUID	}
	}
	{
		SensedData			Variable
		{	ObjectID		LLUUID	}
		{	OwnerID			LLUUID	}
		{	GroupID			LLUUID	}
		{	Position		LLVector3	}
		{	Velocity		LLVector3	}
		{	Rotation		LLQuaternion	}
		{	Name			Variable	1	}
		{	Type			S32	}
		{	Range			F32	}
	}
}
==Usage and Notes==
Category:Messages
ScriptSensorRequest

==Message Layout==
{
	ScriptSensorRequest Low Trusted Zerocoded
	{
		Requester			Single
		{	SourceID		LLUUID	}
		{	RequestID		LLUUID	}
		{	SearchID		LLUUID	}
		{	SearchPos		LLVector3	}
		{	SearchDir		LLQuaternion	}
		{	SearchName		Variable	1	}
		{	Type			S32	}
		{	Range			F32	}
		{	Arc				F32	}
		{	RegionHandle	U64	}
		{	SearchRegions	U8	}
	}
}
==Usage and Notes==
Category:Messages
ScriptTeleportRequest

==Message Layout==
{
	ScriptTeleportRequest Low Trusted Unencoded
	{
		Data	Single
		{	ObjectName		Variable	1	}
		{	SimName			Variable	1	}
		{	SimPosition		LLVector3		}
		{	LookAt			LLVector3		}
	}
}
==Usage and Notes==
Sim->viewer message to 'suggest' a place to teleport (in the official viewer this opens the map and a beacon), triggered by an LSL script (with llMapDestination)
Category:Messages
Script (OS)

=== Feature Design Document ===
(none)
=== Functional Spec ===
(none)
=== Test scripts ===
Scripting_Engine_Test internal test
=== Discussion for future improvements ===
(none)
=== Relationship to other features ===
 List of features that need to be tested when this feature changes, and why. 
(none)
=== User Guides ===
LSLwiki.com
Script Override Functions

== Script Override ==
Well, you like to override strings, integer etc. in chat channel. For example you like to enable debug or change the channel. I find this the best solution and it can be pretty useful API framework for many listens.
==== USAGE: /CHANNEL Object_Name,message,value eg: /1000 Object,channel,1001 ====
list csv_commands;
integer P_channel = 1000; // channel
integer key_listen; // listen key
default
{
 state_entry()
 {
 key_listen = llListen(P_channel, "", NULL_KEY, "");
 }
 listen(integer channel, string name, key id, string message) 
 {
 csv_commands = llCSV2List( llToLower( message ));
// string said_name = llList2String( csv_commands, 0); 
 string command = llList2String( csv_commands, 1);
 if ( command == "channel") 
 {
 P_channel = (integer)llList2String( csv_commands, 2);
 llListenRemove( key_listen );
 key_listen = llListen(P_channel, "","","");
 llOwnerSay( "Listen Channel set to " + (string)P_channel);
 }
 else if(command == "avatar" || message == "AVATAR")
 {
 llSay(0, "Hello, Avatar!");
 }
 }
}
==== Support ====
For technical support, requests, etc., use the Search under the Groups Tab and search for Dazzle Software
If you have any problems getting this script to work either contact me in-world Revolution Perenti
Or visit our free scripts at our LSL scripts www.dazzlesoftware.org Secondlife Open Source Section on Tutorials.
Latest version always available on Dazzle Software via Wyrd
Script to report on who made which animations in a prim

* Back to MLPV2_Addons
<lsl>
//really pretty basic. Just drop script in. Will delete itself at end.
//bear in mind that counting starts at 0, so at the end add 1 in your head to the total
key myQuery;
integer Anim_Qty;
string ObjectName;
integer x;
key CreatorID;
default {
 
 
 state_entry() {
 x = 0;
 Anim_Qty = llGetInventoryNumber(INVENTORY_ANIMATION);
 state animreport;
 }
}
 
 
state animreport {
 
 state_entry() {
 
 ObjectName = llGetInventoryName(INVENTORY_ANIMATION, x);
 llSetText( "[" + (string)x + "] : " + ObjectName + "\n\n\n",<1.0,1.0,1.0>,1.0);
 CreatorID = llGetInventoryCreator(ObjectName);
 myQuery = llRequestAgentData(CreatorID, DATA_NAME);
 }
 
 dataserver(key queryid, string data) {
 if (myQuery == queryid) {
 llSay(0, (string)x + ". " + ObjectName + " : " + data);
 llSetTimerEvent(5); 
 if (x < Anim_Qty) {
 x = x + 1;
 state next;
 }
 } 
 }
 
 timer() {
 llSetText("",<1.0,1.0,1.0>,1.0);
 llSetTimerEvent(0); 
 llRemoveInventory(llGetScriptName());
 }
}
state next {
 
 state_entry() {
 
 state animreport;
 
 }
}
</lsl>
Category:MLPV2
Scripted Object Return

Pretty straightforward, the main question here is how to implement it without putting undue strain on the servers.
Kelly has said that they don't want to do this because of load on the servers. Surely some kind of throttling could be accomplished to make this very useful function a reality.
llReturnObject(key object)
A general solution might be to have an asset manager prioritize requests and just drop scripted requests if the load on the asset server is in the danger zone.
Some asset server request prioritization would probably open up potential for other very useful things like automatically setting permissions on objects, etc.
Another useful call to go with this might be a call to get the load on the asset server so scripts can delay their work until things are better.
-Pagan Bishop
The existing llGetRegionFPS or llGetRegionTimeDilation could be useful for checking sim load for making scripts "nicer", as mentioned on the LSLWiki. Neither of these, however, get a direct measure of the asset server's load, but might still be useful. -Simon Nolan
This is doable with LlReturnObjectsByID -- myggen Resident
Category:Feature Requests
Scripted permissions

One permission the act of sitting grants is that of avatar animation, but the LSL techniques remain unchanged. To associate an animation with sitting, the object being sat upon will need a script that calls llRequestPermissions and contains llStartAnimation within the event run_time_permissions; the only difference that the automatic permissions make is that it will jump from the first step to the second without pausing to ask the user whether the object has permission to animate their avatar. Offset and rotation for the animation should be set with llSitTarget beforehand in most cases, probably either hard-coded into state_entry or fetched from a notecard. (Note: This initial entry was made upon encountering a linked-to, non-existent page, by someone completely unfamiliar with the wiki markup system, so it probably needs a lot of work in linking referenced functions to their correct pages as well as adding information on any other permissions granted by sitting.)
Scripting Certification/Core/Basic

__TOC__
All Intermediate and Advanced Scripting Certifications require a Core Scripting Certification.
=Study Guide=
* Recommended tools
** lslint
== Syntax & Logic ==
=== Comments ===
*comment syntax
*When to use comments
=== Conditionals ===
*if syntax
**chained if-else syntax
*for loops
*while loops
*do while loops
=== Events ===
*event syntax
=== Functions ===
*function syntax
*How to call a function
=== States ===
*state syntax
**How to define a state
**How to call a state
== Debugging ==
* How to find bugs in scripts
* How to track down bugs in script communications
== ==
* How to set permissions on assets
* Why setting permissions on assets is important
== Setting Properties ==
* How to use functions that set prim/object properties
* How to read prim/object properties
== LSL Caveats/Constraints ==
* Memory constraints
** Bytecode
** Stack
** Heap
* Event queue limits
* Event timing
* Weird Syntax bugs
** Nesting lists runtime error
** Multiple event definitions of the same type
** jump bug
* Pass by Value everywhere
* Putting a ';' at the end of a conditional.
== Send Messages to User ==
=== ===
* How to send chat for the user to hear
* How to send chat that only the owner can hear
=== ===
* How to make a dialog box
=== ===
* How to send an instant message
== Script Communications ==
=== ===
* How to send chat so that other scripts can hear it
* How to receive chat from objects and how to filter it
=== ===
* How to send link_messages and receive them
=== ===
* How to send emails.
* How to read incoming emails.
== Documentation Styles ==
* Common ways of commenting code
* Common ways of writing documentation
Scripting Tests

==Other LSL testing information==
* Particle_System_Test
==LSL Test Harness==
* llForceMouseLook Test
* llGetAgentInfo Test
* llGiveInventory All Test
* llGetInventoryPermMask Test
* llGetInventoryType Test
* llGetObjectMass Test
* llGetObjectPermMask Test
* llGetParcelFlags Test
* llGetSimRating Test
* llGetUnixTime Test
* llGiveInventory Test
* llListReplaceList Test
* llListStatistics Test
* llLoadURL Test
* llOwnerSay Test
* llRequestSimulatorData Test
* llSameGroup Test
* llSetCameraParams Test
* llSetPayPrice Test
Category:QA Portal
Category:Quality Assurance
ScrollText

==ScrollText 1.5==
<lsl>
//ScrollText - using SetText to make a scroll effect.//
//Written by Bios Winter & Kalie Denimore.//
//Gutted by Strife Onizuka.//
//Added rate argument - Kalie//
ScrollText(string text,integer letters,float rate){
 integer length = llStringLength(text);
 integer i = -1;
 letters -= 1;
 while((++i) < length){
 llSetText( llGetSubString(text, i, i + letters), 
 <1.0, 1.0, 1.0>, 1.0);
 llSleep(rate);
 }
 llSetText("", <1.0, 1.0, 1.0>, 1.0);
}
 
default{
 state_entry(){
 ScrollText("Hello, Avatar!",10,.2);
 }
}
</lsl>
SculptGenMax

== Description ==
SculptGenMax is a lightweight script that allows users to create sculptie prims in 3ds Max and export them to Second Life.
=== Current Version ===
SculptGenMax will no longer be released as a standalone product. 
It is now a part of Prim Composer.
Prim Composer is complete offline building environment for Second Life and OpenSim. Build in 3ds Max; Deploy to either Second Life or OpenSim. Both prims and sculpties supported.
=== Features ===
* Roundtrip workflow from 3ds Max to Second Life and back
* Load sculptmaps from disk to import sculpties into 3ds Max
* Create sculpties in 3ds Max and export them to Second Life
* All sculptmap topologies supported: sphere, torus, plane, and cylinder
* Editable Poly, Editable Mesh, and NURBS supported
* Preserves UV Mapping — Baked textures work seamlessly
=== License ===
* SculptGenMax is licensed under GPL3
* Copyright 2008 Shack Dougall
=== Screenshot ===
SculptO'Matic

SculptO'Matic requires a server backend to generate the final textures. This is due to the inability of any on grid tool to create any texture. As such, there is a licensing fee related to the usage of the server backend.
The author believes in Open Source, and is willing to share his work in the hopes of improving the User Interface, features, and functions. But, due to the security around the generated textures, all references to the server backend will be removed before sharing.
All textures created by this system are expressly owned by the operator of the tool. They are secured using UUID's and only given to the individual operating the tool. The texture may then be modified, or simply uploaded to Second Life. As the user uploads the final texture to Second Life, the user remains the creator and owner of all works they create.
The tool is in beta now, and has been well received. The backend is seamless requiring minimal interaction by the user. A filename is requested, and a finished texture is provided via a URL sent by IM to the operator.
A unique feature of this tool is its ability to mold other inworld objects. The system attempts to create an evenly distributed mesh along the 'hull' boundary of an object. The object must not be phantom. Attempting to mold a sculpted object will only create a funny malformed spherical shape due to boundary constraints in SL. The object may be a linked set, only the outside is examined to find the 'hull'.
Once molded, the mold is used to make a sculptie casting. This casting may be further cleaned and textured using any number of off grid tools. For landscapers, the finished textures can simply be uploaded to Second Life and textured using your favorite landscaping images... Rocks, trees, and other organic shapes can be created quickly and easily without every starting an offworld tool at all.
Demo's of the tool are done daily in our testing sandbox in Talakin. There is a group for management of bugs, feature requests, and discussion. Search for "SculptO'Matic" under groups. 
For serious developers of other tools, the backend services to create textures using PPM format data is availible. Allowing integration of end to end texture creation with minimal effort and reliable servers.
Sculpt Texture Export Script for the GIMP

A simple GIMP plug-in allows a sculpt texture (or any texture) to be converted into a mesh and saved as Wavefront OBJ model, for upload into your favorite 3D modelling tool for previewing. The following Scheme script can be copied to a file and saved in the GIMP "scripts" directory (e.g. on Windows XP, "C:\Documents and Settings\username\.gimp-2.2\scripts\sculptie.scm" or 
"C:\Program Files\GIMP-2.0\share\gimp\2.0\scripts\sculptie.scm"):
(define (script-fu-exp-sculptie inImage inDrawable inFilename)
 (define (putv x y z f) 
 (let* ((buf (string-append "v " 
 (number->string x) " " 
 (number->string y) " " 
 (number->string z) "\n")))
 (puts buf f)
 )
 )
 (define (v-num-str row col width) (number->string (+ (* row width) col 1)))
 (define (decode x) (if (>= x 0) x (+ 256 x)))
 (let*
 (
 (obj-file (fopen inFilename "w+"))
 (iwidth (car (gimp-drawable-width inDrawable)))
 (iheight (car (gimp-drawable-height inDrawable)))
 (row 0)
 )
 (verbose 2)
 (while (< row iheight)
 (let* ((col 0))
 (while (< col iwidth)
 (let* 
 (
 (pixel (cadr (gimp-drawable-get-pixel inDrawable col row)))
 (x (/ (decode (aref pixel 0)) 255.0))
 (y (/ (decode (aref pixel 1)) 255.0))
 (z (/ (decode (aref pixel 2)) 255.0))
 )
 (putv x y z obj-file)
 )
 (set! col (+ col 1))
 ) 
 )
 (set! row (+ row 1))
 )
 (set! row 0)
 (while (< row (- iheight 1))
 (let* ((col 0))
 (while (< col iwidth)
 (writes obj-file (string-append "f " 
 (v-num-str row col iwidth) " " 
 (v-num-str row (fmod (+ col 1) iwidth) iwidth) " "
 (v-num-str (+ row 1) (fmod (+ col 1) iwidth) iwidth) " "
 (v-num-str (+ row 1) col iwidth) "\n"))
 (set! col (+ col 1))
 ) 
 )
 (set! row (+ row 1))
 )
 (verbose 0)
 (fclose obj-file)
 )
)
 (script-fu-register
 "script-fu-exp-sculptie" ;func name
 "Export Sculptie" ;menu label
 "Exports the current image layer as a wavefront\
 obj file." ;description
 "Kris Kovacs" ;author
 "copyright 2007, Kris Kovacs" ;copyright notice
 "May 17, 2007" ;date created
 "RGB*"
 SF-IMAGE "Input Image" 0 ;image type that the script works on
 SF-DRAWABLE "Input Drawable" 0 ;
 SF-FILENAME "Output File:" "tmp.obj" ;a string variable
 )
(script-fu-menu-register "script-fu-exp-sculptie" _"<Image>/Script-Fu/SecondLife")
Restart the GIMP after creating the file (or refresh the scripts with Xtns->Script-Fu->Refresh Scripts from the Tools window). A new menu item will appear in the Image window (Script-Fu->SecondLife->Export Sculptie). The script will prompt the user for a filename, and then will export the image as a mesh which can be uploaded into a 3D modelling tool.
Note that the script does not close off the top and bottom seams of the model the way SL does. Other than that the model will look very similar in a 3D tool as it does in SL.
Category:Sculpted Prims
Sculpt map

== Sculpty maps ==
----
;32x32 sculpty map...
:The sculpt map is made of a 32x32 pixel grid.
:The 32 horizontal rows make 32 rings around the sculpty.
:The 32 rings are made of 32 vertices or angles.
:The top row must touch on all 32 points, as does the bottom row.
----
 The colors of the rainbow.
;RED, GREEN, BLUE
:The colors are made up of 3 primary colors of light.
:Each color ranges from 0, being none of that color, to 255, being full of the color.
:The three colors combine to make 16,777,216 different colors.
<BR>
----
 Drawing in 3-dimensions.
:Draw your sculpty prim using one or several different 3-D drawing programs available.
:Understand that the drawing is to your Point of View(POV). 
----
;Red or X dimension
:To the LEFT, the numbers would get smaller to 0.
:To the RIGHT, the numbers would get larger to 255.
:SIDE VIEW is seen from the RED AXIS
<BR>
Image:SL-Sculpty-Sphere-Red-128x.png|Sculptymap Sphere-Red
Image:SL-Sculpty-Sphere-Side-256x.png|Sculpty Sphere Sideview 
----
;Green or Y dimension
:DOWNWARDS, the numbers would get smaller to 0.
:UPWARDS, the numbers would get larger to 255.
:TOP VIEW is seen along the GREEN AXIS
<BR>
Image:SL-Sculpty-Sphere-Green-128x.png|Sculptymap Sphere-Green
Image:SL-Sculpty-Sphere-Top-256x.png|Sculpty Sphere Topview 
----
;Blue or Z dimension
:Towards you, the numbers would get smaller to 0.
:AWAY from you, the numbers would get larger to 255.
:FRONT VIEW is seen along the BLUE AXIS
<BR>
Image:SL-Sculpty-Sphere-Blue-128x.png|Sculptymap Sphere-Blue
Image:SL-Sculpty-Sphere-Front-256x.png|Sculpty Sphere Frontview 
 
----
 Translation Correction when Importing Sculpties into Secondlife.
 When Importing your sculpty prim, you will notice that it is rezzed on it's side,... not quite as it was drawn. This is because the 3 dinemsions are arranged differently as they are in the Point Of View(POV) of the Secondlife Terrain. Try to imagine laying on your back in the middle of a region (128,128), with your feet pointed towards North.
;Red or X dimension
:Towards the LEFT would be WEST and the RED numbers would get smaller to 0.
:Towards the RIGHT would be EAST and the RED numbers would get larger to 255.
<BR>
;Green or Y dimension
:Towards the HEAD would be SOUTH and the GREEN numbers would get smaller to 0.
:Towards the FEET would be NORTH and the GREEN numbers would get larger to 255.
<BR>
;Blue or Z dimension
:Towards the GROUND would be DOWN and the BLUE numbers would get smaller to 0.
:Towards the SKY would be UP and the BLUE numbers would get larger to UNKNOWN.
----
----
--A work in progress by Igmu Hammerer 14:06, 22 April 2008 (SLT)
----