Last active
October 5, 2015 18:37
-
-
Save antonyfairport/2855164 to your computer and use it in GitHub Desktop.
Simple script that notifies you via IM, or email, when your sim has restarted
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
////////////////////////////////////////////////////////////////////// | |
// Sim Restart Notifier -- By Antony Fairport | |
// | |
// Informs you when the sim it is located on restarts. Handy during | |
// rolling restarts when you've had to run away and want to be told | |
// as soon as it's back up. | |
// | |
// Revision history: | |
// ------------------------------------------------------------ | |
// | |
// 2012-05-21 | |
// Added more information to the notification (channel, version, etc) | |
// and also added the option to send an email instead of an IM. | |
// | |
// 2011-05-31 | |
// First version. | |
////////////////////////////////////////////////////////////////////// | |
// Set the following to an email address if you want the restart | |
// notifier to send an email rather than send an IM. Leave it empty | |
// to get an IM instead. | |
string EMAIL_TO = ""; | |
////////////////////////////////////////////////////////////////////// | |
// Gobals. | |
string g_sLastChannel = ""; | |
string g_sLastVersion = ""; | |
string g_sLastHost = ""; | |
string g_sLastRestart = ""; | |
////////////////////////////////////////////////////////////////////// | |
// Format a llGetTimestamp() | |
string FormatTime( string sTime ) | |
{ | |
list l = llParseString2List( sTime, [ "T", "." ], [] ); | |
return llList2String( l, 0 ) + " " + llList2String( l, 1 ) + " UTC"; | |
} | |
////////////////////////////////////////////////////////////////////// | |
// Record details about the current server. | |
RememberServer() | |
{ | |
g_sLastChannel = llGetEnv( "sim_channel" ); | |
g_sLastVersion = llGetEnv( "sim_version" ); | |
g_sLastHost = llGetSimulatorHostname(); | |
} | |
////////////////////////////////////////////////////////////////////// | |
// Return details of a change (or not). | |
string Changed( string sOld, string sNew ) | |
{ | |
if ( sOld != sNew ) | |
{ | |
return " (Changed. Was " + sOld + ")"; | |
} | |
else | |
{ | |
return ""; | |
} | |
} | |
////////////////////////////////////////////////////////////////////// | |
// Send out the information about the restart. | |
InformAboutRestart() | |
{ | |
// Remember the time of this restart. | |
g_sLastRestart = FormatTime( llGetTimestamp() ); | |
// The headline for the information. | |
string sHeadline = llGetRegionName() + " has restarted."; | |
// The body of the information. | |
string s = sHeadline + "\n\n"; | |
// Get the current information about the region. | |
string sChannel = llGetEnv( "sim_channel" ); | |
string sVersion = llGetEnv( "sim_version" ); | |
string sHost = llGetSimulatorHostname(); | |
// Add the host/server details. | |
s += "Channel: " + sChannel + Changed( g_sLastChannel, sChannel ) + "\n"; | |
s += "Version: " + sVersion + Changed( g_sLastVersion, sVersion ) + "\n"; | |
s += "Host: " + sHost + Changed( g_sLastHost, sHost ) + "\n"; | |
// Having compared, we remember the new server state. | |
RememberServer(); | |
// If we have an email address... | |
if ( EMAIL_TO != "" ) | |
{ | |
// ...send it as an email. | |
llEmail( EMAIL_TO, sHeadline, s ); | |
} | |
else | |
{ | |
// No email address. Just IM it. | |
llInstantMessage( llGetOwner(), s ); | |
} | |
} | |
////////////////////////////////////////////////////////////////////// | |
// Default state. | |
default | |
{ | |
////////////////////////////////////////////////////////////////// | |
// State entry. | |
state_entry() | |
{ | |
// Remember the current details of the server. | |
RememberServer(); | |
} | |
////////////////////////////////////////////////////////////////// | |
// Reset on rez. | |
on_rez( integer start_param ) | |
{ | |
llResetScript(); | |
} | |
////////////////////////////////////////////////////////////////// | |
// React to a touch. | |
touch_start( integer num_detected ) | |
{ | |
// If we don't have a last restart time... | |
if ( g_sLastRestart == "" ) | |
{ | |
// ...so say. | |
llWhisper( 0, "No restart has been recorded yet." ); | |
} | |
else | |
{ | |
// Otherwise say what the last recorded restart time is. | |
llWhisper( 0, "Last restart was " + g_sLastRestart ); | |
} | |
} | |
////////////////////////////////////////////////////////////////// | |
// React to changes. | |
changed( integer change ) | |
{ | |
// If the region has started... | |
if ( change & CHANGED_REGION_START ) | |
{ | |
// ...inform about the restart. | |
InformAboutRestart(); | |
} | |
// Reset if we're passed on. | |
else if ( change & CHANGED_OWNER ) | |
{ | |
llResetScript(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment