Random Dynamic Texture

De DigiWiki.

  • Voici un script permettant d'afficher des images du web sur un prim.
  • Threat Level: VeryLow (pour autoriser osSetDynamicTextureURLBlendFace).
  • Compatibilité: OpenSim & Aurora-Sim
// Random Dynamic Texture v0.2 by djphil
 
string  datas = "http://YOUR_URL/index.php";
integer faces = 8;
float   tempo = 60.0;
integer clics;
 
SetRandomImages()
{
    integer i;
    do osSetDynamicTextureURLBlendFace("", "image", datas, "width:512, height:512", FALSE, 2, 0, 255, i);
    while ((++i) <= faces);
}
 
default
{
    state_entry() {SetRandomImages();}
 
    on_rez(integer start_param) {llResetScript();}
 
    touch_start(integer number)
    {
        ++clics;
        if(clics == 1) {llSetTimerEvent(1.0);}
        else {llResetScript();}
    }
 
    timer()
    {
        SetRandomImages();
        llSetTimerEvent(tempo);
    }
}
  • La version 0.3 inclu différents droits d'accès (public, owner, group).
// Random Dynamic Texture v0.3 by djphil
 
string  acces = "public"; // public, owner, group
string  datas = "http://YOUR_URL/index.php";
integer faces = 8;
float   tempo = 60.0;
integer clics;
 
key asObjectOwner()
{
    list details = llGetObjectDetails(llGetKey(), [OBJECT_OWNER]);
    return (key)llList2CSV(details);
}
 
integer asAccessCheck(key id)
{
    if(llSubStringIndex(llToLower(acces), "public") != -1) {return TRUE;}
 
    else if((llSubStringIndex(llToLower(acces), "group") != -1)||(asObjectOwner() == id))
    {
        if(llSameGroup(id) == TRUE) {return TRUE;}
        else {return FALSE;}
    }
    else if(llSubStringIndex(llToLower(acces), "owner") != -1)
    {
        if(asObjectOwner() == id) {return TRUE;}
        else {return FALSE;}
    }
    else {return FALSE;}
}
 
SetRandomImages()
{
    integer i;
    do osSetDynamicTextureURLBlendFace("", "image", datas, "width:512, height:512", FALSE, 2, 0, 255, i);
    while ((++i) <= faces);
}
 
default
{
    state_entry() {SetRandomImages();}
 
    on_rez(integer start_param) {llResetScript();}
    changed(integer change) {if (change & (CHANGED_OWNER)) llResetScript();}
 
    touch_start(integer number)
    {
        if(asAccessCheck(llDetectedKey(0)) == TRUE)
        {
            ++clics;
            if(clics == 1) {llSetTimerEvent(1.0);}
            else {llResetScript();}
        }
        else {llWhisper(0, "Access Denied");}
    }
 
    timer()
    {
        SetRandomImages();
        llSetTimerEvent(tempo);
    }
}
  • Voici le code php pour la page "index.php" (à placer dans le même dossier que les images).
<?php
 
// Random Image by Matt Mullenweg
 
$folder = '';
$exts = 'jpg jpeg png gif';
$files = array(); $i = -1;
 
if ('' == $folder) $folder = './';
    $handle = opendir($folder);
$exts = explode(' ', $exts);
 
while (false !== ($file = readdir($handle)))
{
    foreach($exts as $ext)
    {
        if (preg_match('/\.'.$ext.'$/i', $file, $test))
	{
            $files[] = $file;
	    ++$i;
	}
    }
}
closedir($handle);
mt_srand((double)microtime()*1000000);
$rand = mt_rand(0, $i);
header('Location: '.$folder.$files[$rand]);
?>
Outils personnels
  • Cette page a été consultée 875 fois.
donate
Google Ads