Jump to content
Sign in to follow this  
fjmm1970

Problema con llAttachToAvatar con un HUD si no eres el propietario (creador del script) del prim...

Recommended Posts

Hola...

Soy nuevo en este tipo de programacion y estoy intentado hacer lo mismo pero con un HUD.

Estoy trabajando en un tema de enseñanza y necesito que el contenido de un prim solo sea visualizado por el avatanr que lo tiene conectado como HUD.

He conseguido que el propietario (quien añada el script al prim) pueda conectarselo con llAttachToAvatar al hacer la comprobacion de permisos con llRequestPermission() lo haga sin problemas,pero lo que necesito es que lo haga cualquier otro usuario queno sea propietario del objeto.

Ahi es donde el script no me funciona,en el punto donde pide permisos y no se le concede.Es mas,falla silenciosamente y me tiene muy perdido porque hago segun lo indican los manuales de programacion en LSL.Es mas,he observado que si con el menu contextual del boton derecho del raton esta activo la opcion 'Ponerme' ('Put On' con el visor en ingles) el script funciona y permite un Attach correctamente,pero si la opcion del menu esta desactiva no funciona bien.

Sabeis si tengo que darle algun permiso de forma especifica?

Les he dado todos los permisos posibles al Prim y no funciona.Igual es que le he dado de mas...

El codigo es:
---------------------------------------------------------------------------------
state_entry()
    {      
      //Otro codigo...
      llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
      //Otro codigo...
    }

run_time_permissions(integer perms)
    {
        if (perms & PERMISSION_ATTACH)
        {
            llAttachToAvatar(ATTACH_HUD_CENTER_1);        
        }
    }

---------------------------------------------------------------------------------

Gracias por adelantado...

Share this post


Link to post
Share on other sites

Quizas el problema sea este:

 

   http://wiki.secondlife.com/wiki/LlAttachToAvatar

 

 

Con esta condición funciona:

key avatar;default{    on_rez(integer start_param){         avatar=llGetOwner();         llRequestPermissions(avatar, PERMISSION_ATTACH);      }        run_time_permissions(integer perm){        if (avatar==llGetPermissionsKey()) llAttachToAvatarTemp(ATTACH_RHAND);     }     }

Share this post


Link to post
Share on other sites

Gracias Voodoo Radek,pero lo que pretendo es que tocando un prim este se anexe automaticamente como un HUD (concretamente con la orden "llAttachToAvatar(ATTACH_HUD_CENTER_1)").El codigo seria este:

default
{
    state_entry()
    {
        llSay(0, "Prueba de Attach");
    }

    touch_start(integer total_number)
    {
         llRequestPermissions(llGetOwner(), PERMISSION_ATTACH);
    }
    
    run_time_permissions(integer perms)
    {
        if (perms & PERMISSION_ATTACH)
        {
            llAttachToAvatar(ATTACH_HUD_CENTER_1);        
        }
    }
}

------------------------------------------------------------------------------------------------------------------------------------------------------------

En realidad el script es mas complejo y hace mas cosas (se redimensiona,carga texturas,...,etc),pero este vale como prueba de concepto.Si construyes un prim y le pones este script observaras que como propietario te preguntara si quieres anexarte indicando cual es el propietario del mismo.Si se le contesta que si se muestra como HUD para el avatar en exclusiva (desaparece estando centrado).Despues con el menu contextual puedes soltarlo con la opción 'Soltar' y se retorna a Sim.

Si haces la misma operación con un avatar que no es el propietario (o que no construyo el prim con el script ejemplo),para empezar el menu contextual "Ponerme" aparece desactivado (es significativo porque indica que no puedes anexartelo y ejecutar con garantias 'llAttachToAvatar()') y si lo tocas falla silenciosamente y no te pregunta si quieres anexartelo,aunque ejecutará cualquier otro codigo pero lo mas importante es que se muestre solo para ti como HUD no se realizará.En mi desarrollo lo que muestra es un examen que no interesa que sea visto por otros avatares cercanos.

Lo que si funciona es coger una copia y desde el Inventario anexartelo como HUD,o incluso a cualquier parte del cuerpo (aunque no queda bien la verdad).El problema de esto es que se pierde control para realizar,entre otras cosas,redimension ,carga de texturas,...,etc.Aparte esta el tema de que el inventario se llena de "basura" por llamarlo de alguna manera.

 

Share this post


Link to post
Share on other sites

Cambia el evento de on_rez por el de tocar. Con esta condición en el run_time me funciona con mi avatar y con los demas. Además con la función llAttachToAvatarTemp no se crea objeto alguno en el inventario, así que menos basura.

 

key avatar;default{
touch_start(integer total_number){ avatar=llGetOwner(); llRequestPermissions(avatar, PERMISSION_ATTACH); } run_time_permissions(integer perm){ if (avatar==llGetPermissionsKey()) llAttachToAvatarTemp(ATTACH_HUD_CENTER_1); } }

Siento no haber respondido antes.

 

 Edit: me he dado cuenta de que tenia un error en el codigo de mi anterior post, ahora deberían funcionar ambos.

Share this post


Link to post
Share on other sites

Hola.

Perdona la tardanza en contestarte,pero epoca de vacaciones de por medio ya se sabe...

He hecho pruebas y me funciona con el usuario que crear el objeto y le añade el script,pero no con otro usuario normal que lo toca y deberia de anexarsele autocamente.El script que me has pasado se comporta,mas o menos, como el script que puse de ejemplo con la salvedad de que es temporal y desaparece del escenario al soltarlo.

Solo me queda preguntarte si le has dado algun tipo de permiso en particular,porque no se me ocurre otra cosa que pueda ser la causa de que no me funcione a mi y a ti te vaya.

 

Gracias por adelantado.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...