Navigateur de textures par menu PDF Imprimer Envoyer
Technique - Scripts
Écrit par ssm2017   
Vendredi, 28 Décembre 2007 12:30
Vous avez un objet qui contient des milliards de textures et voulez les regarder une par une ?
pas de probleme... :)
 
// ssm2017 Binder : ssm_texture_browser
// @copyright  Copyright (C) 2007 ssm2017 Binder (S.Massiaux). All rights reserved.
// @license  GNU/GPL, http://www.gnu.org/licenses/gpl-2.0.html
// ssm_texture_browser is free software. This version may have been modified pursuant to the
// GNU General Public License, and as distributed it includes or is derivative
// of works licensed under the GNU General Public License
// or other free or open source software licenses.
 
integer textureCount;
integer textureId = 0;
integer menuChannel;
integer menuListener;
key owner;
default
{
    on_rez(integer number)
    {
        llResetScript();
    }
    state_entry()
    {
        textureCount = llGetInventoryNumber(INVENTORY_TEXTURE);
        menuChannel = llFloor(llFrand(100000.0)) + 1000;
        owner = llGetOwner();
    }
 
    touch_start(integer total_number)
    {
        if ( llDetectedKey(0) == owner )
        {
            menuListener = llListen(menuChannel, "", owner, "");
            llDialog(owner,"Choose a way : ", ["-10", "<<", ">>", "+10", "give"], menuChannel);
        }
    }
    listen(integer channel, string name, key id, string msg) 
    {
        if ( msg == ">>" )
        {
            ++textureId;
        }
        else if ( msg == "<<" )
        {
            --textureId;
        }
        else if ( msg == "-10" )
        {
            textureId -= 10;
        }
        else if ( msg == "+10" )
        {
            textureId += 10;
        }
        else if ( msg == "give" )
        {
            llGiveInventory(owner, llGetInventoryName(INVENTORY_TEXTURE,textureId));
        }
        if ( textureId < 0 )
        {
            textureId = textureCount-1;
        }
        if ( textureId > textureCount )
        {
            textureId = 0;
        }
 
        string name = llGetInventoryName(INVENTORY_TEXTURE, textureId);
        llSetTexture(name, 1);
        llSetText(name,<1,1,1>,1);
        llDialog(owner,"Choose a way : ", ["-10", "<<", ">>", "+10", "give"], menuChannel);
        //llListenRemove(menuListener);
    }
    changed(integer change)
    {
        if (change & CHANGED_INVENTORY)
        {
            llResetScript();
        }
    }
}