<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fox+Oxbar</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fox+Oxbar"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Fox_Oxbar"/>
	<updated>2026-07-26T11:30:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Random_Object_Vendor&amp;diff=1180901</id>
		<title>Random Object Vendor</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Random_Object_Vendor&amp;diff=1180901"/>
		<updated>2013-08-23T15:03:09Z</updated>

		<summary type="html">&lt;p&gt;Fox Oxbar: Fixed syntax error in the script... how was this ever published like that...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header}}&lt;br /&gt;
&lt;br /&gt;
This script is a simple object vendor that gives out random items when you pay the fixed price. Just drop it in a prim, add items, and change the prices list variable to whatever price you want to sell the items. It will give out the item in a folder named like the container prim.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
//  Random object vendor by CodeBastard Redgrave&lt;br /&gt;
//  Drop items in the prim containing this script&lt;br /&gt;
//  Pay the set price amount and it will give you a random object&lt;br /&gt;
&lt;br /&gt;
//  Pieces stolen from:&lt;br /&gt;
//      Give inventory to whoever touches the prim, written by Sasun Steinbeck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
integer price = 10;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
list inventory_list()&lt;br /&gt;
{&lt;br /&gt;
    string thisScript = llGetScriptName();&lt;br /&gt;
    integer numberOfItems = llGetInventoryNumber(INVENTORY_ALL);&lt;br /&gt;
&lt;br /&gt;
    list listToBeReturned;&lt;br /&gt;
    string itemName;&lt;br /&gt;
&lt;br /&gt;
    integer index;&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
        itemName = llGetInventoryName(INVENTORY_ALL, index);&lt;br /&gt;
        if (itemName != thisScript)&lt;br /&gt;
            listToBeReturned += [itemName];&lt;br /&gt;
    }&lt;br /&gt;
    while (++index &amp;lt; numberOfItems);&lt;br /&gt;
