nyuuzyou/wikis huggingface dataset:
Unix2PST PDT

__NOTOC__
== Function: string Unix2PST_PDT(integer ); ==
Returns a string containing the SLT date and time, annotated with PST or PDT as appropriate, corresponding to the given Unix time.
e.g. Wed 2013-12-25 06:48 PST
== Specification ==
// Convert Unix Time to SLT, identifying whether it is currently PST or PDT (i.e. Daylight Saving aware)
// Omei Qunhua December 2013
list weekdays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
string Unix2PST_PDT(integer insecs)
{
 string str = Convert(insecs - (3600 * 8) ); // PST is 8 hours behind GMT
 if (llGetSubString(str, -3, -1) == "PDT") // if the result indicates Daylight Saving Time ...
 str = Convert(insecs - (3600 * 7) ); // ... Recompute at 1 hour later
 return str;
}
// This leap year test is correct for all years from 1901 to 2099 and hence is quite adequate for Unix Time computations
integer LeapYear(integer year)
{
 return !(year & 3);
}
integer DaysPerMonth(integer year, integer month)
{
 if (month == 2) return 28 + LeapYear(year);
 return 30 + ( (month + (month > 7) ) & 1); // Odd months up to July, and even months after July, have 31 days
}
string Convert(integer insecs)
{
 integer w; integer month; integer daysinyear;
 integer mins = insecs / 60;
 integer secs = insecs % 60;
 integer hours = mins / 60;
 mins = mins % 60;
 integer days = hours / 24;
 hours = hours % 24;
 integer DayOfWeek = (days + 4) % 7; // 0=Sun thru 6=Sat
 integer years = 1970 + 4 * (days / 1461);
 days = days % 1461; // number of days into a 4-year cycle
 @loop;
 daysinyear = 365 + LeapYear(years);
 if (days >= daysinyear)
 {
 days -= daysinyear;
 ++years;
 jump loop;
 }
 ++days;
 for (w = month = 0; days > w; )
 {
 days -= w;
 w = DaysPerMonth(years, ++month);
 }
 string str = ((string) years + "-" + llGetSubString ("0" + (string) month, -2, -1) + "-" + llGetSubString ("0" + (string) days, -2, -1) + " " +
	llGetSubString ("0" + (string) hours, -2, -1) + ":" + llGetSubString ("0" + (string) mins, -2, -1) );
 integer LastSunday = days - DayOfWeek;
 string PST_PDT = " PST"; // start by assuming Pacific Standard Time
 // Up to 2006, PDT is from the first Sunday in April to the last Sunday in October
 // After 2006, PDT is from the 2nd Sunday in March to the first Sunday in November
 if (years > 2006 && month == 3 && LastSunday > 7) PST_PDT = " PDT";
 if (month > 3) PST_PDT = " PDT";
 if (month > 10) PST_PDT = " PST";
 if (years < 2007 && month == 10 && LastSunday > 24) PST_PDT = " PST";
 return (llList2String(weekdays, DayOfWeek) + " " + str + PST_PDT);
}
== Example ==
default
{
 state_entry()
 {
 llOwnerSay( Unix2PST_PDT (llGetUnixTime() ) );
 }
}
Unpacker On Rez (NewAge)

