Difference between revisions of "Group Information v1.0"

From Second Life Wiki
Jump to navigation Jump to search
(Blanked the page)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{LSL Header}}


<span style="white-space: nowrap">
<br>
With this script you can retrieve information about the group that is set on the prim.
This information is downloaded from the official Second Life Search page.
<br>
Here you can see what kind of information the script retrieves.
* The name of the group
* What the content of the group is. (PG, Mature or Adult)
* What the group enrollment is. (open or closed)
* How much an avatar needs to pay to get into the group. (Group fee)
* And last but not least, How many members there are in the group.
<br>
There are 2 scripts on this page, the first one says the information on local chat.
<br>
The second gives you a dialog with all the information and a print option that
prints all information on the local chat.
<br>
<br>
<div class="floatleft">
<div class="navbox">
'''Contents'''<br>
*[[#Group Information (Without Dialog)|Group Information (Without Dialog)]]
*[[#Group Information (With Dialog)|Group Information (With Dialog)]]
</div>
</div>
<br>
<br>
<br>
<br>
<br>
If you need any help with the script then you can send an IM inworld to: '''Tyrennic Rivera'''.
==Group Information (Without Dialog)==
<lsl>
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//
//                                                                      //
//  Group Information script v1.0                                        //
//  Without dialog menu                                                  //
//  Created by: Tyrennic Rivera                                          //
//  Finished on: June 10 2009                                            //
//  All Rights Reserved                                                  //
//                                                                      //
//  This script is free software: you can redistribute it and/or modify  //
//  it under the terms that you share this script with other people.    //
//  - You are allowed to use this script in your products however the    //
//    script may not be sold stand alone under any circumstance.        //
//  - If you give this script to other people please give the original  //
//    script with this license.                                          //
//                                                                      //
//  http://creativecommons.org/licenses/by-sa/3.0/                      //
//                                                                      //
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//
key GroupKey;          // Key of the group.
string GroupName;      // The name of the group.
string GroupEnroll;    // The group enrollment (open or closed).
string GroupContent;    // Group contents (PG, Mature or Adult).
integer GroupFee;      // Group fee, How much to pay to join the group.
integer GroupCount;    // The number of members in the group (Includes owners).
default
{
    state_entry()
    {
        llSetObjectName("Group Information");
    }
   
    touch_start(integer total_number)
    {
        // Save the group key for later use.
        GroupKey = llList2Key(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0);
       
        // If a group has been set on the object request group information.
        if(GroupKey != NULL_KEY)
        {
            llHTTPRequest("http://world.secondlife.com/group/" + (string)GroupKey, [], "");
        }
       
        // If no group has been set give a error message.
        else
        {
            llSay(0, "No group has been set. You can set this in build mode under the \"general\" tab.");
        }
    }
       
    http_response(key request_id, integer status, list metadata, string body)
    {
        // This means the page has succesfully loaded.
        if(status == 200)
        {
            // Dont edit this unless you know what you are doing!!
            integer s1 = llSubStringIndex(body, "<title>");
            integer s2 = llSubStringIndex(body, "</title>");
            integer s3 = llSubStringIndex(body, "<meta name=\"member_count\" content=\"");
            integer s4 = llSubStringIndex(body, "<meta name=\"open_enrollment\" content=\"");
            integer s5 = llSubStringIndex(body, "<meta name=\"membership_fee\" content=\"");
            integer s6 = llSubStringIndex(body, "<meta name=\"mat\" content=\"");
           
            // All the group information is saved in these variables.
            GroupName = llGetSubString(body, s1+7, s2-1);
            GroupEnroll = llGetSubString(body, s4+38, s4+38);
            GroupCount = (integer)llGetSubString(body, s3+35, s4-14);
            GroupFee = (integer)llGetSubString(body, s5+37, s6-8);
            GroupContent = llGetSubString(body, s6+26, s1-14);
           
            // When a group contains non-mature content.
            if(GroupContent == "PG_NOT")
            {
                GroupContent = "PG";
            }
           
            // When a group contains mature content.
            else if(GroupContent == "M_NOT")
            {
                GroupContent = "Mature";
            }
           
            // When a group contains adult content.
            else if(GroupContent == "M_AO")
            {
                GroupContent = "Adult";
            }
           
            // If the group enrollment is open.
            if(GroupEnroll == "Y")
            {
                GroupEnroll = "Open";
            }
           
            // Else if the group enrollment is closed.
            else if(GroupEnroll == "N")
            {
                GroupEnroll = "Closed";
            }
           
            // Make a temporary list with the group variables.
            list info = [GroupName, "Content: " + GroupContent, "Enrollment: " + GroupEnroll, "Join fee: L$" + (string)GroupFee, "Members: " + (string)GroupCount];
           
            // Say the group information plus the link to the group.
            llSay(0, llDumpList2String(info, " || ") + "\nsecondlife:///app/group/" + (string)GroupKey + "/about");
        }
        // Triggered when show in search is disabled.
        else if(status == 404)
        {
            llSay(0, "This group has \"Show in search\" disabled, Information cannot be retrieved.");
        }
       
        // If the request has timed out (60 Seconds).
        else if(status == 499)
        {
            llSay(0, "Group information request has timed out.");
        }
    }
}
</lsl>
==Group Information (With Dialog)==
<lsl>
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//
//                                                                      //
//  Group Information script v1.0                                        //
//  With dialog menu                                                    //
//  Created by: Tyrennic Rivera                                          //
//  Finished on: June 10 2009                                            //
//  All Rights Reserved                                                  //
//                                                                      //
//  This script is free software: you can redistribute it and/or modify  //
//  it under the terms that you share this script with other people.    //
//  - You are allowed to use this script in your products however the    //
//    script may not be sold stand alone under any circumstance.        //
//  - If you give this script to other people please give the original  //
//    script with this license.                                          //
//                                                                      //
//  http://creativecommons.org/licenses/by-sa/3.0/                      //
//                                                                      //
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//
key GroupKey;          // Key of the group.
string GroupName;      // The name of the group.
string GroupEnroll;    // The group enrollment (open or closed).
string GroupContent;    // Group contents (PG, Mature or Adult).
integer GroupFee;      // Group fee, How much to pay to join the group.
integer GroupCount;    // The number of members in the group (Includes owners).
key agent;
integer listener;
default
{
    state_entry()
    {
        llSetObjectName("Group Information");
    }
   
    touch_start(integer total_number)
    {
        // Save the group key for later use.
        GroupKey = llList2Key(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0);
       
        // If a group has been set on the object request group information.
        if(GroupKey != NULL_KEY)
        {
            // Save the key of the detected avatar for the dialog.
            agent = llDetectedKey(0);
           
            llHTTPRequest("http://world.secondlife.com/group/" + (string)GroupKey, [], "");
        }
       
        // If no group has been set give a error message.
        else
        {
            llSay(0, "No group has been set. You can set this in build mode under the \"general\" tab.");
        }
    }
   
    listen(integer channel, string name, key id, string message)
    {
        if(message == "Print Info")
        {
            // Make a temporary list with the group variables.
            list info = [GroupName, "Content: " + GroupContent, "Enrollment: " + GroupEnroll, "Join fee: L$" + (string)GroupFee, "Members: " + (string)GroupCount];
           
            // Say the group information plus the link to the group.
            llSay(0, llDumpList2String(info, " || ") + "\nsecondlife:///app/group/" + (string)GroupKey + "/about");
        }
        llListenRemove(listener);
    }
   
    http_response(key request_id, integer status, list metadata, string body)
    {
        // This means the page has succesfully loaded.
        if(status == 200)
        {
            // Dont edit this unless you know what you are doing!!
            integer s1 = llSubStringIndex(body, "<title>");
            integer s2 = llSubStringIndex(body, "</title>");
            integer s3 = llSubStringIndex(body, "<meta name=\"member_count\" content=\"");
            integer s4 = llSubStringIndex(body, "<meta name=\"open_enrollment\" content=\"");
            integer s5 = llSubStringIndex(body, "<meta name=\"membership_fee\" content=\"");
            integer s6 = llSubStringIndex(body, "<meta name=\"mat\" content=\"");
           
            // All the group information is saved in these variables.
            GroupName = llGetSubString(body, s1+7, s2-1);
            GroupEnroll = llGetSubString(body, s4+38, s4+38);
            GroupCount = (integer)llGetSubString(body, s3+35, s4-14);
            GroupFee = (integer)llGetSubString(body, s5+37, s6-8);
            GroupContent = llGetSubString(body, s6+26, s1-14);
           
            // When a group contains non-mature content.
            if(GroupContent == "PG_NOT")
            {
                GroupContent = "PG";
            }
           
            // When a group contains mature content.
            else if(GroupContent == "M_NOT")
            {
                GroupContent = "Mature";
            }
           
            // When a group contains adult content.
            else if(GroupContent == "M_AO")
            {
                GroupContent = "Adult";
            }
           
            // If the group enrollment is open.
            if(GroupEnroll == "Y")
            {
                GroupEnroll = "Open";
            }
           
            // Else if the group enrollment is closed.
            else if(GroupEnroll == "N")
            {
                GroupEnroll = "Closed";
            }
           
            // Open a listenener on channel -1.
            listener = llListen(-1, "", agent, "");
           
            // Give the dialog to the avatar who touched the prim.
            llDialog(agent, "\nGroup: " + GroupName +
            "\nContent: " + GroupContent +
            "\nEnrollment: "+ GroupEnroll +
            "\nGroup Fee: L$" + (string)GroupFee +
            "\nMembers: " + (string)GroupCount, ["OK","Print Info"], -1);
        }
        // Triggered when show in search is disabled.
        else if(status == 404)
        {
            llSay(0, "This group has \"Show in search\" disabled, Information cannot be retrieved.");
        }
       
        // If the request has timed out (60 Seconds).
        else if(status == 499)
        {
            llSay(0, "Group information request has timed out.");
        }
    }
}
</lsl>
</span>

Latest revision as of 17:37, 20 December 2012