Presentation is loading. Please wait.

Presentation is loading. Please wait.

Connecting to the Island Ensure you are in the UA CSCE Artificial Intelligence group Ensure you are in the UA CSCE Artificial Intelligence group Open the.

Similar presentations


Presentation on theme: "Connecting to the Island Ensure you are in the UA CSCE Artificial Intelligence group Ensure you are in the UA CSCE Artificial Intelligence group Open the."— Presentation transcript:

1 Connecting to the Island Ensure you are in the UA CSCE Artificial Intelligence group Ensure you are in the UA CSCE Artificial Intelligence group Open the Map tap Open the Map tap Type University of Arkansas into the Search box and hit the Search button. Type University of Arkansas into the Search box and hit the Search button. Click University of Arkansas in the results Click University of Arkansas in the results Click Teleport Click Teleport

2 Introduction to Second Life Scripting

3 Resources http://wiki.secondlife.com/wiki/LSL_Portal http://wiki.secondlife.com/wiki/LSL_Portal http://wiki.secondlife.com/wiki/LSL_Portal http://lslwiki.net/lslwiki/wakka.php http://lslwiki.net/lslwiki/wakka.php http://lslwiki.net/lslwiki/wakka.php Inside of Second Life: Inside of Second Life: Linden Script Tutorial Group Linden Script Tutorial Group The Particle Laboratory (http://slurl.com/secondlife/Teal/201/50/301) The Particle Laboratory (http://slurl.com/secondlife/Teal/201/50/301)http://slurl.com/secondlife/Teal/201/50/301

4 How to Create a Script (In Inventory) Right click and Select the new script button. Right click and Select the new script button. Cannot run scripts in inventory Cannot run scripts in inventory

5 How to Create a Script (In Object) Right Click object and select Edit Right Click object and select Edit Click on the Content tab Click on the Content tab Click “New Script” Click “New Script”

6

7 LSL Basics Event and state driven Event and state driven Single Threaded Single Threaded Next event will not be processed until current event finishes. Next event will not be processed until current event finishes. Includes logic and looping constructs such as for, if, while, and do-while Includes logic and looping constructs such as for, if, while, and do-while

8 Primary Built-In Data Types Float – Same as the float type in C Float – Same as the float type in C Integer - 32-bit signed integer Integer - 32-bit signed integer String String Key Key Vector Vector List List

9 Key Unique identifier for just about any object in Second Life Unique identifier for just about any object in Second Life Contains hexidecimal characters seperated by dashes Contains hexidecimal characters seperated by dashes Example: Example: a822ff2b-ff02-461d-b45d-dcd10a2de0c2 a822ff2b-ff02-461d-b45d-dcd10a2de0c2

10 Vector Simple data structure of 3 floats, written as. Simple data structure of 3 floats, written as. Used to hold position, velocity, and color. Used to hold position, velocity, and color. Individual elements can be accessed by using the.x,.y, and.z after the variable name. Individual elements can be accessed by using the.x,.y, and.z after the variable name. For color: For color: X = Red X = Red Y = Green Y = Green Z = Blue Z = Blue Examples: Examples: vector example = vector example = example.z gives the value of 1. example.z gives the value of 1.

11 List Generic Container that can hold any number of elements of any type. Generic Container that can hold any number of elements of any type. Grows dynamically up to maximum amount of memory Grows dynamically up to maximum amount of memory All element access is done through llList2 functions which take the list and position (0- based as parameters) All element access is done through llList2 functions which take the list and position (0- based as parameters) Examples: Examples: list example = [7, “Blue”, [0, 1, 2], ]; list example = [7, “Blue”, [0, 1, 2], ]; llList2Integer(example, 0) returns 7. llList2Integer(example, 0) returns 7.

12 States Every script must have a default state. Every script must have a default state. All objects begin in the default state. All objects begin in the default state. Additional states can be declared using the state keyword. Additional states can be declared using the state keyword. Event functions are for that specific state. No direct way to have a event handler that works in all states. Event functions are for that specific state. No direct way to have a event handler that works in all states.

13 Hello World default{ state_entry() state_entry() { llSay(0, "Hello world!"); llSay(0, "Hello world!"); }}