NewAge Auto Unpacker v1.1
Just copy and paste this script into your object that will contain your product and configure the few lines in // Configure; section
// NewAge Auto Unpacker Script
// By Asia Snowfall
string nameOfFolderToBeCreated;
string messageToSendUponRez;
integer addThisScriptToFolder;
integer typeOfInventoryItemsToBeSent;
integer killAfterCompletion;
init()
{
 nameOfFolderToBeCreated = llGetObjectName();// do not use an empty string
 messageToSendUponRez = "";// leave empty to not send a message upon rez
 typeOfInventoryItemsToBeSent = INVENTORY_ALL;// use INVENTORY_ALL to not apply a filter
 addThisScriptToFolder = FALSE;
 killAfterCompletion = TRUE;
}
try_to_send_items(key inputKey, integer inputType)
{
 integer numberOfItems = llGetInventoryNumber(inputType);
 string thisScript = llGetScriptName();
 string itemName;
 list listOfItemsToSend;
 integer index;
 do
 {
 itemName = llGetInventoryName(inputType, index);
 if(itemName != "")
 {
 if(addThisScriptToFolder && itemName == thisScript)
 listOfItemsToSend += [itemName];
 else if(itemName != thisScript)
 listOfItemsToSend += [itemName];
 }
 }
 while(++index < numberOfItems);
// change to number of items in list now
 numberOfItems = llGetListLength(listOfItemsToSend);
 if(numberOfItems)
 {
 llGiveInventoryList(inputKey, nameOfFolderToBeCreated, listOfItemsToSend);
 llInstantMessage(inputKey,
 "/me [" + thisScript + "]: Items have been sent into a folder named '"
 + nameOfFolderToBeCreated + "' within your inventory.");
 }
 else
 llInstantMessage(inputKey,
 "/me [" + thisScript + "]: Could not find inventory items to send!");
}
default
{
 on_rez(integer start_param)
 {
 init();
 key owner = llGetOwner();
 if (messageToSendUponRez != "")
 llInstantMessage(owner, messageToSendUponRez);
 try_to_send_items(owner, typeOfInventoryItemsToBeSent);
 if (killAfterCompletion)
 llDie();
 }
}
Unpacker On Touch (NewAge)

Unpacker On Touch
Just Copy and Paste into the object that contains your product and configure the script to your needs!
New Motto: Save and Sell!
// NewAge Unpacker On Touch Script
// By Asia Snowfall
string nameOfFolderToBeCreated;
string messageToSendUponRez;
integer addThisScriptToFolder;
integer typeOfInventoryItemsToBeSent;
integer killAfterCompletion;
init()
{
// do not use an empty string
 nameOfFolderToBeCreated = llGetObjectName();
// leave empty to not send a message upon rez
 messageToSendUponRez = "";
// use INVENTORY_ALL to not apply a filter
 typeOfInventoryItemsToBeSent = INVENTORY_ALL;
 addThisScriptToFolder = FALSE;
 killAfterCompletion = TRUE;
}
try_to_send_items(key inputKey, integer inputType)
{
 integer numberOfItems = llGetInventoryNumber(inputType);
 string thisScript = llGetScriptName();
 string itemName;
 list listOfItemsToSend;
 integer i;
 do
 {
 itemName = llGetInventoryName(inputType, i);
 if(itemName != "")
 {
 if(addThisScriptToFolder && itemName == thisScript)
 listOfItemsToSend += [itemName];
 else if(itemName != thisScript)
 listOfItemsToSend += [itemName];
 }
 }
 while(++i < numberOfItems);
// change to number of items in list now
 numberOfItems = llGetListLength(listOfItemsToSend);
 if(numberOfItems)
 {
 llGiveInventoryList(inputKey, nameOfCreatedFolder, listOfItemsToSend);
 llInstantMessage(inputKey,
 "/me [" + thisScript + "]: Items have been sent into a folder named '"
 + nameOfFolderToBeCreated + "' within your inventory.");
 }
 else
 llInstantMessage(inputKey,
 "/me [" + thisScript + "]: Could not find inventory items to send!");
}
default
{
 on_rez(integer start_param)
 {
 llResetScript();
 }
 touch_start(integer num_detected)
 {
 key owner = llGetOwner();
 key id = llDetectedKey(0);
 // if not the owner touching, abort process
 if (id != owner)
 return;
 if (messageToSendUponRez != "")
 llInstantMessage(owner, messageToSendUponRez);
 try_to_send_items(owner, typeOfInventoryItemsToBeSent);
 if (killAfterCompletion)
 llDie();
 }
}
Untrusted

An untrusted message may be sent across either a trusted or an untrusted circuit.
Since the viewer may not establish a trusted circuit, it may only send untrusted messages. Since it is not possible for the viewer to authenticate a circuit (with the CreateTrustedCircuit message), it cannot upgrade any circuit to trusted status, and thus must drop all trusted messages.
==List of untrusted messages==
[*TODO Hunting Hare 03:46, 17 January 2007 (PST)]
Unused Private Sim

