Difference between revisions of "User:DoteDote Edison"
Jump to navigation
Jump to search
m |
|||
Line 6: | Line 6: | ||
====Email-to-IM Script for the Script Library==== | ====Email-to-IM Script for the Script Library==== | ||
<pre | <pre> | ||
// Email-to-IM | // Email-to-IM | ||
// DoteDote Edison | // DoteDote Edison | ||
Line 12: | Line 12: | ||
///////// constants ///////// | ///////// constants ///////// | ||
// how often to check for new email when owner is online (seconds) | // how often to check for new email when owner is online (seconds) | ||
float | float FAST = 60.0; | ||
// how often to check owner online status when owner is offline (seconds) | // how often to check owner online status when owner is offline (seconds) | ||
float | float SLOW = 300.0; | ||
// timezone offset from UTC | |||
integer offset = -4; | |||
////////// globals ////////// | ////////// globals ////////// | ||
Line 20: | Line 22: | ||
key owner; | key owner; | ||
integer owner_online; | integer owner_online; | ||
string GetStamp(string time) { | |||
list weekdays = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]; | |||
integer a = (integer)time + (offset*3600); | |||
integer hours = a/3600; | |||
integer mins = a/60; | |||
string day = llList2String(weekdays, (hours/24)%7); | |||
return (string)(hours%24) + ":" + (string)(mins%60) + " " + day; | |||
} | |||
default { | default { | ||
state_entry() { | |||
owner = llGetOwner(); | |||
string address = (string)llGetKey() + "@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 + " -- " + GetStamp(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 { | state off { | ||
touch_start(integer num_detect) { | |||
if (llDetectedKey(0) == owner) state default; | |||
} | |||
on_rez(integer start_param) { | |||
llResetScript(); | |||
} | |||
} | } | ||
</pre> |
Revision as of 01:38, 29 March 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Not a Wiki pro, I'll try to not screw it up.
Email-to-IM Script for the Script Library
// 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; // timezone offset from UTC integer offset = -4; ////////// globals ////////// key request; key owner; integer owner_online; string GetStamp(string time) { list weekdays = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]; integer a = (integer)time + (offset*3600); integer hours = a/3600; integer mins = a/60; string day = llList2String(weekdays, (hours/24)%7); return (string)(hours%24) + ":" + (string)(mins%60) + " " + day; } default { state_entry() { owner = llGetOwner(); string address = (string)llGetKey() + "@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 + " -- " + GetStamp(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(); } }