Jump to content

Klausiii

Resident
  • Posts

    7
  • Joined

  • Last visited

Posts posted by Klausiii

  1. Hi there, 

    now i am trying to inplement the dialogmenu as Innula told me to do.

    So far it is working, only problem is that i not see the ----> button even though there are more as 14 people.

    Already checked the scripted multiple times but am not able to find the error :-(

    Could somebody give me tips to solve this problem please

    integer listen_handle;
    list namesList;
    list uuidList;
    integer dlgHandle = -1;
    integer dlgChannel = -12345;
    integer gMenuPosition;  // Index number of the first button on the current page
    integer gLsn;   // Dialog Listen Handle
    
    Menu()
    {
        integer Last;
        list Buttons;
        integer All = llGetListLength(namesList);
        if(gMenuPosition >= 9)   //This is NOT the first menu page
        {
            Buttons += "    <----";
            if((All - gMenuPosition) > 11)  // This is not the last page
            {
                Buttons += "    ---->";
            }
            else    // This IS the last page
            {
                Last = TRUE;
            }            
        }    
        else if (All > gMenuPosition+9) // This IS the first page
        {
            if((All - gMenuPosition) > 11)  // There are more pages to follow
            {
                Buttons += "    ---->";
            }
            else    // This IS the last page
            {
                Last = TRUE;
            }            
        }
        else    // This is the only menu page
        {
            Last = TRUE;
        }
        if (All > 0)
        {
            integer b;
            integer len = llGetListLength(Buttons);
            // This bizarre test does the important work ......        
            for(b = gMenuPosition + len + Last - 1 ; (len < 12)&&(b < All); ++b)
            {
                Buttons = Buttons + [llList2String(namesList,b)];
                len = llGetListLength(Buttons);
            }
        }
        gLsn = llListen(-12345,"","","");    
        llSetTimerEvent(10.0);
        llDialog(llGetOwner()," \n",Buttons,-12345);
    }
    MakeParticles(key target)                //This is the function that actually starts the particle system.
    {                
        llParticleSystem([                   //KPSv1.0  
        PSYS_PART_FLAGS , 0 //Comment out any of the following masks to deactivate them
        //| PSYS_PART_BOUNCE_MASK           //Bounce on object's z-axis
        //| PSYS_PART_WIND_MASK             //Particles are moved by wind
        //Colors fade from start to end 
        | PSYS_PART_INTERP_SCALE_MASK       //Scale fades from beginning to end
        | PSYS_PART_FOLLOW_SRC_MASK         //Particles follow the emitter
        | PSYS_PART_FOLLOW_VELOCITY_MASK    //Particles are created at the velocity of the emitter
        | PSYS_PART_TARGET_POS_MASK       //Particles follow the target
        | PSYS_PART_EMISSIVE_MASK           //Particles are self-lit (glow)
        //| PSYS_PART_TARGET_LINEAR_MASK    //Undocumented--Sends particles in straight line?
        ,
        
        PSYS_SRC_TARGET_KEY , target ,   //Key of the target for the particles to head towards
                                                    //This one is particularly finicky, so be careful.
        //Choose one of these as a pattern:
        //PSYS_SRC_PATTERN_DROP                 Particles start at emitter with no velocity
        //PSYS_SRC_PATTERN_EXPLODE              Particles explode from the emitter
        //PSYS_SRC_PATTERN_ANGLE                Particles are emitted in a 2-D angle
        //PSYS_SRC_PATTERN_ANGLE_CONE           Particles are emitted in a 3-D cone
        //PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY     Particles are emitted everywhere except for a 3-D cone
        
        PSYS_SRC_PATTERN,           PSYS_SRC_PATTERN_EXPLODE
        
        ,PSYS_SRC_TEXTURE,           "722832d3-e47b-d6c6-8070-b39e8734eb54"                 //UUID of the desired particle texture, or inventory name
        ,PSYS_SRC_MAX_AGE,           10.0                //Time, in seconds, for particles to be emitted. 0 = forever
        ,PSYS_PART_MAX_AGE,          3.0                //Lifetime, in seconds, that a particle lasts
        ,PSYS_SRC_BURST_RATE,        1               //How long, in seconds, between each emission
        ,PSYS_SRC_BURST_PART_COUNT,  15                  //Number of particles per emission
        ,PSYS_SRC_BURST_RADIUS,      5.0                //Radius of emission
        ,PSYS_SRC_BURST_SPEED_MIN,   1.5                //Minimum speed of an emitted particle
        ,PSYS_SRC_BURST_SPEED_MAX,   2.0                //Maximum speed of an emitted particle
        ,PSYS_SRC_ACCEL,             <0.0,0.0,-0.8>     //Acceleration of particles each second
        ,PSYS_PART_START_ALPHA,      0.9                //Starting transparency, 1 is opaque, 0 is transparent.
        ,PSYS_PART_END_ALPHA,        0.0                //Ending transparency
        ,PSYS_PART_START_SCALE,      <0.3,0.3,0.0>      //Starting particle size
        ,PSYS_PART_END_SCALE,        <0.3,0.3,0.0>      //Ending particle size, if INTERP_SCALE_MASK is on
        ,PSYS_SRC_ANGLE_BEGIN,       PI                 //Inner angle for ANGLE patterns
        ,PSYS_SRC_ANGLE_END,         PI                 //Outer angle for ANGLE patterns
        ,PSYS_SRC_OMEGA,             <0.0,0.0,0.0>       //Rotation of ANGLE patterns, similar to llTargetOmega()
                ]);
    }
    
    reset()
    {
        llSetTimerEvent(0.0);
        llListenRemove(dlgHandle);
        llListenRemove(gLsn);
        dlgHandle = -1;
    }
    remove_listen_handle()
    {
        llListenRemove(listen_handle);
        
    }
    default
    {
        state_entry()
        {   
            reset();
            key id = llDetectedKey(0);
            listen_handle = llListen(-5243200, "", id, "");
        }
     
        listen( integer channel, string name, key id, string message )
        {
            
            remove_listen_handle();
            namesList = [];
            uuidList = [];
            llSensor("", NULL_KEY, AGENT, 96.0, PI);
        }
       sensor(integer num_detected)
        {
            integer i;
            while((i < num_detected) && (i < 9))
            {
                if (llDetectedKey(i) != llGetOwner())
                {
                    namesList += [llGetSubString(llDetectedName(i),0,23)];
                    uuidList += [llDetectedKey(i)];
                    
                }
                ++i;
            }
            if (llGetListLength(namesList) > 0)
            {
              state dialog;
            }
        }
    }
        state dialog
    {
        state_entry()
        {
            // Set up a listener to detect button clicks.
            dlgHandle = llListen(dlgChannel, "", llGetOwner(), "");
    
            // Start a new timer.
            llSetTimerEvent(15.0);
    
            // Add a 'Cancel' button.
            
    
            // Display the dialog.
            //llDialog(llGetOwner(), "Please select an avatar.", namesList, dlgChannel);
            llListenRemove(gLsn);
            gMenuPosition = 0;
            Menu();
        }
       
        listen(integer channel, string name, key id, string msg)
        {
            llListenRemove(gLsn);
            llSetTimerEvent(0.0);
            if (~llSubStringIndex(msg,"---->"))
            {
                gMenuPosition += 10;
                Menu();
                llOwnerSay("hello");
            }
            else if (~llSubStringIndex(msg,"<----"))
            {
                gMenuPosition -= 10;
                Menu();
                llOwnerSay("hello");
            }
            else
            {
                if ((channel == dlgChannel) && (llListFindList(namesList, [msg]) != -1))
                {
                    if (msg != "Cancel")
                    {
                        integer index = llListFindList(namesList,[msg]);
                        key uuid = llList2Key(uuidList,index);
                        MakeParticles(uuid);
                        llSay(0, name + " says hello to " + msg);
                        
                    }
                reset();
                state default; 
                }
            }
        }
            timer()
            {
                reset();
                state default;
                
               
            }
    
     
        changed(integer mask)
        {   //Triggered when the object containing this script changes owner.
            if(mask & CHANGED_OWNER)
            {
                llResetScript();   // This will ensure the script listens to the new owner, and doesn't continue listening to the creator.
            }
        }
    }

     

  2. Hi there,

    i still having trouble to populate a list with the UUID of the avatar selected from the DialogMenu.

    I tried to populate them in another list but then i was not able to call them in the Listen event.

    i also searched the internet, but was not able to find more information.

    Is there somebody who is willing to skype with me and explain it to me what i am doing wrong?

    Thanks in advance.

  3. Hi,

    i have a question and hopefully it is easy to fix.

    I does have a HUD and if i clikc on it, it will scan the people witin 10m.

    A Dialog menu will popup and shows me all the people.

    If i click on a name i would like to send the person a message in local chat and some particles to that person.

    Till now everything went well except the particles.

    I am not able to get the ID of the avatar i selected from the list, i hope i just making a stupid "beginning" mistake.

    Can somebody please give me tips how i can solve this.

    Thanks in advance! 

    // Keknehv's Particle Script v1.2
    // 1.0 -- 5/30/05
    // 1.1 -- 6/17/05
    // 1.2 -- 9/22/05 (Forgot PSYS_SRC_MAX_AGE)
    
    //     This script may be used in anything you choose, including and not limited to commercial products. 
    //     Just copy the MakeParticles() function; it will function without any other variables in a different script
    //         ( You can, of course, rename MakeParticles() to something else, such as StartFlames() )
    
    //    This script is basically an llParticleSystem() call with comments and formatting. Change any of the values
    //    that are listed second to change that portion. Also, it is equipped with a touch-activated off button,
    //    for when your particles go haywire and cause everyone to start yelling at you.
    
    //  Contact Keknehv Psaltery if you have questions or comments.
    
    MakeParticles(key target)                //This is the function that actually starts the particle system.
    {                
        llParticleSystem([                   //KPSv1.0  
            PSYS_PART_FLAGS , 0 //Comment out any of the following masks to deactivate them
        //| PSYS_PART_BOUNCE_MASK           //Bounce on object's z-axis
        //| PSYS_PART_WIND_MASK             //Particles are moved by wind
        | PSYS_PART_INTERP_COLOR_MASK       //Colors fade from start to end
        | PSYS_PART_INTERP_SCALE_MASK       //Scale fades from beginning to end
        | PSYS_PART_FOLLOW_SRC_MASK         //Particles follow the emitter
        | PSYS_PART_FOLLOW_VELOCITY_MASK    //Particles are created at the velocity of the emitter
        | PSYS_PART_TARGET_POS_MASK       //Particles follow the target
        | PSYS_PART_EMISSIVE_MASK           //Particles are self-lit (glow)
        //| PSYS_PART_TARGET_LINEAR_MASK    //Undocumented--Sends particles in straight line?
        ,
        
        PSYS_SRC_TARGET_KEY , target ,   //Key of the target for the particles to head towards
                                                    //This one is particularly finicky, so be careful.
        //Choose one of these as a pattern:
        //PSYS_SRC_PATTERN_DROP                 Particles start at emitter with no velocity
        //PSYS_SRC_PATTERN_EXPLODE              Particles explode from the emitter
        //PSYS_SRC_PATTERN_ANGLE                Particles are emitted in a 2-D angle
        //PSYS_SRC_PATTERN_ANGLE_CONE           Particles are emitted in a 3-D cone
        //PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY     Particles are emitted everywhere except for a 3-D cone
        
        PSYS_SRC_PATTERN,           PSYS_SRC_PATTERN_ANGLE_CONE
        
        ,PSYS_SRC_TEXTURE,           ""                 //UUID of the desired particle texture, or inventory name
        ,PSYS_SRC_MAX_AGE,           5.0                //Time, in seconds, for particles to be emitted. 0 = forever
        ,PSYS_PART_MAX_AGE,          1.0                //Lifetime, in seconds, that a particle lasts
        ,PSYS_SRC_BURST_RATE,        0.02               //How long, in seconds, between each emission
        ,PSYS_SRC_BURST_PART_COUNT,  2                  //Number of particles per emission
        ,PSYS_SRC_BURST_RADIUS,      2.0                //Radius of emission
        ,PSYS_SRC_BURST_SPEED_MIN,   5.5                //Minimum speed of an emitted particle
        ,PSYS_SRC_BURST_SPEED_MAX,   6.0                //Maximum speed of an emitted particle
        ,PSYS_SRC_ACCEL,             <0.0,0.0,-0.8>     //Acceleration of particles each second
        ,PSYS_PART_START_COLOR,      <0.0,0.0,1.0>      //Starting RGB color
        ,PSYS_PART_END_COLOR,        <0.6,0.6,1.0>      //Ending RGB color, if INTERP_COLOR_MASK is on 
        ,PSYS_PART_START_ALPHA,      0.9                //Starting transparency, 1 is opaque, 0 is transparent.
        ,PSYS_PART_END_ALPHA,        0.0                //Ending transparency
        ,PSYS_PART_START_SCALE,      <2.4,2.4,0.0>      //Starting particle size
        ,PSYS_PART_END_SCALE,        <1.3,2.3,0.0>      //Ending particle size, if INTERP_SCALE_MASK is on
        ,PSYS_SRC_ANGLE_BEGIN,       PI                 //Inner angle for ANGLE patterns
        ,PSYS_SRC_ANGLE_END,         PI                 //Outer angle for ANGLE patterns
        ,PSYS_SRC_OMEGA,             <0.0,0.0,0.0>       //Rotation of ANGLE patterns, similar to llTargetOmega()
                ]);
    }
    
    integer dlgHandle = -1;
    integer dlgChannel = -9999;
    list avatarList = [];
    reset()
    {
        llSetTimerEvent(0.0);
        llListenRemove(dlgHandle);
        dlgHandle = -1;
    }
    default
    {
        touch_start(integer total_number)
        {
            llOwnerSay("Scanning...");
            avatarList = [];
            // Look for any avatars within 10m.
            llSensor("", NULL_KEY, AGENT, 96.0, PI);
        }
        sensor(integer num_detected)
        {
            integer i;
            while((i < num_detected) && (i < 9))
            {
                if (llDetectedKey(i) != llGetOwner())
                {
                    avatarList += [llDetectedName(i)];
                }
                ++i;
            }
            if (llGetListLength(avatarList) > 0)
            {
              state dialog;
            }
        }
    }
     
    state dialog
    {
        state_entry()
        {
            // Set up a listener to detect button clicks.
            dlgHandle = llListen(dlgChannel, "", llGetOwner(), "");
    
            // Start a new timer.
            llSetTimerEvent(30.0);
    
            // Add a 'Cancel' button.
            avatarList += ["Cancel"];
    
            // Display the dialog.
            llDialog(llGetOwner(), "Please select an avatar.", avatarList, dlgChannel);
        }
        listen(integer channel, string name, key id, string message)
        {
            
            // The message parameter holds the caption of the
            // button that was clicked. Search the menu options
            // list for it.
            if ((channel == dlgChannel) && (llListFindList(avatarList, [message]) != -1))
            {
                if (message != "Cancel")
                {
                    llSay(0, llKey2Name(llGetOwner()) + " pokes " + message);
                   
                    MakeParticles(id);
                }
                reset();
                state default;
            }
        }
        timer()
        {
            reset();
            state default;
        }
    }

     

×
×
  • Create New...