Along the nearly 20000 private-owned sims on the grid, there are a few categories easy to notice: Gorean Sims, Dark Sims, residential sims, Tropical Beach Paradise and many others. Probably the most rare category is represented by unused sims.
== Features ==
An unused sim is a sim that hosts nothing. There are no objects on it, land is undivided and it usually is flat as a perfect plain, with an altitude set at 20 meters. They are the most rare type of Unused Land and can be considered an unconventional type of Abandoned Land.
== Numbers ==
Estimations vary, depending on time. They cannot be found more then 1% in any given time, based on two researches, they were found to be 0.15% and 0.3% of all sims. This means they might be between 30 and 60 on the whole grid.
== Dynamics ==
An unused sim is created when the owner removes all objects from it (by owner or when land fee is not paid to estate owner) or when a new sim is created. This also comes with a reverse of terraforming. Since land tier is not small, estate owenrs must do something to an unused sim. It becomes used to support a new building, it can be set for sale or rent or it can be abandoned (deleted from grid). Usually, life existence of an unused sim is of only a few days. If we keep in mind that there ere a few tens of unused sims, the conclusion is that every day between one and 10 sims become or cease to be usused. This is the highest dynamic from all land categories.
== Useful trick ==
An unused sim is the perfect possible place to edit outfits, to open search menu or to work with world map, since lag is reduced to zero.
== See also ==
Second Life Geography
*Dark Sims
*Desert Sims
*Gorean Sims
*Private Land Geography Research
*Private Wilderness Sims
*Sex In Second Life
*Tropical Beach Paradise
*Unconventional Private Land Geography
UpdateAttachment

==Message Layout==
{
	UpdateAttachment Low Trusted Zerocoded
	{
		AgentData			Single
		{	AgentID			LLUUID	}
		{	SessionID		LLUUID	}
	}
	{
		AttachmentBlock		Single
		{	AttachmentPoint	U8	}
	}
	{
		OperationData		Single
		{	AddItem			BOOL	}
		{	UseExistingAsset BOOL	}
	}
	{
		InventoryData		Single			
		{	ItemID			LLUUID	}
		{	FolderID		LLUUID	}
		{	CreatorID		LLUUID	}	
		{	OwnerID			LLUUID	}	
		{	GroupID			LLUUID	}	
		{	BaseMask		U32	}	
		{	OwnerMask		U32	}	
		{	GroupMask		U32	}	
		{	EveryoneMask	U32	}	
		{	NextOwnerMask	U32	}	
		{	GroupOwned		BOOL	}	
		{	AssetID			LLUUID	}
		{	Type			S8	}
		{	InvType			S8	}
		{	Flags			U32	}
		{	SaleType		U8	}
		{	SalePrice		S32	}
		{	Name			Variable	1	}
		{	Description		Variable	1	}
		{	CreationDate	S32	}
		{	CRC				U32	}
	}
}
==Usage and Notes==
Category:Messages
UpdateCreateInventoryItem

==Message Layout==
{
	UpdateCreateInventoryItem Low Trusted Zerocoded
	{
		AgentData			Single
		{	AgentID			LLUUID	}
		{	SimApproved		BOOL	}
	}
	{
		InventoryData		Variable
		{	ItemID			LLUUID	}
		{	FolderID		LLUUID	}
		{	CallbackID		U32		} 
		{	CreatorID		LLUUID	}	
		{	OwnerID			LLUUID	}	
		{	GroupID			LLUUID	}	
		{	BaseMask		U32	}	
		{	OwnerMask		U32	}	
		{	GroupMask		U32	}	
		{	EveryoneMask	U32	}	
		{	NextOwnerMask	U32	}	
		{	GroupOwned		BOOL	}	
		{	AssetID			LLUUID	}
		{	Type			S8	}
		{	InvType			S8	}
		{	Flags			U32	}
		{	SaleType		U8	}
		{	SalePrice		S32	}
		{	Name			Variable	1	}
		{	Description		Variable	1	}
		{	CreationDate	S32	}
		{	CRC				U32	}
	}
}
==Usage and Notes==
Category:Messages
UpdateGestureAgentInventory