14 Basic Chat Output Functions All have two parameters – Output Channel (Integer) and Message (String) All have two parameters – Output Channel (Integer) and Message (String) Different functions have different ranges: Different functions have different ranges: llWhisper – 10 meters llWhisper – 10 meters llSay – 20 meters llSay – 20 meters llShout – 100 meters llShout – 100 meters llRegionSay – Entire island (but not on received on clients) llRegionSay – Entire island (but not on received on clients) Chat Channel 0 is the channel that is displayed in the Second Life client. Chat Channel 0 is the channel that is displayed in the Second Life client.

15 Default Script default{ state_entry() state_entry() { llSay(0, "Hello, Avatar!"); llSay(0, "Hello, Avatar!"); } touch_start(integer total_number) touch_start(integer total_number) { llSay(0, "Touched."); llSay(0, "Touched."); }}

16 Events Most events can be triggered multiple times per simulation clock cycle. Most events can be triggered multiple times per simulation clock cycle. For the touch_start event, the total_number represents the total avatars that have started touching the object. For the touch_start event, the total_number represents the total avatars that have started touching the object. Information for each avatar or object detected can be obtained through the llDetected functions. Information for each avatar or object detected can be obtained through the llDetected functions.

17 default{ state_entry() state_entry() { llSay(0, "Hello, Avatar!"); llSay(0, "Hello, Avatar!"); } touch_start(integer total_number) touch_start(integer total_number) { integer i = 0; integer i = 0; for(; i < total_number; ++i) for(; i < total_number; ++i) { llSay(0, "Touched by “ + llDetectedName(i)); llSay(0, "Touched by “ + llDetectedName(i)); } }}

18 State events State_entry – Triggered when state first becomes active State_entry – Triggered when state first becomes active State_exit – Triggered when state changes and becomes inactive State_exit – Triggered when state changes and becomes inactive

19 default{ state_entry() state_entry() { llSay(0, “Default State.”); llSay(0, “Default State.”); } touch_start(integer num) touch_start(integer num) { state active; state active; } state_exit() state_exit() { llSay(0, “Leaving default state.”); llSay(0, “Leaving default state.”); }} state active { state_entry() state_entry() { llSay(0, “Activated”); llSay(0, “Activated”); } touch_start(integer num) touch_start(integer num) { llSay(0, “Touched.”); llSay(0, “Touched.”); }}

20 integer relaychan = -1356; default{ state_entry() state_entry() { llListen(relaychan, “”, NULL_KEY, “”); //Channel, Name, Key, Message filters llListen(relaychan, “”, NULL_KEY, “”); //Channel, Name, Key, Message filters llListen(0, “”, NULL_KEY, “”); llListen(0, “”, NULL_KEY, “”); } listen(integer chan, string name, key id, string message) listen(integer chan, string name, key id, string message) { if(chan == relaychan) if(chan == relaychan) { llSay(0, message); llSay(0, message); } else else { llShout(relaychan, name + “: ” + message); llShout(relaychan, name + “: ” + message); } }}

21 list lastReceived; integer listenchan = -800; default { state_entry() { llListen(listenchan, "", NULL_KEY, ""); llSetText("ON",, 1.0); } listen(integer channel, string name, key id, string message) { lastReceived = llListInsertList(lastReceived, [message], 0); integer len = llGetListLength(lastReceived); if(len > 10) { lastReceived = llList2List(lastReceived, 0, 9); } integer pos = 0; string floatText = "Last 10 messages:\n"; for(; pos, 1.0); } touch_start(integer a) { state off; } } state off { state_entry() { llSetText("OFF",, 1.0); } touch_start(integer a) { state default; } }

22 Lab Verify that you can teleport to the Second Life island Verify that you can teleport to the Second Life island Try out the example scripts. Try out the example scripts. Create a script to use llShout to say your avatar name(s) on channel -800. Create a script to use llShout to say your avatar name(s) on channel -800.


Download ppt "Connecting to the Island Ensure you are in the UA CSCE Artificial Intelligence group Ensure you are in the UA CSCE Artificial Intelligence group Open the."

Similar presentations


Ads by Google