Difference between revisions of "User:DoteDote Edison"

From Second Life Wiki
Jump to navigation Jump to search
m
m
Line 5: Line 5:
Not a Wiki pro, so using this page to figure out how to format properly.
Not a Wiki pro, so using this page to figure out how to format properly.


====Example Scripts for the Examples page once it's formatted:====
=====Toggle On/Off via State=====
An example script showing how a [[LSL_States|state]] change can be used to switch between two script modes, in this case, On or Off.  When the script first runs, it begins in the '''default''' state and the [[LSL_state_entry|state_entry]] event is executed.  When a user interacts with the object by touch, the script switches to the '''on''' state.  The '''on''' state executes its state_entry event, then waits for a user's touch to trigger a state change back to the '''default''' state.
<pre><lsl>
// Toggle On-Off via State
default {
    state_entry() {
// run this code when entering the default state
// displays red "OFF" as floating text above the prim
llSetText("OFF", <1,0,0>, 1.0);
}
    touch_start(integer num_detected) {
// when touched, switch to state named 'on'
state on;
}
}
state on {
state_entry() {
// run this code when entering state 'on'
// displays green "ON" as floating text above the prim
llSetText("ON", <0,1,0>, 1.0);
}
touch_start(integer num_detected) {
// when touched, switch to the default state
state default;
}
}
</lsl></pre>
====Email-to-IM Script for the Script Library====
====Email-to-IM Script for the Script Library====
<pre><lsl>
<pre><lsl>

Revision as of 20:07, 31 January 2007


Not a Wiki pro, so using this page to figure out how to format properly.

Email-to-IM Script for the Script Library

<lsl>
// Email-to-IM
// DoteDote Edison

///////// constants /////////
// how often to check for new email when owner is online (seconds)
float fast = 60.0;
// how often to check owner online status when owner is offline (seconds)
float slow = 300.0; 

////////// globals //////////
key request;
key owner;
integer owner_online;

default {
	state_entry() {
		owner = llGetOwner();
		string address = (string)owner + "@lsl.secondlife.com";
		llSetText("Email Server\nOnline", <0.25, 1.0, 0.25>, 1.0);
		llOwnerSay("Now online.  The Email-to-IM address for " + llKey2Name(owner) + " is:\n" + address);
		llSetTimerEvent(fast);
	}
	on_rez(integer start_param) {
		llResetScript();
	}
	touch_start(integer num_detect) {
		if (llDetectedKey(0) == owner) state off;
	}
	email(string time, string sender, string subject, string body, integer num_remain) {
		llInstantMessage(owner, "Email Received from: " + sender + " -- " + time);
		llInstantMessage(owner, body);
		if (num_remain > 0) llGetNextEmail("", "");
	}
	dataserver(key query, string data) {
		if (query == request) {
			request = "";
			if (data == "1") {
				owner_online = TRUE;
				llSetTimerEvent(fast);
			}
			else {
				owner_online = FALSE;
				llSetTimerEvent(slow);
			}
		}
	}
	timer() {
		request = llRequestAgentData(owner, DATA_ONLINE);
		if (owner_online) llGetNextEmail("", "");
	}
	state_exit() {
		llSetTimerEvent(0.0);
		llSetText("Email Server\nOffline", <1.0, 0.25, 0.25>, 1.0);
	}
}

state off {
	touch_start(integer num_detect) {
		if (llDetectedKey(0) == owner) state default;
	}
	on_rez(integer start_param) {
		llResetScript();
	}
}
</lsl>