Category:Capabilities
POST:
<llsd><map><key>item_id</key><uuid>bdb399af-887e-a1de-b730-dc59e56de417</uuid></map></llsd>
Response:
<llsd><map><key>state</key><string>upload</string><key>uploader</key><string>https://sim5333.agni.lindenlab.com:12043/cap/56305d5f-f98a-7ed5-755c-c4af0fca1abd</string></map></llsd>
UpdateGestureTaskInventory

Category:Capabilities
POST:
<llsd>
	<map>
		<key>item_id</key>
		<uuid>4f81bfdc-5e20-00cb-e1d9-42d4d6d12abe</uuid>
		<key>task_id</key>
		<uuid>b0983d30-98a9-4ad3-769b-b4a27419114c</uuid>
	</map>
</llsd>
Response:
<llsd>
	<map>
		<key>state</key>
		<string>upload</string>
		<key>uploader</key>
		<string>https://sim2777.agni.lindenlab.com:12043/cap/3b3c0c38-5ef7-599d-4350-081589cc1333</string>
	</map>
</llsd>
UpdateGroupInfo

==Message Layout==
{
	UpdateGroupInfo Low NotTrusted Zerocoded
	{
		AgentData		Single
		{	AgentID			LLUUID	}
		{	SessionID		LLUUID	}
	}
	{
		GroupData		Single
		{	GroupID			LLUUID	}
		{	Charter			Variable	2	}	
		{	ShowInList		BOOL			}
		{	InsigniaID		LLUUID	}
		{	MembershipFee	S32				}
		{	OpenEnrollment	BOOL			}
		{	AllowPublish	BOOL	}
		{	MaturePublish	BOOL	}
	}
}
==Usage and Notes==
This message is used to update certain information about the group. The requesting agent must have the group powers to change the group's identity to change the charter, the show in list, the insignia, or the publishing aspects of the group.. The requesting agent must have the group ability to change the group's membership options to adjust the open enrollment or the membership fee.
Charter - The character can be up to 511 bytes long.
InsigniaID - The asset ID of the texture you want to have be the insignia for this group.
MembershipFee - The fee for joining the group. Fee must be greater than or equal to 0. Any value below 0 is set at 0. 
Category:Messages
UpdateInventoryFolder

==Message Layout==
{
	UpdateInventoryFolder Low NotTrusted Unencoded
	{
		AgentData			Single
		{	AgentID			LLUUID	}
		{	SessionID		LLUUID	}
	}
	{
		FolderData			Variable
		{	FolderID		LLUUID	}
		{	ParentID		LLUUID	}
		{	Type			S8	}
		{	Name			Variable	1	}
	}
}
==Usage and Notes==
Category:Messages
UpdateInventoryItem

==Message Layout==
{
	UpdateInventoryItem Low NotTrusted Zerocoded
	{
		AgentData			Single
		{	AgentID			LLUUID	}
		{	SessionID		LLUUID	}
	}
	{
		InventoryData		Variable
		{	ItemID			LLUUID	}
		{	FolderID		LLUUID	}
		{	CallbackID		U32		} 
		
		{	CreatorID		LLUUID	}	
		{	OwnerID			LLUUID	}	
		{	GroupID			LLUUID	}	
		{	BaseMask		U32	}	
		{	OwnerMask		U32	}	
		{	GroupMask		U32	}	
		{	EveryoneMask	U32	}	
		{	NextOwnerMask	U32	}	
		{	GroupOwned		BOOL	}	
		{	TransactionID	LLUUID	} 
		{	Type			S8	}
		{	InvType			S8	}
		{	Flags			U32	}
		{	SaleType		U8	}
		{	SalePrice		S32	}
		{	Name			Variable	1	}
		{	Description		Variable	1	}
		{	CreationDate	S32	}
		{	CRC				U32	}
	}
}
==Usage and Notes==
Category:Messages
UpdateMuteListEntry

