Difference between revisions of "User talk:EnCore Mayne"

From Second Life Wiki
Jump to navigation Jump to search
m
m (because)
(10 intermediate revisions by one other user not shown)
Line 1: Line 1:
<hr />
<hr>
Edit voodoo
<table width=80% border=1 cellspacing=0 cellpadding=4 bgcolor=aquamarine>
<hr />
<tr><td colspan=2><h2>Edit for '''[[Where Am I?]]'''</h2></td></tr>
<!-- BEGIN EDIT -->
<tr><td>two pages for this topic https://wiki.secondlife.com/wiki/Where_am_I%3F</td><td> *note url space %3F</td></tr>
<tr><td>https://wiki.secondlife.com/wiki/Where_am_I</td><td>properly configured URL</tr>
<tr><td>https://wiki.secondlife.com/wiki/Map#Mini-Map</td><td rowspan=5>further references</td></tr>
<tr><td>https://wiki.secondlife.com/wiki/Viewerhelp:Mini-Map</td></tr>
<tr><td>https://wiki.secondlife.com/wiki/Video_Tutorial/All_about_the_Mini-Map</td></tr>
<tr><td>https://wiki.secondlife.com/wiki/S3_based_viewer_map</td></tr>
<tr><td>http://community.secondlife.com/t5/English-Knowledge-Base/World-Map-and-Mini-Map/ta-p/700163</td></tr>
<tr><td colspan=2>
<!--start-->
<!-- distraction {{Help|Navigation=*}} -->
[[Image:EnC_minimap.jpg|100px|left|MINI-MAP]]
The Mini-Map, positional and scaleable to occupy any place and size of your viewer's screen, shows a top-down view of your choice of observable range. Available ranges vary from around a 5m x 5m Zoom In to an approximate 5 x 5 region Zoom Out and is facilitated by scrolling in our out with your mouse's scroll wheel. There are numerous resource features represented in the map with the most significant one being your avatar position.


{{NavNextPrev|prefix=LSL in Focus:_|prev=Types|topic=Language Topics in Focus|next=Floats}}
The yellow dot, shown as such in a normal viewing scale is actually white surrounded by yellow, represents your avatar. The four cardinal points, NSEW, and camera viewing angle gives you an accurate orientation as to where you are in relation to just how much of a viewing range you wish to encompass. Green dots are symbolic representations of other avatars should they be on the same Z plane (height) of your own. If other avatars are above your vertical position they are represented with a green caret ^. Similarily, if they are below your position they will appear as the inverted circumflex symbol. [[Image:EnC_circumflexes.jpg|100px|right|avatar height levels]]


__TOC__
As the Lab techies, working tirelessly at all hours of the day and night toil mercilessly on their shiny new toy, additional features, without any documentation whatsoever, might show up. the addition of an X symbol isn't understood to this writer at this point.


