Random Dynamic Texture
De DigiWiki.
Version du 18 janvier 2013 à 07:05 par Djphil (discuter | contributions)
- 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]); ?>