==Message Layout==
{
	UpdateMuteListEntry Low NotTrusted Unencoded
	{
		AgentData 		Single
		{ AgentID LLUUID 	}
		{	SessionID	LLUUID		}
	}
	{
		MuteData	Single
		{	MuteID		LLUUID		}
		{	MuteName	Variable 1	}
		{	MuteType	S32			}
		{	MuteFlags	U32			}
	}
}
==Usage and Notes==
Category:Messages
UpdateNotecardAgentInventory

Category:Capabilities
POST:
<llsd>
	<map>
		<key>item_id</key>
		<uuid>aae770ec-56d6-a94d-59d4-cd0ab05cad80</uuid>
	</map>
</llsd>
Response:
<llsd>
	<map>
		<key>state</key>
		<string>upload</string>
		<key>uploader</key>
		<string>https://sim2777.agni.lindenlab.com:12043/cap/0137dbb3-ba98-78ba-19b2-a3bdc1ce524c</string>
	</map>
</llsd>
UpdateParcel

==Message Layout==
{
	UpdateParcel Low Trusted Zerocoded
	{
		ParcelData 		Single
		{	ParcelID		LLUUID		}
		{	RegionHandle	U64			}
		{	OwnerID			LLUUID		}
		{	GroupOwned		BOOL		}
		{	Status			U8			}
		{	Name			Variable 1	}
		{	Description		Variable 1	}
		{	MusicURL		Variable 1	}
		{	RegionX			F32			}
		{	RegionY			F32			}
		{	ActualArea		S32			}
		{	BillableArea	S32			}
		{	ShowDir			BOOL		}
		{	IsForSale		BOOL		}
		{	Category		U8			}
		{	SnapshotID		LLUUID		}
		{	UserLocation	LLVector3	}
		{	SalePrice		S32			}
		{	AuthorizedBuyerID	LLUUID		}
		{	ReservedNewbie	BOOL		}
		{	AllowPublish	BOOL		}
		{	MaturePublish	BOOL		}
	}
}
==Usage and Notes==
Category:Messages
UpdateScriptAgent

Category:Capabilities
POST:
<llsd>
	<map>
		<key>item_id</key>
		<uuid>49b48bf9-2b40-d3fa-aea7-c856bf8b3dfb</uuid>
		<key>target</key>
		<string>mono</string>
	</map>
</llsd>
Response:
<llsd>
	<map>
		<key>state</key>
		<string>upload</string>
		<key>uploader</key>
		<string>https://sim2777.agni.lindenlab.com:12043/cap/c184fe54-9094-353a-4b3c-44f902c61fca</string>
	</map>
</llsd>
POSTed script text to uploader and it worked
Response to upload:
<?xml version="1.0" ?>
<llsd>
	<map>
		<key>compiled</key>
		<boolean>true</boolean>
		<key>state</key>
		<string>complete</string>
		<key>new_asset</key>
		<uuid>8cec7e2f-a151-e055-61d2-2d5c5146549b</uuid>
	</map>
</llsd>
UpdateScriptTask

Category:Capabilities
POST:
<llsd>
	<map>
		<key>is_script_running</key>
		<integer>1</integer>
		<key>item_id</key>
		<uuid>84609c46-02c9-72a7-2fc5-f6a8ceddb41d</uuid>
		<key>target</key>
		<string>mono</string>
		<key>task_id</key>
		<uuid>df9e7ca7-daa9-836b-73e4-3fc1d560d2b9</uuid>
	</map>
</llsd>
Response:
<llsd>
	<map>
		<key>state</key>
		<string>upload</string>
		<key>uploader</key>
		<string>https://sim2777.agni.lindenlab.com:12043/cap/0573c509-0000-910b-79b2-736a2c98a7c8</string>
	</map>
</llsd>
Compiling for mono so I just POSTed the the script text to the uploader, and it worked!
Response to upload:
<?xml version="1.0" ?>
<llsd>
	<map>
		<key>compiled</key>
		<boolean>true</boolean>
		<key>state</key>
		<string>complete</string>
		<key>new_asset</key>
		<uuid>ff2b1049-a949-7ce6-046f-344bb5265ed7</uuid>
	</map>
</llsd>
UpdateTaskInventory

==Message Layout==
{
	UpdateTaskInventory Low NotTrusted Zerocoded
	{
		AgentData	Single
		{	AgentID		LLUUID	}
		{	SessionID	LLUUID }
	}
	{
		UpdateData			Single
		{	LocalID			U32	}
		{	Key				U8	}
	}
	{
		InventoryData		Single
		{	ItemID			LLUUID	}
		{	FolderID		LLUUID	}
		{	CreatorID		LLUUID	}	
		{	OwnerID			LLUUID	}	
		{	GroupID			LLUUID	}	
		{	BaseMask		U32	}	
		{	OwnerMask		U32	}	
		{	GroupMask		U32	}	
		{	EveryoneMask	U32	}	
		{	NextOwnerMask	U32	}	
		{	GroupOwned		BOOL	}	
		{	TransactionID	LLUUID	}
		{	Type			S8	}
		{	InvType			S8	}
		{	Flags			U32	}
		{	SaleType		U8	}
		{	SalePrice		S32	}
		{	Name			Variable	1	}
		{	Description		Variable	1	}
		{	CreationDate	S32	}
		{	CRC				U32	}
	}
}
==Usage and Notes==
Category:Messages
UpdateUserInfo

==Message Layout==
{
	UpdateUserInfo	Low	NotTrusted Unencoded
	{
		AgentData	Single
		{	AgentID	LLUUID	}
		{	SessionID	LLUUID	}
	}
	{
		UserData	Single
		{	IMViaEMail	BOOL	}
		{	DirectoryVisibility	Variable 1	}
	}
}
==Usage and Notes==
Used to updated various account settings. Values are set on the Communications tab of the preferences dialog.
* IMViaEmail determines if you receive instant messages in your email if you receive them while you are offline.
* DirectoryVisibility determines if your online status shows in people search or not.
=== DirectoryVisibility values ===
Value 	Comment
default 	You show as online when you are online.
visible 	You show as online when you are online.
hidden 	You show as offline even if you are online. Does not apply to friends.
invisible	Unknown. Reserved for gods.
Category:Messages
Update Type

Develop>Render Metadata>Update Type highlights each object to show how its last update was triggered. See also About the Update Indicators.
update type 	color
OUT_FULL_CACHED 	
OUT_FULL 	
OUT_FULL_COMPRESSED (cached) 	
OUT_FULL_COMPRESSED (not cached) 	
OUT_TERSE_IMPROVED (aka "partial update")	
Category:Troubleshooting
Updating drivers

== Identifying your graphics card ==
See Help:How to identify your graphics card
== Getting updated drivers ==
Please refer to the following page:
* http://secondlife.com/community/drivers.php
=== Updating Macintosh drivers ===
Residents using Macintosh computers with built-in graphics made by ATI or NVIDIA generally are unable to update drivers, except when Apple issues updates. Use the Mac's built-in Software Update to check for and download the latest drivers from Apple.
Users with Macintosh computers such as PowerMac G4, G5, or Mac Pro systems that have been upgraded with third-party graphics cards may be able to download updated drivers from the card's manufacturer.
== Using older drivers ==
Generally, it's best to update to the current drivers. On occasion Second Life runs better with an earlier version of the driver. You may be able to find information other Residents have discovered about specific cards and drivers on the SL Forums.
Drivers
Drivers
Drivers
Updating drivers/es

== Identifique su tarjeta gráfica ==
Vea este documento
== Conseguir drivers actualizados ==
Por favor, acuda a esta página:
* http://secondlife.com/community/drivers.php
=== Actualizando los drivers en Macintosh ===
Generalmente, los Residentes que usan computadores Macintosh con gráficas hechas por ATI o NVIDIA, no pueden actualizar los drivers excepto cuando Apple ofrece actualizaciones. Use la Actualización de Software de Mac para revisar y descargar desde Apple los drivers más recientes.
Los usuarios de Macintosh como PowerMac G4, G5, o Mac Pro systems que han sido actualizados con tarketas gráficas de otros, deben poder actualizar los drivers desde el fabricante de esas tarjetas.
== Usando drivers antiguos ==
Normalmente, lo mejor es estar actualizado a los últimos drivers. En algunos casos, Second Life funciona mejor con una versión anterior del driver. Puede ver información aportada por otros Residentes sobre tarjetas y drivers concretos en los Foros de Second Life.
Drivers
Drivers
Drivers
Upload Assets

=== Feature Design Document ===
(none)
=== Functional Spec ===
(none)
=== Test scripts ===
Upload Audio test
Animation Test
Upload Texture test
Upload Heightfield 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 ===
Uploading Files
Uploading Heightfields
Category:Assets
UseCircuitCode

==Message Layout==
{
	UseCircuitCode Low 3 NotTrusted Unencoded
	{
		CircuitCode		Single
		{	Code		U32		}
		{	SessionID	LLUUID	}
		{	ID			LLUUID	} 
	}
}
==Usage and Notes==
The viewer uses this packet to establish a circuit connection with a simulator. It is the first and necessary message before any other circuit communication is possible.
After this packet has been sent, the simulator will begin sending periodic StartPingCheck messages. The viewer may send CompleteAgentMovement to proceed further.
Category:Messages
Category:Common Messages
User's Manual 2012

This "User's Manual" provides basic information about the Second Life Viewer 3.x in the style of a software manual. Click the links to the right for additional topics.
To Open this Manual from within the Second Life viewer, Click the bottom toolbar Search button, All tab, then enter "User's Manual 2012" into the Find: box, and select the first result.
This manual is written for version 3.x of Linden Lab's Viewer software. Much, or most, of the manual is written by viewer users.
== Introduction ==
(This page is started. Edit as needed.)
== Footnotes ==
== See also ==
* :Help Portal
Category:Help Portal
User-Documented Policies

There have been many requests involving different aspects of LL's policies on a wide range of topics, however no such centralized page yet exists in the Wiki. The goal of this article is to provide a jumping-off point to existing official policies, as well as non-LL end-user attempts to research and document unofficial policies and planning agendas, and to provide easy-to-find links to ongoing hotbutton policy discussions in the JIRA.
* Back to Linden Lab Policies
* Link to Ongoing JIRA Policy Debates
== User-documented general policies ==
* FAQ: Proposing Features to LL
== User-documented Viewer policy pages ==
* Unofficial Viewer Licensing FAQ
== User-contributed Code Development pages ==
* Local data storage methods used in the viewer
* SLDEV Discussion - Texture Cache Plan of Attack
User-defined functions

:For a list of sample user-defined functions, go to :Category:LSL_User-Defined_Functions
LSL allows user-defined functions. The syntax is very simple:
<lsl>
return_type variable_name(par1type par1name, par2type par2name,...)
 {
 function_statements;
 .
 .
 .
 return value_of_return_type;
 }
</lsl>
There are no "function" or "def" keywords or function type/inheritance specifiers needed. I have not yet discovered what limits (if any) exist on the length or composition of the parameter list. Multiple types can be used, as shown in the example below. A list can be returned, so a single function can return a list with several values in it. User-defined functions will help keep scripts compact and readable, and allow rudimentary code reuse. The LSL_Style_Guide suggests that user-defined functions should be placed before the default state definition and after user-defined variables. Placing user-defined functions after the first state will result in a Syntax Error.
Here are a couple of simple examples: 
<lsl>
float xsquared(float x) // return the square of the argument
{
 return x*x;
}
vector scalarmult(vector vIn, float sMult) // return the product of a scalar and a vector
{
 vIn.x=vIn.x*sMult;
 vIn.y=vIn.y*sMult;
 vIn.z=vIn.z*sMult;
 return vIn;
}
default
{
 state_entry()
 {
 llWhisper(0, "Some user functions");
 }
 touch_start(integer total_number)
 {
 float testx=3;
 llWhisper(0,"testx squared :"+(string)xsquared(testx));
 vector testVector = <1,2,3>;
 testVector = scalarmult(testVector,testx);
 llWhisper(0,"test vector is:"+(string)testVector);
 }
}
</lsl>