Difference between revisions of "User:Pete Olihenge"
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>