LlRequestSimulatorData
De DigiWiki.
string gSimName; key gStatusQuery; string gStatus; string gRating; key SimPos; default { state_entry() { llListen(1, "", "", ""); } listen(integer channel, string name, key id, string mesg) { gSimName = mesg; gStatusQuery = llRequestSimulatorData(gSimName, DATA_SIM_STATUS); gRating = llRequestSimulatorData(gSimName, DATA_SIM_RATING); SimPos = llRequestSimulatorData(gSimName, DATA_SIM_POS); } dataserver(key queryId, string data) { if (queryId == gStatusQuery) { gStatus = data; } else if (queryId == gRating) { gRating = data; } else { vector SimPos? = (vector) data; llSay(0, gSimName + " (" + gRating + ") " + "(" + (string)((integer) SimPos?.x) + ", " + (string)((integer) SimPos?.y) + ") is " + gStatus); } } }
key ahernStatusQuery; key ahernPosQuery; default { touch_start(integer total_number) { ahernStatusQuery = llRequestSimulatorData("ahern", DATA_SIM_STATUS); ahernPosQuery = llRequestSimulatorData("ahern", DATA_SIM_POS); } dataserver(key queryId, string data) { if (queryId == ahernStatusQuery) { ahernStatusQuery = ""; llSay(0, "Status of Ahern: " + data); } else if (queryId == ahernPosQuery) { ahernPosQuery = ""; llSay(0, "Ahern's position: " + data); } } }
Hide objects in PG or unknown regions
key gRateingQuery = NULL_KEY; default { state_entry() { gRateingQuery = llRequestSimulatorData( llGetRegionName(), DATA_SIM_RATING ); } dataserver(key query_id, string data) { if (query_id == gRateingQuery) { if (data == "MATURE" || data == "ADULT") llSetLinkAlpha(LINK_SET, 1.0, ALL_SIDES); else if (data == "UNKNOWN" || data == "PG") llSetLinkAlpha(LINK_SET, 0.0, ALL_SIDES); } } on_rez(integer Setting) {llResetScript();} changed(integer ItChanged) { if (ItChanged & CHANGED_OWNER) llResetScript(); if (ItChanged & CHANGED_REGION) llResetScript(); } }
string email_address = "leproprio@gmail.com"; list regions = [ "Garmu", "Bruda", "Qrassica", "Broadwater", "Predrow", "Derimon","Kellig", "Melisande", "Osbourne Beach", "Osbourne Walk","Caeshu","Patavium","Maso Ariol", "Henrietta","Sea of Antiquity","Sailor","Deadly Fear","Jieut","Land Of Light","Venn"]; list list_ids; default { state_entry() { llSetTimerEvent ( 300 ); } timer() { integer i; key Id; string region_checked; integer nb_regions_checked = llGetListLength ( regions ); // nombre de régions list_ids = []; for (i = 0; i < nb_regions_checked; ++i) { region_checked = llList2String(regions,i); // pour une région Id = llRequestSimulatorData( region_checked , DATA_SIM_STATUS ); // on effectue la requête list_ids += [Id,region_checked]; // et on ASSOCIE dans une liste // le couple Id/Région // puisque l'on sait que cette ligne de code sera } // lu AVANT de recevoir les données..... } dataserver(key queryId, string data) { integer index = llListFindList(list_ids, (list)queryId); // Après on teste l'existence de ID dans la liste.... if(index != -1) { if (data != "up") // et son status et le tour est joué! llEmail( email_address, "Alert from Second Life about one of your region ", llList2String(list_ids,index+1) + " is " + data ); } } }