PPT Slideshow

De DigiWiki.

PrimFunction LinkNumber Texture
Main Display Prim (root) 1 (root prim is always 1) Shows "current" texture
Back button 3 Suggested icon: left arrow
Home or Refresh button 2 Suggested icon: Home or Refresh
Slide pre-load display 4 Shows "next" slide
Slide pre-load display 5 Shows "next+1" slide
Slide pre-load display 6 Shows "next+2" slide
Slide pre-load display 7 Shows "next+3" slide
Slide pre-load display 8 Shows "next+4" slide
Next button 9 Suggested icon: right arrow
Lock/Unlock button 10 Need two textures showing locked or unlocked status, replace the UUID for the appropriate texture as indicated in the script below.

Script:

// PPT Slideshow for Opensim Script
//
// Based on a script created in September 2007
// by Dr. Allen Partridge (SL: DoctorPartridge Allen)
//
// Modifications by Chad Sherman to allow for reset and backward browsing.
// Modifications by Dr. Partridge June 08 to fix the lag probs common in slide viewers.
// Modifications by Ryon Steele (SL: Ryon Bloobury) 2010 to work in Opensim.
//
// Original script permissions from Dr. Partridge:
// "Feel free to use as you desire.. You can reprogram the script as you like - but
// please send updates to DoctorPartridge Allen in sl if you do."
//
// -------------------------------------------------------------------------------------
 
integer pCurrentSlide = 0;
integer pSlideCount;
integer pLockState = 0;
list pAccessList = [];
integer dialog_channel= 1751;
key pLastId;
list tTest;
string person;
integer foundIndex;
string name4;
string name;
string name1;
string name2;
string name3;
string name5;
 
