Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- key owner;
- string region;
- list regions;
- list groups;
- string defaultgroup;
- //notecard
- integer qline = 0;
- key query;
- key nc;
- //listen
- integer listener;
- integer chan = -1337;
- loadGroups() {
- llOwnerSay("loading notecard...");
- qline = 0;
- groups = [];
- regions = [];
- defaultgroup = "";
- nc = llGetInventoryKey("config");
- if(nc == NULL_KEY) { llOwnerSay("NC not found: please make sure your notecard is called \"config\" without the quotation marks."); return;}
- query = llGetNotecardLine(nc, qline);
- llOwnerSay("finish loading.");
- }
- integer setGroup() {
- region = llGetRegionName();
- integer i;
- integer max = llGetListLength(regions);
- for(i = 0;i <= max;i++) {
- string tmp = llList2String(regions, i);
- if(llGetSubString(tmp, -1, -1) == "*") {
- //region match
- if(tmp == (llGetSubString(region,0, (llStringLength(tmp) - 2)) + "*" )) {
- llOwnerSay("@setgroup:"+ llList2String(groups, i) +"=force");
- i = max;
- return TRUE;
- }
- }
- //no wildcard
- else {
- if(tmp == region) {
- llOwnerSay("@setgroup:"+ llList2String(groups, i) +"=force");
- i = max;
- return TRUE;
- }
- }
- }
- return FALSE;
- }
- default
- {
- attach(key av) { llResetScript(); }
- state_entry() {
- llSetColor(<0,1,0>,ALL_SIDES);
- if(groups == []) loadGroups();
- owner = llGetOwner();
- if(setGroup() == FALSE) llOwnerSay("@setgroup:"+ defaultgroup +"=force");;
- }
- changed(integer p) {
- if(p & CHANGED_REGION) if(setGroup() == FALSE) llOwnerSay("@setgroup:"+ defaultgroup +"=force");
- if((p & CHANGED_OWNER) || (p & CHANGED_INVENTORY)) loadGroups();
- }
- dataserver(key query_id, string data) {
- if(query != query_id) return;
- if(data == EOF) return;
- //clean
- data = llStringTrim(data, STRING_TRIM);
- if(llGetSubString(data,0,0) != "#") {
- list tmp = llParseString2List(data, ["="], []);
- //key=value
- if(llGetListLength(tmp) > 1) {
- regions += [llList2String(tmp,0)]; groups += [llList2String(tmp,1)];
- }
- else { //default
- defaultgroup = data;
- }
- }
- qline++; query = llGetNotecardLine(nc, qline);
- }
- touch_start(integer i) {
- if(owner == llDetectedKey(0)) {
- listener = llListen(chan, "", owner, ""); llDialog(owner, "Choose an action..", ["Reset", "Disable"], chan);
- }
- }
- listen(integer chan, string name, key av, string msg) {
- llListenRemove(listener);
- if(msg == "Reset") llResetScript();
- else if(msg == "Disable") state off;
- }
- }
- state off {
- state_entry() { llSetColor(<1,0,0>,ALL_SIDES); }
- touch_start(integer i) {
- if(owner == llDetectedKey(0)) {
- listener = llListen(chan, "", owner, ""); llDialog(owner, "Choose an action..", ["Reset", "Enable"], chan);
- }
- }
- listen(integer chan, string name, key av, string msg) {
- llListenRemove(listener);
- if(msg == "Reset") llResetScript();
- else if(msg == "Enable") state default;
- }
- changed(integer p) {
- if((p & CHANGED_OWNER) || (p & CHANGED_INVENTORY)) loadGroups();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement