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();
}
}
}
|