default
{
    state_entry()
    {
         llListen(dialog_channel,"", "","");
         integer number = llGetInventoryNumber(INVENTORY_TEXTURE);
         pSlideCount = number;
         string name1 = llGetInventoryName(INVENTORY_TEXTURE, 1);
         string name2 = llGetInventoryName(INVENTORY_TEXTURE, 2);
         string name3 = llGetInventoryName(INVENTORY_TEXTURE, 3);
         string name4 = llGetInventoryName(INVENTORY_TEXTURE, 4);
         string name5 = llGetInventoryName(INVENTORY_TEXTURE, 5);
         llSetLinkTexture(4, name1, 3);
         llSetLinkTexture(5, name2, 3);
         llSetLinkTexture(6, name3, 3);
         llSetLinkTexture(7, name4, 3);
         llSetLinkTexture(8, name5, 3);
         string name = llGetInventoryName(INVENTORY_TEXTURE, pCurrentSlide);
         llSetTexture(name, 3);
         if (pLockState  == 0)
         {
             llSetLinkTexture(10, "fdec159a-3f22-4a16-bc23-b5ed32aa76f0", 3);  //locked texture
            }else{
             llSetLinkTexture(10, "80eb8824-22ca-4bdf-9449-e8be5f65d7f2", 3);  //unlocked texture
         }
    }
        on_rez(integer start_param)
    {
        llResetScript();
    }
    touch_start(integer total_number)
        {
            pLastId = llDetectedKey(0);
        integer number = llGetInventoryNumber(INVENTORY_TEXTURE);
        pSlideCount = number;
        string button = llGetLinkName(llDetectedLinkNumber(0));
        if (button == "lock")
        {
        }else{
            if (pLockState == 1)
            {
                if (llDetectedKey(0) != llGetOwner())
                {
                     person = llDetectedName(0);
                     tTest = [person];
 
                     foundIndex = llListFindList(pAccessList, tTest);
                    if (foundIndex == -1)
                    {
                        llInstantMessage(llDetectedKey(0), "You do not have permission to use this viewer.");
                        llInstantMessage(llDetectedKey(0), "You may request permission from the owner, by clicking the lock on the side of the screen.");
                        return;
                    }
                }
            }
        }
        list tButtonList = ["back", "open", "1","2","3","4","5","next","lock"];
         tTest = [(button)];
         foundIndex = llListFindList(tButtonList, tTest);
        if (foundIndex == -1)
        {
            if (pCurrentSlide < pSlideCount)
            {
                pCurrentSlide += 1;
                }else{
                pCurrentSlide = 0;
            }
        }
        if (button == "lock")
        {
            if (llDetectedKey(0) != llGetOwner())
            {
                person = llDetectedName(0);
                 tTest = [person];
                 foundIndex = llListFindList(pAccessList, tTest);
                if (foundIndex == -1)
                {
                    list pApprovalMenu = [];
                    list tList = [(person), "No Access"];
                    pApprovalMenu = llListInsertList(pApprovalMenu, tList, 0);
                    llDialog( llGetOwner(), ("\n \n"+person+" has asked to use your slide viewer. Grant permission to whom?"), pApprovalMenu, dialog_channel );
                }else{
                    llInstantMessage(llDetectedKey(0), ((person) + " is logging out. Access control is now removed for this user."));
                    pAccessList = llDeleteSubList(pAccessList, foundIndex, foundIndex);
                }
            }else{
                if (pLockState == 0) {
                    pLockState = 1;
                    llSetLinkTexture(10, "0aede32a-d379-49b7-ab0e-e2d35ec27b3a", 3);  //locked texture
                }else{
                    pLockState = 0;
                    llSetLinkTexture(10, "d95efd1e-45b8-4931-9cba-9b70a28fc596", 3);  //unlocked texture
                }
            }
        }
    if (button == "back")
    {
        if (pCurrentSlide > 0)
        {
            pCurrentSlide = pCurrentSlide - 1;
        }else{
            pCurrentSlide = pSlideCount - 1;
        }
    }
    if (button == "open")
    {
        pCurrentSlide = 0;
    }
    if (button == "1")
    {
        if (pCurrentSlide < pSlideCount)
        {
            pCurrentSlide += 1;
        }else{
            pCurrentSlide = 0;
        }
    }
    if (button == "2")
    {
        if (pCurrentSlide+2 < pSlideCount)
        {
            pCurrentSlide += 2;
        }else{
            integer dif = (pSlideCount - pCurrentSlide);
            pCurrentSlide = 2-dif;
        }
    }
    if (button == "3")
    {
        if (pCurrentSlide+3 < pSlideCount)
        {
            pCurrentSlide += 3;
        }else{
            integer dif = (pSlideCount - pCurrentSlide);
            pCurrentSlide = 3-dif;
        }
    }
    if (button == "4")
    {
        if (pCurrentSlide+4 < pSlideCount)
        {
            pCurrentSlide += 4;
        }else{
            integer dif = (pSlideCount - pCurrentSlide);
            pCurrentSlide = 4-dif;
        }
    }
    if (button == "5")
    {
        if (pCurrentSlide+5 < pSlideCount)
        {
            pCurrentSlide += 5;
        }else{
            integer dif = (pSlideCount - pCurrentSlide);
            pCurrentSlide = 5-dif;
        }
    }
    if (button == "next")
    {
        if (pCurrentSlide < pSlideCount)
        {
            pCurrentSlide += 1;
        }else{
            pCurrentSlide = 0;
        }
    }
    string name = llGetInventoryName(INVENTORY_TEXTURE, pCurrentSlide);
    if (name != "") {
        llSetTexture(name, 3);
    }else{
        pCurrentSlide = 0;
         name = llGetInventoryName(INVENTORY_TEXTURE, pCurrentSlide);
        llSetTexture(name, 3);
    }
    if (pCurrentSlide + 1 < pSlideCount) {
         name1 = llGetInventoryName(INVENTORY_TEXTURE, pCurrentSlide+1);
         llSetLinkTexture(4, name1, 3);
    }else{
        integer dif = (pSlideCount - pCurrentSlide);
         name1 = llGetInventoryName(INVENTORY_TEXTURE, 1-dif);
        llSetLinkTexture(4, name1, 3);
    }
    if (pCurrentSlide + 2 < pSlideCount) {
         name2 = llGetInventoryName(INVENTORY_TEXTURE, pCurrentSlide + 2);
        llSetLinkTexture(5, name2, 3);
    }else{
        integer dif = (pSlideCount - pCurrentSlide);
         name2 = llGetInventoryName(INVENTORY_TEXTURE, 2-dif);
        llSetLinkTexture(5, name2, 3);
    }
    if (pCurrentSlide + 3 < pSlideCount) {
         name3 = llGetInventoryName(INVENTORY_TEXTURE, pCurrentSlide + 3);
        llSetLinkTexture(6, name3, 3);
    }else{
        integer dif = (pSlideCount - pCurrentSlide);
         name3 = llGetInventoryName(INVENTORY_TEXTURE, 3-dif);
        llSetLinkTexture(6, name3, 3);
    }
    if (pCurrentSlide + 4 < pSlideCount) {
         name4 = llGetInventoryName(INVENTORY_TEXTURE, pCurrentSlide + 4);
        llSetLinkTexture(7, name4, 3);
    }else{
        integer dif = (pSlideCount - pCurrentSlide);
         name4 = llGetInventoryName(INVENTORY_TEXTURE, 4-dif);;
        llSetLinkTexture(7, name4, 3);
    }
    if (pCurrentSlide + 5 < pSlideCount) {
         name5 = llGetInventoryName(INVENTORY_TEXTURE, pCurrentSlide + 5);
        llSetLinkTexture(8, name5, 3);
    }else{
        integer dif = (pSlideCount - pCurrentSlide);
         name5 = llGetInventoryName(INVENTORY_TEXTURE, 5-dif);
        llSetLinkTexture(8, name5, 3);
    }
}
    listen(integer incoming_channel, string name, key id, string mes)
    {
    if(id == llGetOwnerKey(id)){
        if (incoming_channel == dialog_channel){
            if (mes != "No Access"){
                llInstantMessage(pLastId, (name + " has granted "+mes+" permission to use their slide viewer."));
                list insertNameList = [(mes)];
                list tTest = [mes];
                integer foundIndex = llListFindList(pAccessList, tTest);
                    if (foundIndex == -1){
                        pAccessList = llListInsertList(pAccessList, insertNameList, 0);
                    }else{
                        llInstantMessage(pLastId, (mes+ " was already on the access list."));
                    }
            }else{
                llInstantMessage(pLastId, (name + " has denied your request for permission to use their slide viewer."));
            }
            }
        }
    }
}
Outils personnels
  • Cette page a été consultée 876 fois.
donate
Google Ads