Integers in LSL roughly correspond to integers in mathematics.  They can be written in either the familiar decimal notation (e.g. 20, 0, -1) or [[#Hexadecimal Notation|hexadecimal]] (e.g. 0x14, 0x0, 0xFFFFFFFF).


Integers in LSL are used in four distinct ways:
The Mini-Map rotates to face the same direction you are.
* Signed integers
* Truth values (Booleans)
* Enumerations
* Bit vectors
 
There are a three operators, namely: = (assignment), == (test for equality), and != (test for inequality) that are common to all uses of integers.  Other than those the four different uses of integers generally involve separate sets of operators.
 
== Signed Integers ==
This is the use of integers that corresponds to the normal use in mathematics.  The only substantive difference is that in mathematics there are an infinite number of integers. In LSL, integers are limited to the range from −2,147,483,648 to 2,147,483,647.  No commas or other separators are allowed when writing integers so these numbers would be written −2147483648 and 2147483647.
 
=== Arithmetic Operators ===
LSL has the normal arithmetic operators '''+''', '''-''', '''*''', and '''/'''.  The first three have the same meaning as what you used in grade school '''as long as the result is in the range −2147483648 to 2147483647'''.  If the result is outside that range, different rules apply. The typical scripter doesn't need to use numbers that are so big (or small), so there's no reason to feel you need to learn the details of what happens when the limits are exceeded.  There are instances where it is actually useful to allow numbers to exceed the limits. For the details of what happens in that case, see the Integer Overflow section, below.
 
Division of integers in LSL is a variation on what you learned in elementary school. If the division results in a whole number, say 10/2, the answer is 5.  But 15/2 is neither 7.5 nor 7 with a remainder of 1.  Instead, it is exactly 7.  Any remainder is simply thrown away.  Alternatively, you can think of it as being rounded toward zero.  It's more accurate to say "rounded toward zero" than "rounded down", because -15/2 is -7, not -8.  If you're scripting something where you really want 15 divided by 2 to be 7.5, don't despair.  You'll just need to use the "float" type instead of integers.
 
Closely related to integer division is the remainder operator, written as %.  It gives you what would remain if you were to ask for integer division on the same numbers.  Here are some examples:
<lsl> integer i;
i = 15 % 2;    // i is assigned the value 1
i = 15 % 4;    // i is assigned the value 3
i = -15 % 4;    // i is assigned the value -3</lsl>
 
If an attempt is made to divide by 0 (using either / or %), a run-time error occurs and script execution halts.
 
Each of the arithmetic operators also has a corresponding assignment type operation.  For example
<lsl> integer x;
integer y;
x += y;    // Synonymous with x = x + y;
x -= y;    // Synonymous with x = x - y;
x *= y;    // Synonymous with x = x * y;
x /= y;    // Synonymous with x = x / y;</lsl>
 
In addition, since incrementing or decrementing by 1 is quite common, there is a special unary operator for that. The operator is written ++ and is pronounced plus-plus. To increment the variable i by 1, we can write either ++i or i++.  So for example
 
<lsl> integer i = 0;
i++;    // i now has the value of 1
++i;    // i now has the value of 2</lsl>
 
But the two operators are not identical, because i++ and ++i are expressions that can occur as part of a larger expression.  When used as part of a larger expression, i++ contributes its value to the expression ''before'' it is incremented.  For example, the fragment
 
<lsl> integer i = 0;
if (i++ == 0)
    llSay( 0, "The value of i was 0 when the comparison was done" )
else
    llSay( 0, "The value of i was 1 when the comparison was done" )</lsl>
 
would chat "The value of i was 0 when the comparison was done" even though i ends up with the value of 1.  On the other hand, if we switch i++ to ++i, i.e.
 
<lsl> integer i = 0;
if (++i == 0)
    llSay( 0, "The value of i was 0 when the comparison was done" )
else
    llSay( 0, "The value of i was 1 when the comparison was done" )</lsl>
 
the chat output would be "The value of i was 1 when the comparison was done".
 
The operator minus-minus (written --) works similarly.
 
=== Comparison Operators ===
In addition to the arithmetic operators, there are also the normal integer comparison operators < (less than) and > (greater than).  For "less than or equal", or "greater than or equal", there are two-character operators <= and >=.  There can't be any space between the two characters of a two-character operator.
 
The result of a comparison operator is either 0 (representing '''FALSE''') or 1 (representing '''TRUE''').  See [[#Truth Values (Booleans)|Truth Values (Booleans)]].
 
=== Integer Overflow ===
* During script execution, integers wraps from 2147483647 to -2147483648 in the normal way
* The compiler treats integers outside the range -2147483648 to 2147483647 somewhat strangely.  No compile time warning or error is generated. (If the following explanation, doesn't make sense to you don't worry -- just know to avoid using numbers outside the valid range in your script.) 
** For an integer outside the range -2147483648 to 2147483647, the absolute value of the number is reduced to fall in the range 0 to 4294967295 (0xFFFFFFFF). 
** This number is then parsed as an unsigned 32 bit integer and cast to the corresponding signed integer. 
** If the value in the script had a negative sign, the sign of the internal representation is switched.
** The net effect is that very large positive numbers get mapped to -1 and very large negative numbers get mapped to 1.
 
== Truth Values (Booleans) ==
There is not a special type for TRUE and FALSE in LSL.  Instead, TRUE is defined to be the integer 1 and FALSE is defined to be the integer 0.
 
This has an interesting consequence in a conditional statement.  Consider the following example
 
<lsl> integer i = 3;    // 3 is neither TRUE nor FALSE
if (i)
    llSay( 0, "i is treated as being true." );
else
    llSay( 0, "i is treated as being false." );
if (i == TRUE)
    llSay( 0, "i is equal to TRUE." );
else
    llSay( 0, "i is not equal to TRUE." );</lsl>
 
When run, the output will be
 
i is treated as being true.
i is not equal to TRUE.
 
This is because the condition in the '''if''' statement can be any integer.  Any non-zero value will cause the ''true'' block or statement to be executed, while a zero value will cause the ''false'' block or statement to be executed.
 
The same zero/non-zero distinction is made wherever a truth value is expected.  In what follows, we'll use the word '''true''' and '''false''' to mean non-zero versus zero, while '''TRUE''' and '''FALSE''' will mean one and zero.
 
=== Truth Value Operators ===
 
There are three truth value operators in LSL:
* ! (representing '''not''')
* && (representing '''and''')
* || (representing '''or''')
 
The ! operator takes a single operand and evaluates to '''TRUE''' if the operand is false, and '''FALSE''' otherwise.  For example
 
<lsl> integer i;
i = !(3 == 7);    // 3 == 7 is FALSE, so i gets the value TRUE</lsl>
 
The && operator takes two operands and evaluates to '''TRUE''' if both its operands are true, and '''FALSE''' otherwise.
 
<lsl> i = (3 < 7) && (3 > 7);    // 3 < 7 is TRUE, but (3 > 7) is FALSE, so i gets the value FALSE</lsl>
 
The || operator takes two operands and evaluates to '''TRUE''' if either one of its operands are true, and '''FALSE''' otherwise.
 
<lsl> i = (3 < 7) || (3 > 7);    // one of the operands (3 < 7) is TRUE, so i gets the value TRUE</lsl>
 
Like the binary arithmetic operators, && and || have a corresponding assignment type operator.
 
<lsl> integer x;
integer y;
x &&= y;    // Synonymous with x = x && y;
x ||= y;    // Synonymous with x = x || y;</lsl>
 
=== Statements Requiring Truth Values ===
There are four statement types that require a truth value condition:
* if
* for
* while
* do-while
 
== Enumerations ==
Many built-in functions have a parameter or return value that takes one of a fixed number of alternatives.  For example, [[llAttachToAvatar]] has a single parameter which specifies the attachment point.  The attachment point is specified to be an integer, but the specific integer corresponding to each attachment point is arbitrary. Since the numbers themselves have no significance, LSL defines names such as [[ATTACH_HEAD]], [[ATTACH_LFOOT]] and [[ATTACH_BELLY]], which are simply meaningful names for the arbitrary integers.  Integers used in this way are called '''enumerations'''.
 
Generally, no operators besides the ubiquitous =, == and != are used with enumerations because there is no expected relationship between the arbitrarily selected integer values.
 
== Bit Vectors ==
 
=== Bit Vector Operators ===
Analogous to the truth value operators, LSL defines three operators specifically for bit vectors:
 
* ~ (bitwise not)
* & (bitwise and)
* | (bitwise or)
 
In contract to the truth value operators, these operate independently on each bit position.
 
== Other Uses of Integers ==
 
Although the four uses described above cover all the ways that integers are used with LSL built-in functions, they are not really exhaustive of the ways integers ''can'' be used.  There are algorithms in mathematics and computer science that mix arithmetic and bit vector operations, along with bit shift operators.  LSL supports this kind of computation with the bit shift operators inherited from C:
 
* << shift bits left
* >> shift bits right
 
and their assignment analogs
 
* >>=
* <<=
 
Discussion of these algorithms is beyond the scope of this article, but see [http://graphics.stanford.edu/~seander/bithacks.html Bit Twiddling Hacks] for some examples.
 
== Type conversions ==
=== Other types to integers ===
Casting a float to an integer has the same end effect as using the [[llFloor]] function.
=== Integers to other types ===
 
== Differences between Integers in LSL and in C ==
Much of LSL is patterned after the C programming language, and integers are no exception.  Programmers who already know C can immediately apply most of their understanding of integers to LSL.
 
Differences to note are
* The type must be spelled ''integer'' instead of ''int''.
* There are no size modifiers (short, long, ...).  All integers are 32 bits.
* There is no unsigned modifier.  All integers are signed.
* Comparison operators evaluate to an integer (1 or 0), as they did in C prior to C99.
* The && and || operators are strict, i.e. both operands are always evaluated, even if the result can be determined after evaluating the left operand.
 
== Hexadecimal Notation ==
There's actually not much use for hexadecimal notation in LSL.  If you do feel a need to use it, you probably already know how it works.  If not, you can consult {{Wikipedia|Hexadecimal notation|Wikipedia}}.
<!-- END EDIT -->
 
<hr />
edit for Where Am I?
 
<!-- {{Help|Navigation=*}} -->
 
The Mini-Map is a window showing a small number of details of your immediate environment.  You are the white/yellow dot in the center; green dots are other people. The Mini-Map rotates to face the same direction you are.


To see more, bring up the World Map by left-clicking the Map button (or the Mini-Map).
To see more, bring up the World Map by left-clicking the Map button (or the Mini-Map).
Line 213: Line 40:
[[Category:Text from In-world Notecards|Mini-map]]
[[Category:Text from In-world Notecards|Mini-map]]
[[Category:Articles in need of expansion|{{PAGENAME}}]]
[[Category:Articles in need of expansion|{{PAGENAME}}]]
<!-- end -->
</td></tr></table>


<hr height=2>
<hr height=2>

Revision as of 21:24, 13 September 2012


Edit for Where Am I?

two pages for this topic https://wiki.secondlife.com/wiki/Where_am_I%3F *note url space %3F
https://wiki.secondlife.com/wiki/Where_am_Iproperly configured URL
https://wiki.secondlife.com/wiki/Map#Mini-Mapfurther references
https://wiki.secondlife.com/wiki/Viewerhelp:Mini-Map
https://wiki.secondlife.com/wiki/Video_Tutorial/All_about_the_Mini-Map
https://wiki.secondlife.com/wiki/S3_based_viewer_map
http://community.secondlife.com/t5/English-Knowledge-Base/World-Map-and-Mini-Map/ta-p/700163
MINI-MAP

The Mini-Map, positional and scaleable to occupy any place and size of your viewer's screen, shows a top-down view of your choice of observable range. Available ranges vary from around a 5m x 5m Zoom In to an approximate 5 x 5 region Zoom Out and is facilitated by scrolling in our out with your mouse's scroll wheel. There are numerous resource features represented in the map with the most significant one being your avatar position.

The yellow dot, shown as such in a normal viewing scale is actually white surrounded by yellow, represents your avatar. The four cardinal points, NSEW, and camera viewing angle gives you an accurate orientation as to where you are in relation to just how much of a viewing range you wish to encompass. Green dots are symbolic representations of other avatars should they be on the same Z plane (height) of your own. If other avatars are above your vertical position they are represented with a green caret ^. Similarily, if they are below your position they will appear as the inverted circumflex symbol.
avatar height levels

As the Lab techies, working tirelessly at all hours of the day and night toil mercilessly on their shiny new toy, additional features, without any documentation whatsoever, might show up. the addition of an X symbol isn't understood to this writer at this point.


The Mini-Map rotates to face the same direction you are.

To see more, bring up the World Map by left-clicking the Map button (or the Mini-Map).

  • You are the white dot with the yellow circle around it. What you can see is within the gray triangle.
  • Drag the Zoom slider in the lower right corner to zoom in or out.
  • The World Map doesn't rotate: North is always up.

The World Map can tell you lots more:

  • Looking for other people? They're green dots, just like on the Mini-Map.
  • Looking for things to do? Pink stars show special event locations. Double-click on them for more information.
  • Looking for stuff or land to buy? Click the "Background" drop-down menu in the upper right corner, and choose "Objects For Sale" or "Land For Sale".

Notes:

  • The dots on the Mini-Map mean the same as they do on the regular map.
  • You can show or hide the Mini-Map with Ctrl-Shift-M.
  • If you see a green V pointing up or down, that means a person is up higher than you or lower than you.


Edits States
Edit: llAbs() --EnCore Mayne 04:11, 10 September 2012 (PDT) LlAbs old.jpg LlAbs edit.jpg