Difference between revisions of "User talk:Ugleh Ulrik"

From Second Life Wiki
Jump to navigation Jump to search
(A few suggestions...)
 
(Blanked the page)
 
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= Hi, A few suggestions =


Lists in LSL are among the most memory intensive types of data. Manipulation of lists even more memory intensive. When manipulating data that does not ''' ''NEED'' ''' to be typecast to a list it is far more efficient to use other methods. As with the below examples (these serve the same functions as those from your page without costing the earth).
== Vector2List ==
<lsl>list Vector2List(vector v){
    return [v.x, v.y, v.z]; // *Tips a wink to Strife*
}</lsl>
== FirstName & LastName==
The [[llKey2Name]] function does have a limited use. It will '''NOT''' return the name of an agent who is not now or has not very recently been on the same region as the script and will '''NOT''' return the name of an agent who is offline. The [[dataserver]] event (and its companion functions) can help make this function far more reliable.
<lsl>key name_q; // Used to referrence dataserver requests.
string FirstName(string name) // Deliver the name.
{
    return llDeleteSubString(name, llSubStringIndex(name, " "), -1);
}  // Return name with all removed from the separating space to the end.
string LastName(string name) // Deliver the name.
{
    return llGetSubString(name, (llSubStringIndex(name, " ") + 1), -1);
}  // Return name from the separating space to the end.
string FirstOrLastName(string name, integer FoL) // TRUE for first name, FALSE for last name.
{
    if(FoL) // If FoL == TRUE...
    return llDeleteSubString(name, llSubStringIndex(name, " "), -1); // Return first name.
    return llGetSubString(name, (llSubStringIndex(name, " ") + 1), -1); // If FoL != TRUE return last name.
}
default
{
    state_entry()
    {
        key owner = llGetOwner(); // We need a key...wherever it may come from.
        name_q = llRequestAgentData(owner, DATA_NAME); // Request the name that belongs to that key.
    }
    dataserver(key q, string data) // Triggered by a return of data requested.
    {
        if(q == name_q) // Check which request is being answered.
        {
            llOwnerSay("First name - " + FirstName(data)); // Say the data.
           
            llOwnerSay("Last name - " + LastName(data)); // Say the data.
           
            llOwnerSay("First name - " + FirstOrLastName(data, TRUE)); // Say the data.
           
            llOwnerSay("Last name - " + FirstOrLastName(data, FALSE)); // Say the data.
        }
    }
}</lsl>
== TrimString ==
<lsl>string TrimStringToLength(string text, integer length) // Deliver text and desired length of output.
{
    if(length >= llStringLength(text)) // If text is shorter than or the same length as desired...
    return text; // Send text back.
    return (llGetSubString(text, 0, (length - 4)) + "..."); // Else, get string from text and add continuum dots.
}
default
{
    state_entry()
    {
        llOwnerSay(TrimStringToLength("I like toitles!! - http://www.youtube.com/watch?v=CMNry4PE93Y", 19));
    }
}</lsl>

Latest revision as of 12:22, 19 April 2016