&lt;br /&gt;
    return&lt;br /&gt;
        listToBeReturned;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start_param)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    changed(integer change)&lt;br /&gt;
    {&lt;br /&gt;
        if (change &amp;amp; (CHANGED_OWNER | CHANGED_INVENTORY))&lt;br /&gt;
            llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        key owner = llGetOwner();&lt;br /&gt;
&lt;br /&gt;
        llRequestPermissions(owner, PERMISSION_DEBIT);&lt;br /&gt;
        llSetPayPrice(PAY_HIDE, [price, PAY_HIDE, PAY_HIDE, PAY_HIDE]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    money(key id, integer amount)&lt;br /&gt;
    {&lt;br /&gt;
        if (amount == price)&lt;br /&gt;
        {&lt;br /&gt;
            list listOfItems = inventory_list();&lt;br /&gt;
&lt;br /&gt;
            integer numberOfItems = llGetListLength(listOfItems);&lt;br /&gt;
            integer randomIndex = (integer)llFrand(numberOfItems);&lt;br /&gt;
&lt;br /&gt;
            if (numberOfItems)&lt;br /&gt;
            {&lt;br /&gt;
                string nameOfThisPrim = llGetObjectName();&lt;br /&gt;
                llGiveInventoryList(id, nameOfThisPrim, [llList2String(listOfItems, randomIndex)]);&lt;br /&gt;
                llInstantMessage(id, &amp;quot;Your item is in a folder named &#039;&amp;quot; + nameOfThisPrim + &amp;quot;&#039;. Thank you!&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                llInstantMessage(id, &amp;quot;No items to offer.&amp;quot;);&lt;br /&gt;
                llGiveMoney(id, amount);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llInstantMessage(id, &amp;quot;Sorry that is the wrong amount for this item.&amp;quot;);&lt;br /&gt;
            llGiveMoney(id, amount);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{LSLC|Examples}}&lt;br /&gt;
{{LSLC|Library}}&lt;/div&gt;</summary>
		<author><name>Fox Oxbar</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Ignored&amp;diff=1131122</id>
		<title>Ignored</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Ignored&amp;diff=1131122"/>
		<updated>2011-01-09T21:43:25Z</updated>

		<summary type="html">&lt;p&gt;Fox Oxbar: added some thoughts to the notes section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Event&lt;br /&gt;
|event_id&lt;br /&gt;
|mode=request&lt;br /&gt;
|func_sleep&lt;br /&gt;
|func_energy&lt;br /&gt;
|event=ignored&lt;br /&gt;
|p1_type=key|p1_name=id|p1_desc=The agent that clicked the ignore button.&lt;br /&gt;
|p2_type=integer|p2_name=channel|p2_desc=The channel on which the dialog was opened&lt;br /&gt;
&lt;br /&gt;
|event_desc= ignored() Sent as a result of the user clicking ignored in a dialog&lt;br /&gt;
|return_text&lt;br /&gt;
|spec=Currently there is no way to tell if a dialog has been ignored. Scripts rely on timer events to decide when to stop listening on a channel. This can lead to delays for the user while a state is waiting for a timer event. Conversely it also leads to confusion when a user tries to click a button of a dialog that has stopped listening. This proposed event would go a long way towards alleviating the problem without breaking existing implementations.&lt;br /&gt;
|caveats=There is no way to tell which dialog sent the ignored event since dialogs cannot be identified. The channel number could be in use by more than one dialog. It is merely an attempt to give some useful information to the script.&lt;br /&gt;
&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
integer channel = -1000;&lt;br /&gt;
integer listen_handle;&lt;br /&gt;
 &lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        listen_handle  = llListen(channel,&amp;quot;&amp;quot;, &amp;quot;&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    touch_start(integer count)&lt;br /&gt;
    {&lt;br /&gt;
        llDialog(llDetectedKey(0), &amp;quot;This is a test dialog.\n\nPlease choose one of the below options.&amp;quot;,&lt;br /&gt;
                 [&amp;quot;Yes&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;1&amp;quot;], channel);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    listen(integer chan, string name, key id, string mes)&lt;br /&gt;
    {&lt;br /&gt;
        if(id == llGetOwnerKey(id))//won&#039;t listen to objects unless they aren&#039;t in the region.&lt;br /&gt;
            llSay(0,name + &amp;quot; (&amp;quot; + (string)llGetObjectDetails(id, (list)OBJECT_POS) + &amp;quot;) chose option &amp;quot; + mes);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ignored(key id, integer c)&lt;br /&gt;
    {&lt;br /&gt;
        if(channel == c)&lt;br /&gt;
        {&lt;br /&gt;
            llListenRemove(listen_handle);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|related&lt;br /&gt;
|also&lt;br /&gt;
|notes=PJIRA feature request [http://jira.secondlife.com/browse/SVC-3624 SVC-3624]&lt;br /&gt;
&lt;br /&gt;
Johan Laurasia:  For Starers, wouldn&#039;t it be easier to simply return &#039;ignore&#039; (the button text) to the listen event?  Secondly, I think the entire point behind the listen event ignore button is to dismiss the dialog window without triggering the listen event.  Scripting would be easier if pushing the ignore button triggered the event, but then automatically returned and closed the listen event.  Also, the typical way of scripting around the ignore button is to set a timer event and when the timer event triggers, you close the listen there.  Therefore there is a way to sort of indirectly detect ignore being pressed.  You can&#039;t actually detect it, but you can assume (after a time limit) that ignore was pressed.  The only way I could see an ignore event being useful would be if the event returned no data, and the only valid function within that event were llListenRemove();.&lt;br /&gt;
&lt;br /&gt;
Fox Oxbar:  Users should have the ability to completely ignore dialogs without having any data sent back, if at least for some sort of privacy concerns (granted, the only thing you might reveal by clicking &amp;quot;ignore&amp;quot; is your AFK status).  Many devices like vending machines wait for a timeout as discussed above and then send an IM saying that the user&#039;s session has timed out.  That&#039;s not totally elegant, since the dialog is still sitting there.  It might be useful to be able to cancel an existing dialog, but this opens the doors for a sort of open-close-open-close-open-close-etc. grief attack.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Fox Oxbar</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetText&amp;diff=994442</id>
		<title>LlSetText</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetText&amp;diff=994442"/>
		<updated>2010-08-03T17:38:57Z</updated>

		<summary type="html">&lt;p&gt;Fox Oxbar: typo fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:PRIM_TEXT|set}}{{Issues/SVC-4539}}{{LSL_Function&lt;br /&gt;
|func_id=152&lt;br /&gt;
|func_sleep=0.0&lt;br /&gt;
|func_energy=10.0&lt;br /&gt;
|func=llSetText&lt;br /&gt;
|sort=SetText&lt;br /&gt;
|p1_type=string|p1_name=text&lt;br /&gt;
|p2_type=vector|p2_name=color&lt;br /&gt;
|p3_type=float|p3_name=alpha&lt;br /&gt;
|func_desc=Displays &#039;&#039;&#039;text&#039;&#039;&#039; that hovers over the prim with specific &#039;&#039;&#039;color&#039;&#039;&#039; and translucency (specified with &#039;&#039;&#039;alpha&#039;&#039;&#039;). &lt;br /&gt;
|return_text&lt;br /&gt;
|spec=&lt;br /&gt;
|caveats=&lt;br /&gt;
*If more than one llSetText is called (By reset,interaction or script state) within a prim the latest call will take priority over the previous.&lt;br /&gt;
*&#039;&#039;&#039;text&#039;&#039;&#039; is [[limit]]ed to 254 [[bytes]], if the string is longer it will be truncated to 254 bytes, even if that means the truncation will chop a character in half.&lt;br /&gt;
*An unbroken line of text of a great length may be broken automatically into two lines (one above the other).&lt;br /&gt;
*Floating text can be seen through walls and other object. Be considerate of neighbors in malls and apartment buildings. &lt;br /&gt;
**Visibility distance increases with prim size.&lt;br /&gt;
*Removing the script or deactivating it will not remove the prim&#039;s floating text.&lt;br /&gt;
**Floating text is a prim property and not dependent on a script for its continued existence.&lt;br /&gt;
*To remove floating text, use the following:&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetText(&amp;quot;&amp;quot;, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
*Shift-copying does not keep the floating text prim property. If the llSetText() script is not triggered when a copy made, the copy will not have the floating text.&lt;br /&gt;
*Vertical whitespace is removed from the end of the text string, so if you want vertical whitespace put any character (like a space) on the last line.&lt;br /&gt;
*Multiple linebreaks with empty lines are converted to a single linebreak, so add a whitespace character on every line you want to skip:&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetText(&amp;quot;Monkeys\n\n\n\n\n&amp;quot;, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0);//Bad&lt;br /&gt;
llSetText(&amp;quot;Monkeys\n \n \n \n \n &amp;quot;, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0);//Good&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|examples=&lt;br /&gt;
Example of how llSetText could be included in default code to show object&#039;s name in green text:&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
         llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
         llSetText(llGetObjectName(), &amp;lt;0.0, 1.0, 0.0&amp;gt;, 1.0); // Display the object&#039;s current name in green&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
         llSay(0, &amp;quot;Touched.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
By default the floating text will appear on a single line. However, the floating text can be spread over multiple lines by using a line break &amp;quot;\n&amp;quot; (read [[SplitLine]] in section &#039;See Also&#039;).&lt;br /&gt;
===Color &amp;amp; Alpha===&lt;br /&gt;
{{{!}} class=&amp;quot;sortable&amp;quot; {{Prettytable|style=float:right; margin-top:0;}}&lt;br /&gt;
{{!}}- {{Hl2}}&lt;br /&gt;
! Color&lt;br /&gt;
! Code&lt;br /&gt;
{{!}}- style=&amp;quot;background:white&amp;quot;&lt;br /&gt;
{{!}}White &lt;br /&gt;
{{!}}&amp;lt;1.0, 1.0, 1.0&amp;gt;&lt;br /&gt;
{{!}}- style=&amp;quot;background:grey&amp;quot;&lt;br /&gt;
{{!}}Grey &lt;br /&gt;
{{!}}&amp;lt;0.5, 0.5, 0.5&amp;gt;&lt;br /&gt;
{{!}}- style=&amp;quot;background:black; color:white;&amp;quot;&lt;br /&gt;
{{!}}{{!}}Black &lt;br /&gt;
{{!}}&amp;lt;0.0, 0.0, 0.0&amp;gt;&lt;br /&gt;
{{!}}- style=&amp;quot;background:red; color:white;&amp;quot;&lt;br /&gt;
{{!}}Red&lt;br /&gt;
{{!}}&amp;lt;1.0, 0.0, 0.0&amp;gt;&lt;br /&gt;
{{!}}- style=&amp;quot;background:green; color:white;&amp;quot;&lt;br /&gt;
{{!}}Green&lt;br /&gt;
{{!}}&amp;lt;0.0, 1.0, 0.0&amp;gt;&lt;br /&gt;
{{!}}- style=&amp;quot;background:blue; color:white;&amp;quot;&lt;br /&gt;
{{!}}Blue&lt;br /&gt;
{{!}}&amp;lt;0.0, 0.0, 1.0&amp;gt;&lt;br /&gt;
{{!}}}&lt;br /&gt;
The x, y &amp;amp; z components of the vector are used to represent red, green, and blue respectively. The range is different than traditional RGB, instead of being 0 -&amp;gt; 255, LSL uses 0 -&amp;gt; 1. &amp;lt;1.0, 1.0, 1.0&amp;gt;, means &amp;quot;white&amp;quot; and &amp;lt;0.0, 0.0, 0.0&amp;gt; means &amp;quot;black&amp;quot;:&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetText(&amp;quot;I am white&amp;quot;, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0);//white text&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetText(&amp;quot;I am black&amp;quot;, &amp;lt;0.0, 0.0, 0.0&amp;gt;, 1.0);//black text&amp;lt;/lsl&amp;gt;&lt;br /&gt;
The 1.0 is the alpha setting. 1.0 means fully opaque, and 0.0 would be completely transparent (invisible):&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetText(&amp;quot;alpha&amp;quot;, &amp;lt;0.0, 1.0, 0.0&amp;gt;, 0.5);//50% translucent green text&amp;lt;/lsl&amp;gt;&lt;br /&gt;
===Multiple lines===&lt;br /&gt;
&amp;lt;lsl&amp;gt;llSetText(&amp;quot;I am \n on two lines!&amp;quot;, &amp;lt;0.0, 1.0, 0.0&amp;gt;, 1.0);//two lines of green text&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers=&lt;br /&gt;
Drag this script out of inventory onto an object to erase its set text:&lt;br /&gt;
&amp;lt;lsl&amp;gt;// http://wiki.secondlife.com/wiki/llSetText&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetText(&amp;quot;&amp;quot;, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0);&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
Code to easily specify appearance of hovertext:&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
vector  blue        = &amp;lt;0,0,1&amp;gt;;&lt;br /&gt;
vector  orange      = &amp;lt;1,0.5,0&amp;gt;;&lt;br /&gt;
vector  cyan        = &amp;lt;0,1,1&amp;gt;;&lt;br /&gt;
vector  pink        = &amp;lt;1,0.5,0.76&amp;gt;;&lt;br /&gt;
vector  green       = &amp;lt;0,1,0&amp;gt;;&lt;br /&gt;
vector  red         = &amp;lt;1,0,0&amp;gt;;&lt;br /&gt;
vector  white       = &amp;lt;1,1,1&amp;gt;;&lt;br /&gt;
vector  yellow      = &amp;lt;1,1,0.1&amp;gt;;&lt;br /&gt;
vector  purple      = &amp;lt;1,0,1&amp;gt;;&lt;br /&gt;
vector  black       = &amp;lt;0,0,0&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
string  hoverText   = &amp;quot;TEXT GOES HERE&amp;quot;; // Sets the text&lt;br /&gt;
vector  hoverColor  = white; // Sets the color the text will show. Use predefined colors or any RGB color vector in float form&lt;br /&gt;
float   hoverAlpha  = 1.0; // Sets the text&#039;s transparency, 1.0 being SOLID, while 0 would be clear,&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSetText(hoverText, hoverColor, hoverAlpha);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
To make hovertext under linked prims you can use this simple function:&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
mySetLinkText(integer linknum, string text, vector color, float alpha) {&lt;br /&gt;
    llSetLinkPrimitiveParamsFast(linknum,[PRIM_TEXT,text,color,alpha]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// For example:&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer total_number)&lt;br /&gt;
    {&lt;br /&gt;
        mySetLinkText(LINK_SET, &amp;quot;TEST&amp;quot;, &amp;lt;0,1,0&amp;gt;, 0.5);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|also&lt;br /&gt;
|also_functions&lt;br /&gt;
|also_constants=&lt;br /&gt;
{{LSL DefineRow||[[PRIM_TEXT]]}}&lt;br /&gt;
|also_articles=&lt;br /&gt;
{{LSL DefineRow||[[:Category:LSL Examples|Examples]]: [[SplitLine]]|Insert &#039;new line&#039; escape codes at certain positions of a string}}&lt;br /&gt;
{{LSL DefineRow||Useful snippet: [[llGetObjectPermMask]]|Label an object with text and newlines to give away or sell}}&lt;br /&gt;
|notes=To actually display text on a prim, see [[XyzzyText]], or consider using parcel prim [[:Category:LSL_Media|Media]] options (useful only if you have control over the land&#039;s media settings.)&lt;br /&gt;
|cat1=Effects&lt;br /&gt;
|cat2=Prim&lt;br /&gt;
|cat3=Stop&lt;br /&gt;
|cat4=Floating Text&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Fox Oxbar</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlRequestAgentData&amp;diff=938162</id>
		<title>LlRequestAgentData</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlRequestAgentData&amp;diff=938162"/>
		<updated>2010-06-08T14:32:59Z</updated>

		<summary type="html">&lt;p&gt;Fox Oxbar: typo fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#vardefine:p_data_desc|DATA_* flag}}{{LSL_Function&lt;br /&gt;
|func_id=155|func_sleep=0.1|func_energy=10.0&lt;br /&gt;
|func=llRequestAgentData&lt;br /&gt;
|return_type=key&lt;br /&gt;
|p1_type=key|p1_name=id|p1_hover=avatar UUID|p1_desc=avatar {{HoverLink|UUID|Universally Unique Identifier}}&lt;br /&gt;
|p2_type=integer|p2_name=data&lt;br /&gt;
|func_footnote&lt;br /&gt;
|func_desc=Requests &#039;&#039;&#039;{{LSL Param|data}}&#039;&#039;&#039; about agent &#039;&#039;&#039;id&#039;&#039;&#039;. When &#039;&#039;&#039;{{LSL Param|data}}&#039;&#039;&#039; is available the [[dataserver]] event will be raised&lt;br /&gt;
|return_text=that is used to identify the [[dataserver]] event when it is raised.&lt;br /&gt;
|spec&lt;br /&gt;
|caveats&lt;br /&gt;
|constants={{{!}} {{Prettytable|style=margin-top:0;margin-right:0;}}&lt;br /&gt;
{{!}}- {{Hl2}}&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; {{!}} {{LSL Param|data}} Constant&lt;br /&gt;
! Type&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; {{!}} Description&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{Template:LSL_Constants/llRequestAgentData}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
|examples=&amp;lt;lsl&amp;gt;key owner_key;&lt;br /&gt;
key owner_name_query;&lt;br /&gt;
string owner_name;&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        owner_key = llGetOwner();&lt;br /&gt;
        owner_name_query = llRequestAgentData(owner_key, DATA_NAME);&lt;br /&gt;
    }&lt;br /&gt;
    dataserver(key queryid, string data)&lt;br /&gt;
    {&lt;br /&gt;
        if ( owner_name_query == queryid )&lt;br /&gt;
        {&lt;br /&gt;
            owner_name = data;&lt;br /&gt;
            llSay(0, &amp;quot;The owner of this script is called : &amp;quot; + owner_name );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}//Anylyn Hax 06:19, 23 July 2007 (PDT)&amp;lt;/lsl&amp;gt;&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llGetAgentInfo]]|}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events={{LSL DefineRow||[[dataserver]]|}}&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|deprecated&lt;br /&gt;
|cat1=Dataserver&lt;br /&gt;
|cat2=Avatar&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Fox Oxbar</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Common_compilation_problems&amp;diff=632332</id>
		<title>Common compilation problems</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Common_compilation_problems&amp;diff=632332"/>
		<updated>2009-10-26T06:39:42Z</updated>

		<summary type="html">&lt;p&gt;Fox Oxbar: grammar fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CompileNav}}&lt;br /&gt;
&lt;br /&gt;
= General Problems =&lt;br /&gt;
&lt;br /&gt;
*  Make sure you download not only the source, but the artwork zipfile, and the appropriate zipfile/tarball of libraries for your platform&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Windows = &lt;br /&gt;
&lt;br /&gt;
== Viewer 1.19.1.4 / VS2003 ==&lt;br /&gt;
=== C1083: Cannot open include file: &#039;dxdiag.h&#039; ===&lt;br /&gt;
The DirectX SDK doesn&#039;t automatically insert its include directory into the VS2003 paths. For the June 2008 DirectX SDK release, go to Tools -&amp;gt; Options -&amp;gt; Projects (on left) -&amp;gt; VC++ Directories. On right show directories for Include files, and add:&lt;br /&gt;
* C:\Program Files\Microsoft DirectX SDK (June 2008)\Include&lt;br /&gt;
&lt;br /&gt;
=== C1083: Cannot open include file: &#039;unistd.h&#039; ===&lt;br /&gt;
On Apr 27, 2008 in thread &#039;&#039;[sldev] error while compiling on vc8/9 (unistd.h)&#039;&#039;, SLDev contributor wuhanzymail &amp;lt;wuhanzymail@163.com&amp;gt; recommended the following:&lt;br /&gt;
&lt;br /&gt;
1) right-click project lscript_compile, choose properties, c/c++, Preprocessor, add &#039;&#039;YY_NO_UNISTD_H&#039;&#039; to Preprcessor Definitions.&lt;br /&gt;
&lt;br /&gt;
2) in lex_yy.cpp, line 5915 change:&lt;br /&gt;
&amp;lt;php&amp;gt;           #ifndef __cplusplus&lt;br /&gt;
           extern int isatty (int );&lt;br /&gt;
           #endif&amp;lt;/php&amp;gt;&lt;br /&gt;
to:&lt;br /&gt;
&amp;lt;php&amp;gt;           #ifndef YY_NEVER_INTERACTIVE&lt;br /&gt;
           extern int isatty (int );&lt;br /&gt;
           #endif&amp;lt;/php&amp;gt;&lt;br /&gt;
3) still in lex_yy.cpp, line 5943 change:&lt;br /&gt;
&amp;lt;php&amp;gt;          b-&amp;gt;yy_is_interactive = file ? (isatty( fileno(file) ) &amp;gt; 0) : 0;&amp;lt;/php&amp;gt;&lt;br /&gt;
to:&lt;br /&gt;
&amp;lt;php&amp;gt;          #if YY_NEVER_INTERACTIVE&lt;br /&gt;
              b-&amp;gt;yy_is_interactive = 0;&lt;br /&gt;
          #else&lt;br /&gt;
              b-&amp;gt;yy_is_interactive = file ? (isatty( fileno(file) ) &amp;gt; 0) : 0;&lt;br /&gt;
          #endif&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C4018: &#039;&amp;lt;&#039; : signed/unsigned mismatch ===&lt;br /&gt;
On Apr 30, 2008 in thread &#039;&#039;[sldev] cygwin flex lscript_compile workaround&#039;&#039;, SLDev contributor Steve Linden recommended the following:&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure whether this has already been addressed here, but we &lt;br /&gt;
discovered a problem with the latest version of Cygwin flex and &lt;br /&gt;
lscript_compile and I thought I would share the workaround. We&#039;ve &lt;br /&gt;
committed the workaround to our release-candidate branche so it should &lt;br /&gt;
be in an upcoming source drop as well.&lt;br /&gt;
&lt;br /&gt;
1. Add &#039;&#039;YY_NO_UNISTD_H&#039;&#039; to the list of Preprocessor Definitions in the &lt;br /&gt;
lscript_compile project file.&lt;br /&gt;
&lt;br /&gt;
2. Apply the following patch it indra.l:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;Index: indra.l&lt;br /&gt;
===================================================================&lt;br /&gt;
--- indra.l    (revision 86342)&lt;br /&gt;
+++ indra.l    (revision 86343)&lt;br /&gt;
@@ -12,6 +12,7 @@&lt;br /&gt;
 #include &amp;quot;linden_common.h&amp;quot;&lt;br /&gt;
 // Deal with the fact that lex/yacc generates unreachable code&lt;br /&gt;
 #ifdef LL_WINDOWS&lt;br /&gt;
+#pragma warning (disable : 4018) // warning C4018: signed/unsigned mismatch&lt;br /&gt;
 #pragma warning (disable : 4702) // warning C4702: unreachable code&lt;br /&gt;
 #endif    //    LL_WINDOWS&lt;br /&gt;
 #include &amp;quot;llmath.h&amp;quot;&lt;br /&gt;
@@ -44,7 +45,10 @@&lt;br /&gt;
 &lt;br /&gt;
 #define YYLMAX 16384&lt;br /&gt;
 #define YY_NEVER_INTERACTIVE 1 /* stops flex from calling isatty() */&lt;br /&gt;
-&lt;br /&gt;
+#ifdef LL_WINDOWS&lt;br /&gt;
+#define isatty(x) 0 /* hack for bug in cygwin flex 2.5.35 */&lt;br /&gt;
+#endif&lt;br /&gt;
+&lt;br /&gt;
 #ifdef ECHO&lt;br /&gt;
 #undef ECHO&lt;br /&gt;
 #endif&lt;br /&gt;
&amp;lt;/php&amp;gt;&lt;br /&gt;
=== [...] error result returned from &#039;link.exe&#039; ===&lt;br /&gt;
By checking the Output window (View menu -&amp;gt; Other Windows), this shows up as an error saying: &#039;&#039;link: extra operand `/NOLOGO&#039; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As reported by Brad Linden, this is caused by having the compiler executable directories in the wrong order, with the Cygwin directory path listed above the Visual Studio paths. This causes the Cygwin linker to be used instead of Visual Studio&#039;s linker.&lt;br /&gt;
&lt;br /&gt;
Go to Tools -&amp;gt; Options -&amp;gt; Projects -&amp;gt; VC++ Directories, show directories for Executables, and move &amp;quot;C:\cygwin\bin&amp;quot; to the bottom of the list.&lt;br /&gt;
&lt;br /&gt;
== Unresolved external symbol _CLSID_DxDiagProvider/_IID_IDxDiagProvider ==&lt;br /&gt;
* &#039;&#039;newview error LNK2001: unresolved external symbol _CLSID_DxDiagProvider&#039;&#039;&lt;br /&gt;
* &#039;&#039;newview error LNK2001: unresolved external symbol _IID_IDxDiagProvider&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These errors reportedly occur with MSVC 2003 and certain versions of the DirectX SDK.  To workaround, edit lldxhardware.cpp and replace the following (line 35):&lt;br /&gt;
&lt;br /&gt;
     #include &amp;lt;dxdiag.h&amp;gt;&lt;br /&gt;
with...&lt;br /&gt;
     #define INITGUID&lt;br /&gt;
     #include &amp;lt;dxdiag.h&amp;gt;&lt;br /&gt;
     #undef INITGUID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cannot open input file &#039;dxguid.lib&#039; ==&lt;br /&gt;
* &#039;&#039;fatal error LNK1181: cannot open input file &#039;dxguid.lib&#039; in ...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are using a fairly recent DirectX SDK (&amp;quot;December 2006&amp;quot; or newer), your VC++ Libraries Directory may be wrong because the SDK&#039;s lib folder now has 2 sub-folders for x64 and x86.  Try changing the path from &#039;&#039;C:\Program Files\Microsoft DirectX SDK (December 2006)\Lib&#039;&#039; to &#039;&#039;C:\Program Files\Microsoft DirectX SDK (December 2006)\&#039;&#039; &#039;&#039;&#039;Lib\x86&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Cannot open input file &#039;dxerr8.lib&#039; ==&lt;br /&gt;
* &#039;&#039;fatal error LNK1104: cannot open file &#039;dxerr8.lib&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are using the most recent DirectX SDK (&amp;quot;November 2007&amp;quot;), the file dxerr8.lib does no longer exist. To fix this, you&#039;ll need to change the newview project to include &#039;dxerr9.lib&#039; instead. To do this, right-lick newview &amp;gt; Configuration Properties &amp;gt; Linker &amp;gt; Input, click Additional Dependencies on the right to show a button labeled &amp;quot;...&amp;quot; on it at the very right on the line, then click the ... button. Scroll down the list to find &#039;dxerr8.lib&#039;. Rewrite it to &#039;dxerr9.lib&#039;. Remember to do this for both the ReleaseForDownload and the ReleaseNoOpt Configurations.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== A tool returned an error code from &amp;quot;Building ytab.cpp&amp;quot; ==&lt;br /&gt;
* &#039;&#039;lscript_compile_fb error PRJ0019: A tool returned an error code from &amp;quot;Building ytab.cpp&amp;quot; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
One possible reason for this is that Visual Studio does not know where cygwin/bin is, especially if this is accompanied by an error relating to bison.exe being an invalid command.  Even if the directory for cygwin is in the environment variable PATH, Visual Studio maintains its own separate copy which does not seem to be automatically synchronized after the initial installation.&lt;br /&gt;
&lt;br /&gt;
For Visual Studio .NET 2003, go to Tools &amp;gt; Options &amp;gt; Projects &amp;gt; VC++ Directories.  In the &amp;quot;show directories for&amp;quot; dropdown, choose &amp;quot;Executable files&amp;quot;.  Make sure that your cygwin (default C:\cygwin\bin) and ActivePython (default C:\Python25) directories are listed.&lt;br /&gt;
&lt;br /&gt;
== Cannot open include file: &#039;ytab.h&#039;: No such file or directory ==&lt;br /&gt;
* &#039;&#039;indra.l (20) : fatal error C1083: Cannot open include file: &#039;ytab.h&#039;: No such file or directory.&#039;&#039;&lt;br /&gt;
Workaround: Manually copy &amp;quot;linden\indra\lscript\lscript_compile\ytab.hpp&amp;quot; to &amp;quot;linden\indra\lscript\lscript_compile\ytab.h&amp;quot; and build again. &lt;br /&gt;
&lt;br /&gt;
Note: The underlying issue is that in indra.y there is a postbuild step which should do this automatically, but which is missing in some configurations (e.g. in Debug builds).&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Cannot open include file: &#039;png.h&#039;: No such file or directory ==&lt;br /&gt;
* &#039;&#039;imagepng.cpp : fatal error C1083: Cannot open include file: &#039;libpng12/png.h&#039;: No such file or directory.&#039;&#039;&lt;br /&gt;
There are a couple of files missing since the 1.17. distribution.  You can either get the missing files from the internet (from the libpng and zlib projects) or download a set with just the missing files from [http://www.blueflash.cc/users/nicholaz/~libs here] (see the readme.txt inside the png archive there).&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Cannot open include file: &#039;glh/glh_linear.h&#039; or &#039;glh/glh_convenience.h&#039; ==&lt;br /&gt;
These files are currently missing from Linden Windlight distributions.  See [https://jira.secondlife.com/browse/VWR-3415 JIRA VWR-3415] or grab a copy from [http://www.blueflash.cc/users/nicholaz/~libs here] and put the files into a folder named linden/libraries/include/glh.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Errors relating to &amp;quot;template_verifier.py&amp;quot; ==&lt;br /&gt;
With version 1.18 a template verifier script written in Python is used to ensure the message template is correct.  In some distributions the file was missing.  You will also get an error if you have skipped the Python install.  In both cases it is safe to hack the prebuild.bat file in the newview folder as described on the JIRA [http://jira.secondlife.com/browse/VWR-1267 VWR-1267]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Missing resources ==&lt;br /&gt;
* &#039;&#039;.\res\newViewRes.rc(64) : error RC2135 : file not found: ll_icon.ico&#039;&#039;&lt;br /&gt;
Some releases have missing files, which were reported to be last seen in the &#039;&#039;&#039;1.14.0.1&#039;&#039;&#039; release.&lt;br /&gt;
* Go to the [[source downloads]] page and grab the [[http://secondlife.com/developers/opensource/downloads/2007/04/slviewer-src-1.14.0.1.zip &#039;&#039;&#039;1.14.0.1&#039;&#039;&#039; viewer]] sources.&lt;br /&gt;
* Explore the archive to &amp;quot;linden/indra/newview/res&amp;quot; folder and extract content to your &amp;quot;linden/indra/newview/res&amp;quot; folder into current revision.&lt;br /&gt;
Missing folder in recent release, &amp;quot;&#039;&#039;&#039;1.17.0.12&#039;&#039;&#039;&amp;quot; which causes the SecondLife to hang while loading into the world.&lt;br /&gt;
* Go to the previous source and copy the missing folder, &amp;quot;Character&amp;quot; and place it into the &amp;quot;newview&amp;quot; folder&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Error code from &amp;quot;Copying message template&amp;quot; ==&lt;br /&gt;
* &#039;&#039;newview error PRJ0019: A tool returned an error code from &amp;quot;Copying message template&amp;quot;&#039;&#039;&lt;br /&gt;
This is caused by the script trying to do a copy command, but the source path isn&#039;t in quotes.  Open up newview.vcproj in notepad, and near the bottom there are 4 line that say:&lt;br /&gt;
     CommandLine=&amp;quot;copy $(InputPath) .\app_settings\message_template.msg&lt;br /&gt;
replace them with&lt;br /&gt;
     CommandLine=&amp;quot;copy &amp;amp;amp;quot;$(InputPath)&amp;amp;amp;quot; .\app_settings\message_template.msg&lt;br /&gt;
The source and destination paths on line 158 may also require wrapping in quotes.  In which case:&lt;br /&gt;
     CommandLine=&amp;quot;copy $(TargetDir)\$(TargetFileName) $(ProjectDir)&lt;br /&gt;
should become:&lt;br /&gt;
     CommandLine=&amp;quot;copy &amp;amp;amp;quot;$(TargetDir)\$(TargetFileName)&amp;amp;amp;quot; &amp;amp;amp;quot;$(ProjectDir)&amp;amp;amp;quot;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
== Can not find library ll*.lib ==&lt;br /&gt;
If you get a compile error for missing libraries with names of the projects (lscript_compile.lib, llaudio.lib, llcharacter.lib, etc.) go to newview &amp;gt; Properties &amp;gt; Linker &amp;gt; Input and remove these from the list of input libraries (they will be linked through the dependencies and should not be in the list).&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cannot open include file: &#039;windows.h&#039; ==&lt;br /&gt;
If you run into this problem:&lt;br /&gt;
 ..\..\..\boost/regex/v4/fileiter.hpp(44) : fatal error C1083: Cannot open include file: &#039;windows.h&#039;: No such file or directory&lt;br /&gt;
Fix it with this: (thanks Fairlight!)&lt;br /&gt;
 set INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include;%INCLUDE%&lt;br /&gt;
 set LIB=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB%&lt;br /&gt;
You might need to edit the above path to refer to your particular platform SDK.  If you don&#039;t have the Microsoft Windows Platform SDK installed, then you can download it for free from Microsoft.  It is version specific and can be tricky to find on their website.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re having problems with windows.h in Visual Studio Express 2005, check out this forum post:&lt;br /&gt;
[http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1995837&amp;amp;SiteID=1 MSDN Forum Post]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unresolved external symbol &amp;quot;int __cdecl lscript_compile&amp;quot; (VS2005) ==&lt;br /&gt;
* &#039;&#039;llcompilequeue.obj : error LNK2019: unresolved external symbol &amp;quot;int __cdecl lscript_compile(char const *,char const *,char const *,int)&amp;quot; (?lscript_compile@@YAHPBD00H@Z) referenced in function &amp;quot;protected: void __thiscall LLFloaterCompileQueue::compile(char const *,class LLUUID const &amp;amp;)&amp;quot; (?compile@LLFloaterCompileQueue@@IAEXPBDABVLLUUID@@@Z)&#039;&#039;&lt;br /&gt;
* &#039;&#039;llpreviewscript.obj : error LNK2001: unresolved external symbol &amp;quot;int __cdecl lscript_compile(char const *,char const *,char const *,int)&amp;quot; (?lscript_compile@@YAHPBD00H@Z)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is not entirely clear, but there seems to be a problem with VS2005 if projects are unloaded while being in the dependency tree.  I have seen this error while I had win_crash_logger and win_updater unloaded from the project tree and the problem went away when I loaded them back and excluded them from the newview dependency first.&lt;br /&gt;
&lt;br /&gt;
Also make sure that in newview, properties, linker, input, input libraries, no libraries named ll*.lib and lscript_compile.lib are listed there (remove them if you find them).&lt;br /&gt;
&lt;br /&gt;
Also be sure that your error does not come from previously in the log: like the cgywin component bison not being found. For MSVS2005 Express, you may need to go to tools&amp;gt;options&amp;gt;Projects and Solutions&amp;gt;VC++ Directories&amp;gt;Executable files and add the directory for cgywin. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unresolved external symbol __invalid_parameter_noinfo (VS2005) ==&lt;br /&gt;
* &#039;&#039;llmozlib-vc80.lib(llembeddedbrowserwindow.obj) : error LNK2019: unresolved external symbol __invalid_parameter_noinfo referenced&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You are most likely trying a debug build under VS2005.  For debug builds, see the compile instruction section on [[finding_leaks]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cannot open include file: &#039;ares.h&#039; ==&lt;br /&gt;
download src from http://daniel.haxx.se/projects/c-ares/&lt;br /&gt;
&lt;br /&gt;
compile c-ares-1.4.0/vc/areslib&lt;br /&gt;
&lt;br /&gt;
copy c-ares-1.4.0/vc/areslib/Release/areslib.lib to linden/libraries/i686-win32/lib_release and to lib_debug&lt;br /&gt;
&lt;br /&gt;
copy c-ares-1.4.0/*.h to linden/libraries/i686-win32/include/ares&lt;br /&gt;
&lt;br /&gt;
===FMOD===&lt;br /&gt;
FMOD headers and libs need to be copied into the viewer build directory BUT on Windows the manifests are not currently moving the libs to the correct location post build so the application will fail to run, to resolve copy fmod.dll to indra/build-vc71/newview/debug and indra/build-vc71/newview/relwithdebinfo and indra/build-vc71/newview/release&lt;br /&gt;
&lt;br /&gt;
===Boost and VS 2008===&lt;br /&gt;
If you use Visual Studio C++ 2008 (VC90), you may find that the Boost library will lock up solid and the viewer will not tun consuming 50-100% of CPU doing nothing. The only solutions are to use Visual Studio 2005 OR to get a newer version/rebuild boost with Visual Studio 2008.&lt;br /&gt;
&lt;br /&gt;
This problem is being worked on. Look here for updates: [https://jira.secondlife.com/browse/VWR-9541 VWR-9541]&lt;br /&gt;
&lt;br /&gt;
===Express editions of Visual C++===&lt;br /&gt;
Express editions do not have some of the extra features that VSTool.exe requires, VSTool is a little application that sets a few default project options, like which project is the startup and which build configuration to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LLKDU===&lt;br /&gt;
This is not present in the automated libs download but is required at least on windows by the copy_win_scrips script. The file is not actually needed for the viewer to run (if present it will be used for jpeg2000 decoding in preference to Openjpeg. The solution is to remove the lines from newview/copy_win_scripts that reference llkdu and this should then allow this custom build step to run without issue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other (older) notes ==&lt;br /&gt;
* Mozilla is not compatible with visual studio 2005, so we have not migrated the codebase, so we do not know if it works. &lt;br /&gt;
&lt;br /&gt;
* Added my errors at [[User:Adam_Zaius/MSVS2005 Errors]] [[User:Adam Zaius|Adam Zaius]] 09:40, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
* To minimize the number of warnings for now: in C/C++-Preprocessor add &#039;;_CRT_SECURE_NO_DEPRECATE&#039; to the Preprocessor Definitions, that will supress deprecation warnings --[[User:Artm Udal|Artm Udal]] 12:42, 8 January 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Mac OS X =&lt;br /&gt;
&lt;br /&gt;
Getting:&lt;br /&gt;
&lt;br /&gt;
*/linden/indra/newview/../llwindow/llglheaders.h:377:31: error: GL/glh_extensions.h: No such file or directory&lt;br /&gt;
** This means you didn&#039;t [[Compiling the viewer (Mac OS X)#Viewer Source, Libraries, and Artwork|merge the libraries]] right.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== libGL ===&lt;br /&gt;
&lt;br /&gt;
Sometimes the provide libGL.a can cause issues.  To avoid linker errors, you may need to remove indra/libraries/i686-linux/release/libGL.a and indra/libraries/i686-linux/debug/libGL.a&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Packaging errors ===&lt;br /&gt;
&lt;br /&gt;
The final packaging step may fail with errors about the manifest if you are not using the &amp;lt;i&amp;gt;slviewer-linux-libs&amp;lt;/i&amp;gt; bundle; in this case, if you still wish to end up with an end-user viewer package incorporating your own libraries, you can edit the manifest file found at &amp;lt;b&amp;gt;indra/newview/viewer_manifest.py&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Various Compilation problems ===&lt;br /&gt;
&lt;br /&gt;
====Various missing libraries====&lt;br /&gt;
&amp;lt;pre&amp;gt;g++-3.4 -o linux_crash_logger/linux-crash-logger-i686-bin-globalsyms --no-keep-memory --reduce-memory-overheads /tmp/paul/home/paul/builds/secondlife/src/linden/indra/i686-linux-client-release/llcrashlogger/llcrashlogger.o /tmp/paul/home/paul/builds/secondlife/src/linden/indra/i686-linux-client-release/linux_crash_logger/linux_crash_logger.o /tmp/paul/home/paul/builds/secondlife/src/linden/indra/i686-linux-client-release/linux_crash_logger/llcrashloggerlinux.o -Llib_release_client/i686-linux -L/home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client -lllui -lllxml -lllmessage -lllvfs -lllmath -lllcommon -lcurl -lssl -lcrypto -laprutil-1 -lapr-1 -lcares -lexpat -ldb-4.2 -lgtk-x11-2.0&lt;br /&gt;
/usr/bin/ld: skipping incompatible /home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client/libcurl.a when searching for -lcurl&lt;br /&gt;
/usr/bin/ld: skipping incompatible /home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client/libssl.so when searching for -lssl&lt;br /&gt;
/usr/bin/ld: skipping incompatible /home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client/libcrypto.so when searching for -lcrypto&lt;br /&gt;
/usr/bin/ld: skipping incompatible /home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client/libaprutil-1.so when searching for -laprutil-1&lt;br /&gt;
/usr/bin/ld: skipping incompatible /home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client/libapr-1.so when searching for -lapr-1&lt;br /&gt;
/usr/bin/ld: skipping incompatible /home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client/libcares.a when searching for -lcares&lt;br /&gt;
/usr/bin/ld: skipping incompatible /home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client/libexpat.so when searching for -lexpat&lt;br /&gt;
/usr/bin/ld: skipping incompatible /home/paul/builds/secondlife/src/linden/libraries/i686-linux/lib_release_client/libdb-4.2.so when searching for -ldb-4.2&lt;br /&gt;
/usr/bin/ld: cannot find -ldb-4.2&lt;br /&gt;
collect2: ld returned 1 exit status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [paul@myhost secondlife]$ pacman -Q db&lt;br /&gt;
 db 4.6.21-2&lt;br /&gt;
&lt;br /&gt;
 [paul@myhost secondlife]$ uname -a&lt;br /&gt;
 Linux myhost 2.6.23-ARCH #1 SMP PREEMPT Tue Jan 15 07:17:51 CET 2008 x86_64 Intel(R) Celeron(R) CPU 2.66GHz GenuineIntel GNU/Linux&lt;br /&gt;
&lt;br /&gt;
And using:&amp;lt;pre&amp;gt;&lt;br /&gt;
source=(&#039;secondlife.desktop&#039; &#039;secondlife.install&#039; &#039;secondlife.launcher&#039; \&lt;br /&gt;
&amp;quot;http://secondlife.com/developers/opensource/downloads/2008/01/slviewer-src-RC-${pkgver}.tar.gz&amp;quot; \&lt;br /&gt;
&#039;http://secondlife.com/developers/opensource/downloads/2007/12/slviewer-artwork-RC-1.18.6.2.zip&#039; \&lt;br /&gt;
&#039;http://secondlife.com/developers/opensource/downloads/2007/12/slviewer-linux-libs-RC-1.18.6.2.tar.gz&#039; \&lt;br /&gt;
&#039;http://www.fmod.org/index.php/release/version/fmodapi375linux.tar.gz&#039; \&lt;br /&gt;
&#039;http://secondlife.com/developers/opensource/downloads/2007/12/llmozlib-src-20071221.tar.gz&#039;)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hum ok, I was trying to use:&lt;br /&gt;
 scons DISTCC=no BTARGET=client BUILD=release MOZLIB=yes&lt;br /&gt;
&lt;br /&gt;
I&#039;ll retry with:&lt;br /&gt;
 scons BUILD=release ARCH=x86_64 BTARGET=client DISTCC=no MOZLIB=yes FMOD=yes GSTREAMER=yes STANDALONE=yes&lt;br /&gt;
(Sconstruct says that with STANDALONE=yes -db-4.2 will not be used)&lt;br /&gt;
&lt;br /&gt;
But at the beginning I get:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scons: Reading SConscript files ...&lt;br /&gt;
Building client 1.18.6.2 on x86_64-linux (release)&lt;br /&gt;
No CCACHE_DIR set.&lt;br /&gt;
&lt;br /&gt;
scons: warning: Two different environments were specified for target /tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llcrashlogger/llcrashlogger.o&amp;gt;,&lt;br /&gt;
	but they appear to have the same action: $CXX -o $TARGET -c $CXXFLAGS $_CCCOMCOM $SOURCES&lt;br /&gt;
File &amp;quot;/home/paul/builds/secondlife/src/linden/indra/SConstruct&amp;quot;, line 568, in create_executable&lt;br /&gt;
scons: done reading SConscript files.&lt;br /&gt;
scons: Building targets ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
well, the new scons line give different problem:&lt;br /&gt;
&amp;lt;pre&amp;gt;g++ -o /tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.o -c -g -pipe -Wall -Wno-reorder -Wno-trigraphs -Wno-sign-compare -Werror -fexceptions -pthread -D_REENTRANT -fno-math-errno -fsigned-char -fno-strict-aliasing -falign-loops=16 -ffast-math -O2 -D_FORTIFY_SOURCE=2 -DLL_STANDALONE -DLL_MESA_HEADLESS=0 -DLL_MESA=0 -DLL_LINUX=1 -DAPPID=secondlife -DLL_SDL=1 -DLL_FMOD=0 -DLL_X11=1 -DLL_GTK=1 -DLL_LIBXUL_ENABLED=1 -DLL_GSTREAMER_ENABLED=1 -DNDEBUG -DLL_RELEASE=1 -Illcommon -Illmath -Illwindow -Illaudio -Illcharacter -Illcrashlogger -Illdatabase -Illhavok -Illimage -Illinventory -Illmedia -Illmessage -Illprimitive -Illrender -Illscene -Illui -Illvfs -Illwindow -Illxml -Ilscript -Ilscript/lscript_compile -I/home/paul/builds/secondlife/src/linden/libraries/include -I/home/paul/builds/secondlife/src/linden/libraries/include/havok -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include -I/usr/include/atk-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/cairo -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/SDL -I/usr/include/apr-1 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/gstreamer-0.10 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/glib-2.0 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/glib-2.0/include -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/libxml2 /tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.cpp&lt;br /&gt;
cc1plus: warnings being treated as errors&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.cpp: In function &#039;const char* OrderToString(LLQuaternion::Order)&#039;:&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.cpp:701: warning: deprecated conversion from string constant to &#039;char*&#039;&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.cpp:704: warning: deprecated conversion from string constant to &#039;char*&#039;&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.cpp:707: warning: deprecated conversion from string constant to &#039;char*&#039;&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.cpp:710: warning: deprecated conversion from string constant to &#039;char*&#039;&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.cpp:713: warning: deprecated conversion from string constant to &#039;char*&#039;&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.cpp:716: warning: deprecated conversion from string constant to &#039;char*&#039;&lt;br /&gt;
scons: *** [/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llmath/llquaternion.o] Error 1&lt;br /&gt;
scons: building terminated because of errors.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Well, STANDALONE=yes make it use g++ rather than g++-3.4, so I decided to remove it, keeping&lt;br /&gt;
ARCH=X86_64 and others, but I get:&lt;br /&gt;
&amp;lt;pre&amp;gt;ranlib lib_release_client/x86_64-linux/libllprimitive.a&lt;br /&gt;
g++-3.4 -o /tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llrender/llfont.o -c -g -pipe -Wall -Wno-reorder -Wno-trigraphs -Wno-sign-compare -Werror -fexceptions -pthread -D_REENTRANT -fno-math-errno -fsigned-char -fno-strict-aliasing -falign-loops=16 -ffast-math -O2 -D_FORTIFY_SOURCE=2 -DLL_MESA_HEADLESS=0 -DLL_MESA=0 -DLL_LINUX=1 -DAPPID=secondlife -DLL_SDL=1 -DLL_FMOD=0 -DLL_X11=1 -DLL_GTK=1 -DLL_LIBXUL_ENABLED=1 -DLL_GSTREAMER_ENABLED=1 -DNDEBUG -DLL_RELEASE=1 -Illcommon -Illmath -Illwindow -Illaudio -Illcharacter -Illcrashlogger -Illdatabase -Illhavok -Illimage -Illinventory -Illmedia -Illmessage -Illprimitive -Illrender -Illscene -Illui -Illvfs -Illwindow -Illxml -Ilscript -Ilscript/lscript_compile -I/home/paul/builds/secondlife/src/linden/libraries/include -I/home/paul/builds/secondlife/src/linden/libraries/include/havok -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/ELFIO -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/atk-1.0 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/glib-2.0 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/gtk-2.0 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/llfreetype2 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/pango-1.0 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/gstreamer-0.10 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/glib-2.0 -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/glib-2.0/include -I/home/paul/builds/secondlife/src/linden/libraries/x86_64-linux/include/libxml2 /tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llrender/llfont.cpp&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llrender/llfont.cpp:41:44: llfreetype2/freetype/ft2build.h: No such file or directory&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llrender/llfont.cpp:56: error: `FT_Render_Mode&#039; does not name a type&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llrender/llfont.cpp:60: error: `FT_Library&#039; does not name a type&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llrender/llfont.cpp: In constructor `LLFontManager::LLFontManager()&#039;:&lt;br /&gt;
/tmp/paul/home/paul/builds/secondlife/src/linden/indra/x86_64-linux-client-release/llrender/llfont.cpp:78: error: `gFTLibrary&#039; was not declared in this scope&lt;br /&gt;
... [many more errors]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oh well, SConstruct says I need: cairo glib-2.0 atk gmobile-2.0 gdk-2.0 gdk-pixbuf-2.0 pango pangoft2 pangox pangoxft gtk+-2.0 sdl vorbis vorbisenc vorbisfile&lt;br /&gt;
&lt;br /&gt;
Maybe this is pangoft2 that is missing.&lt;br /&gt;
&lt;br /&gt;
* This part is probably not relevant anymore --[[USER:Thickbrick Sleaford|Thickbrick]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&amp;quot;Unable to initialize communications&amp;quot;====&lt;br /&gt;
* If the viewer just displays the error message &amp;quot; Unable to initialize communications&amp;quot; and exits, it can&#039;t find message_template.msg. You did remember to copy it over, right?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Blino&#039;s SL build/linking patches for &#039;&#039;&#039;gcc4&#039;&#039;&#039;====&lt;br /&gt;
http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/secondlife/current/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====objcopy: &amp;lt;b&amp;gt;&#039;newview/linux_tools/exposed-symbols.txt&#039;&amp;lt;/b&amp;gt;: No such file====&lt;br /&gt;
* Tofu says... &#039;This is an omission from our manifest which I&#039;ll fix.  Meanwhile it&#039;s a safe fix to create an empty file with that name.&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Something like: &amp;lt;b&amp;gt;/usr/bin/ld: cannot find -lz&amp;lt;/b&amp;gt;====&lt;br /&gt;
* Nadia says: Install the zlib development headers. (Ubuntu package zlib1g-dev, Red Hat zlib-devel.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Something like: indra.y.cpp:17: &amp;lt;b&amp;gt;error: previous declaration of `int yyparse()&#039;&amp;lt;/b&amp;gt;====&lt;br /&gt;
* Tofu says... &#039;This appears to be a problem with some versions of flex/bison.  A resident reports success when comment out the &amp;lt;i&amp;gt;#ifdef __cplusplus&amp;lt;/i&amp;gt; lines in lscript/lscript_compile/indra.y&#039;&lt;br /&gt;
* Nadia says: install the zlib development headers first and try recompiling. Commenting out those lines results in a error indra.l:666: &amp;lt;b&amp;gt;undefined&amp;lt;/b&amp;gt;&lt;br /&gt;
* Abi says: I forgot to install bison.  Once I did that, problem solved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Linking failures (&amp;quot;script not found&amp;quot;) due to spaces in the LINKFLAGS variable?====&lt;br /&gt;
* I saw a [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4665538 report], and modified the SConstruct file to drop the trailing arguments (and spaces) in LINKFLAGS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;cp: target `SecondLife_i686_1_13_1_7/app_settings/*’ is not a directory&#039;&#039;====&lt;br /&gt;
Building [https://lists.secondlife.com/pipermail/sldev/2007-January/000091.html 20070112a] using &#039;&#039;BUILD=releasefordownload&#039;&#039; I get many &#039;&#039;[: 89: ==: unexpected operator&#039;&#039; errors; &#039;&#039;cp: target `SecondLife_i686_1_13_1_7/app_settings/*’ is not a directory&#039;&#039; error, and same thing for character, fonts, help, skins, res-sdl; &#039;&#039;[: 111: ==: unexpected operator, [: 120: SecondLife_i686_1_13_1_7.tar.bz2: unexpected operator&#039;&#039;. I can succesfully run the client from the source tree.&lt;br /&gt;
* i think this has been fixed --[[User:Signore Iredell|Signore Iredell]] 06:09, 9 June 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====`[&#039;.../lscript/lscript_compile/indra.l.cpp&#039;]&#039;: Don&#039;t know how to build a file with suffix `.l&#039;====&lt;br /&gt;
scons: *** While building `[&#039;.../linden/indra/i686-linux-client-release/lscript/lscript_compile/indra.l.cpp&#039;]&#039;: Don&#039;t know how to build a file with suffix `.l&#039;.&lt;br /&gt;
* You probably don&#039;t have all the dependencies installed (I had the same problem). Check that you have flex and bison. --[[User:Random73 Janus|Random73 Janus]] 07:43, 16 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====`glActiveTextureARB&#039; was not declared in this scope====&lt;br /&gt;
Something like: linden/indra/i686-linux-client-release/llrender/llimagegl.cpp:122: &amp;lt;b&amp;gt;error: `glActiveTextureARB&#039; was not declared in this scope&amp;lt;/b&amp;gt;	 &lt;br /&gt;
* Tofu says... &#039;You&#039;ll need to install OpenGL headers if you don&#039;t already have them: gl.h, glext.h, glu.h (The ones from &#039;mesa&#039; should work)	 &lt;br /&gt;
* two residents report good luck on Gentoo after doing &#039;eselect opengl set xorg-x11&#039; (&amp;lt;b&amp;gt;but note!!&amp;lt;/b&amp;gt; You must know what you&#039;re doing; this may change your default system OpenGL drivers, and you will probably want to change them back again after the compile, e.g. &#039;eselect opengl set nvidia&#039;)&#039;&lt;br /&gt;
* Note that the above xorg-x11/nvidia issue is addressed in [http://jira.secondlife.com/browse/VWR-9557 VWR-9557] which includes patches!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Building Shared Library ELFIO====&lt;br /&gt;
 Building Shared Library ELFIO [[Compiling_the_viewer_%28Linux%29]] on AMD64 ubuntu 6.10&lt;br /&gt;
     g++-3.4 -shared *.o -o libelfio.so&lt;br /&gt;
     /usr/bin/ld: ELFIDynamic.o: relocation R_X86_64_32 against `a local symbol&#039; can &lt;br /&gt;
     not be used when making a  shared object; recompile with -fPIC&lt;br /&gt;
     ELFIDynamic.o: could not read symbols: Bad value&#039;&#039;&#039;&lt;br /&gt;
* I got around this with &amp;quot;export CXXFLAGS=-fPIC&amp;quot; before configuring ELFIO. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====incompatible libopenjpeg.a when searching for -lopenjpeg====&lt;br /&gt;
 Building Client on Ubuntu 7.04 AMD64&lt;br /&gt;
     /usr/bin/ld: skipping incompatible /home/dereck/Desktop/SLdev/linden/libraries/i686-linux/lib_release_client/libopenjpeg.a when searching for -lopenjpeg&lt;br /&gt;
     /usr/bin/ld: cannot find -lopenjpeg&lt;br /&gt;
     collect2: ld returned 1 exit status&lt;br /&gt;
* I went to the OpenJPEG website, downloaded the source, compiled for my system, installed it. The VWR compile  was happy after that. Although it&#039;s not done yet and I&#039;m still fixing another error, that I assume is unrelated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====C-Ares compatability issue.====&lt;br /&gt;
Compiling with c-ares version 1.5.1 got a compile error in llares.cpp:&lt;br /&gt;
&lt;br /&gt;
linden/indra/x86_64-linux-client-release/llcommon/llares.cpp: In member function `void LLAres::getHostByName(const char*, LLAres::HostResponder*, int)&#039;:&lt;br /&gt;
&lt;br /&gt;
linden/indra/x86_64-linux-client-release/llcommon/llares.cpp:147: error: invalid conversion from `void (*)(void*, int, hostent*)&#039; to `void (*)(void*, int, int, hostent*)&#039;&lt;br /&gt;
&lt;br /&gt;
Fixed with patch from https://jira.secondlife.com/browse/VWR-3480&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====memset used with constant zero length parameter====&lt;br /&gt;
Building with -t Release causes memset error in /usr/include/bits/string3.h:82&lt;br /&gt;
The error is &amp;quot;/usr/include/bits/string3.h:82: error: call to `__warn_memset_zero_len&#039; declared with attribute warning: memset used with constant zero length parameter; this could be due to transposed parameters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Patch: [http://jira.secondlife.com/browse/VWR-10001 VWR-10001]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Boost errors in Snowglobe (GCC &amp;gt;= 4.3)====&lt;br /&gt;
Build stops with errors: &amp;quot;../libraries/include/boost/token_functions.hpp:338: error: suggest explicit braces to avoid ambiguous &#039;else&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See [http://jira.secondlife.com/browse/SNOW-204 SNOW-204]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Gentoo: undefined reference to `FT_Realloc&#039;* from libpangoft2-1.0.so====&lt;br /&gt;
If you get an undefined reference to `FT_Realloc&#039;* from libpangoft2-1.0.so, you might have to delete some bundled libraries. [http://imprudenceviewer.org/wiki/How_to_compile#Removing_Bad_Libraries_on_Gentoo_Linux See here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Compiling viewer]]&lt;/div&gt;</summary>
		<author><name>Fox Oxbar</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlRequestPermissions&amp;diff=79501</id>
		<title>LlRequestPermissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlRequestPermissions&amp;diff=79501"/>
		<updated>2008-07-19T18:00:20Z</updated>

		<summary type="html">&lt;p&gt;Fox Oxbar: grammar/spelling fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/avatar|agent|sim=*}}{{LSL_Function&lt;br /&gt;
|func=llRequestPermissions|sort=RequestPermissions&lt;br /&gt;
|func_id=136|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|p1_type=key|p1_name=agent|p1_desc&lt;br /&gt;
|p2_type=integer|p2_name=perm|p2_desc=Permission mask (bitfield containing the permissions to request).&lt;br /&gt;
|func_desc=Ask agent for permission to run certain classes of functions.&lt;br /&gt;
|func_footer&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
*Permissions do not accumulate.&lt;br /&gt;
**If a permission was requested with a previous call to this function and granted, then in subsequent call was not requested, that permission is released (lost).&lt;br /&gt;
**To request two (or more) different permissions at the same time you can using the bitwise OR &amp;lt;nowiki&amp;gt;(|):&amp;lt;/nowiki&amp;gt; &amp;lt;lsl&amp;gt;llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION)&amp;lt;/lsl&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
*Scripts may hold permissions for only one agent at a time. To hold permissions for multiple agents you must use more than one script.&lt;br /&gt;
|examples=Request permission to animate an avatar&lt;br /&gt;
&amp;lt;lsl&amp;gt;default&lt;br /&gt;
{&lt;br /&gt;
    touch_start(integer detected)&lt;br /&gt;
    {&lt;br /&gt;
        llRequestPermissions(llDetectedKey(0), PERMISSION_TRIGGER_ANIMATION);&lt;br /&gt;
    }&lt;br /&gt;
    run_time_permissions(integer perm)&lt;br /&gt;
    {&lt;br /&gt;
        if (perm &amp;amp; PERMISSION_TRIGGER_ANIMATION)&lt;br /&gt;
        {&lt;br /&gt;
            llStartAnimation(&amp;quot;sit&amp;quot;);&lt;br /&gt;
            llOwnerSay(&amp;quot;animation will end in 5 seconds&amp;quot;);&lt;br /&gt;
            llSetTimerEvent(5.0);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        llSetTimerEvent(0.0);&lt;br /&gt;
        llStopAnimation(&amp;quot;sit&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To request two (or more) different permissions at the same time you can using the bitwise OR &amp;lt;nowiki&amp;gt;(|)&amp;lt;/nowiki&amp;gt; or precompute the value.&lt;br /&gt;
&amp;lt;lsl&amp;gt;llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION);&lt;br /&gt;
&lt;br /&gt;
integer perms = PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION;&lt;br /&gt;
llRequestPermissions(AvatarID, perms);&amp;lt;/lsl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|helpers&lt;br /&gt;
|also_events={{LSL DefineRow||[[run_time_permissions]]|Permission receiver event}}&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llGetPermissions]]|Get the permissions granted}}&lt;br /&gt;
{{LSL DefineRow||[[llGetPermissionsKey]]|Get the avatar who granted permissions.}}&lt;br /&gt;
|also_articles={{LSL DefineRow||{{LSLGC|Permissions/Script|Script permissions}}|}}&lt;br /&gt;
|notes = A dialog is presented to the agent to grant these permissions except for a few cases:&lt;br /&gt;
* If agent is sitting on object - Control and Camera tracking permissions are granted without notification upon request.&lt;br /&gt;
* If object is attached to agent - Control, Attach, and Animate permissions are granted without notification upon request so long as the script is in the root prim.  If the script is not in the root prim, the user will see the confirmation dialog.&lt;br /&gt;
* Permissions can persist across state changes - You do not need to request permissions in the state_entry() of each state in your script.&lt;br /&gt;
Regardless if a dialog is displayed you should always use the [[run_time_permissions]] event instead of depending upon this quirk.&lt;br /&gt;
|constants={{LSL Constants/Permissions}}&lt;br /&gt;
|cat1=Permissions/Script&lt;br /&gt;
|cat2=Dialog&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
|cat5&lt;br /&gt;
|cat6&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Fox Oxbar</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlSetHoverHeight&amp;diff=48187</id>
		<title>LlSetHoverHeight</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlSetHoverHeight&amp;diff=48187"/>
		<updated>2008-01-10T00:45:51Z</updated>

		<summary type="html">&lt;p&gt;Fox Oxbar: spelling correction :D&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL_Function/damping|tau}}&lt;br /&gt;
{{LSL_Function&lt;br /&gt;
|func_id=123|func_sleep=0.0|func_energy=10.0&lt;br /&gt;
|func=llSetHoverHeight&lt;br /&gt;
|p1_type=float|p1_name=height|p1_desc=Distance above the ground&lt;br /&gt;
|p2_type=integer|p2_name=water|p2_desc=boolean, if [[TRUE]] then hover above water too.&lt;br /&gt;
|p3_type=float|p3_name=tau&lt;br /&gt;
|func_footnote=Do not use with vehicles.&amp;lt;br/&amp;gt;Use [[llStopHover]] to stop hovering.&lt;br /&gt;
|func_desc=Critically damps to a &#039;&#039;&#039;height&#039;&#039;&#039; above the ground (or water) in &#039;&#039;&#039;tau&#039;&#039;&#039; seconds.&lt;br /&gt;
|return_text&lt;br /&gt;
|spec&lt;br /&gt;
|caveats=*Cannot hover more than 64 meters above the ground.&lt;br /&gt;
|constants&lt;br /&gt;
|examples&lt;br /&gt;
|helpers&lt;br /&gt;
|also_functions={{LSL DefineRow||[[llGroundRepel]]| Same as llSetHoverHeight but does not hover all the time}}&lt;br /&gt;
{{LSL DefineRow||[[llStopHover]]|To stop hovering}}&lt;br /&gt;
|also_tests&lt;br /&gt;
|also_events&lt;br /&gt;
|also_articles&lt;br /&gt;
|notes&lt;br /&gt;
|cat1=Hover&lt;br /&gt;
|cat2=Movement&lt;br /&gt;
|cat3=Physics&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Fox Oxbar</name></author>
	</entry>
</feed>