Difference between revisions of "User:Pete Olihenge"

From Second Life Wiki
Jump to navigation Jump to search
Line 2: Line 2:
=== Random negative chat channel ===
=== Random negative chat channel ===
This LSL function should, according to my calculations, return a random negative integer in the range -2,000,000,000 to -1,000,000, suitable for use as a dialog chat channel.
This LSL function should, according to my calculations, return a random negative integer in the range -2,000,000,000 to -1,000,000, suitable for use as a dialog chat channel.
<lsl>
<lsl>integer GetDialogChannel ()
integer GetDialogChannel ()
{
{
     return (integer) llFrand (-1999000001.0) - 1000000;
     return (integer) llFrand (-1999000001.0) - 1000000;
}
}</lsl>
</lsl>
=== Ordinal suffix ===
=== Ordinal suffix ===
This LSL function takes an integer and returns a string that is the integer with its ordinal suffix ("st", "nd", "rd" or "th") appended.
This LSL function takes an integer and returns a string that is the integer with its ordinal suffix ("st", "nd", "rd" or "th") appended.
<lsl>
<lsl>string OrdinalSuffix (integer number)
string OrdinalSuffix (integer number)
{
{
     string result = "th"; //for all except 1s, 2s and 3s, but including 11, 12 and 13
     string result = "th"; //for all except 1s, 2s and 3s, but including 11, 12 and 13
Line 23: Line 20:
     }
     }
     return (string) number + result;
     return (string) number + result;
}
}</lsl>
</lsl>


=== Format a metric measure to Imperial (or US) units, with fractional inches ===
=== Format a metric measure to Imperial (or US) units, with fractional inches ===
This LSL function takes a float value representing a measure in metres and returns a string representing the equivalent Imperial (or US) measure in feet and inches, rounded to the nearest quarter inch, and expressed using the feet and inches symbols ' and ", and the fractional characters ¼, ½ and ¾.
This LSL function takes a float value representing a measure in metres and returns a string representing the equivalent Imperial (or US) measure in feet and inches, rounded to the nearest quarter inch, and expressed using the feet and inches symbols ' and ", and the fractional characters ¼, ½ and ¾.
<lsl>
<lsl>string FormatImperial (float metres)
string FormatImperial (float metres)
{
{
     string result = "";
     string result = "";
Line 44: Line 39:
     else if (part_inches >= 0.125) result += "¼";
     else if (part_inches >= 0.125) result += "¼";
     return result + "\"";
     return result + "\"";
}
}</lsl>
</lsl>

Revision as of 05:36, 26 January 2010

LSL functions

Random negative chat channel

This LSL function should, according to my calculations, return a random negative integer in the range -2,000,000,000 to -1,000,000, suitable for use as a dialog chat channel. <lsl>integer GetDialogChannel () {

   return (integer) llFrand (-1999000001.0) - 1000000;

}</lsl>

Ordinal suffix

This LSL function takes an integer and returns a string that is the integer with its ordinal suffix ("st", "nd", "rd" or "th") appended. <lsl>string OrdinalSuffix (integer number) {

   string result = "th"; //for all except 1s, 2s and 3s, but including 11, 12 and 13
   number = number % 100; //just the 10s
   if (number < 4 || number > 20) //exclude the teens (and their neighbours)
   {
       number = number % 10; //just the units
       if (number == 1) result = "st"; //*1st
       else if (number == 2) result = "nd"; //*2nd
       else if (number == 3) result = "rd"; //*3rd
   }
   return (string) number + result;

}</lsl>

Format a metric measure to Imperial (or US) units, with fractional inches

This LSL function takes a float value representing a measure in metres and returns a string representing the equivalent Imperial (or US) measure in feet and inches, rounded to the nearest quarter inch, and expressed using the feet and inches symbols ' and ", and the fractional characters ¼, ½ and ¾. <lsl>string FormatImperial (float metres) {

   string result = "";
   float inches = metres / 0.0254;
   integer whole_inches = (integer) (inches + 0.125);
   float part_inches = inches - (float) whole_inches;
   integer whole_feet = whole_inches / 12;
   whole_inches = whole_inches % 12;
   if (whole_feet) result += (string) whole_feet + "' ";
   if (whole_inches) result += (string) whole_inches;
   else if (part_inches < 0.125) result += "0";
   if (part_inches >= 0.625) result += "¾";
   else if (part_inches >= 0.375) result += "½";
   else if (part_inches >= 0.125) result += "¼";
   return result + "\"";

}</lsl>