<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MakoBot</id>
		<title>OpenSimulator - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MakoBot"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Special:Contributions/MakoBot"/>
		<updated>2026-04-20T18:08:00Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/wiki/MediaWiki_talk:Titleblacklist</id>
		<title>MediaWiki talk:Titleblacklist</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/MediaWiki_talk:Titleblacklist"/>
				<updated>2012-03-31T03:42:50Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;Might be less tedious and troublesome to disable account creation for now and set it to e-mail verification.&lt;br /&gt;
Updating MediaWiki to the latest version may also be of benefit as it has some better goodies to protect the system.  See here @ http://lists.wikimedia.org/pipermail/mediawiki-announce/2012-March/000110.html&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;These Bitcoin buffoons are seriously in need of some med's, legal or otherwise.&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;EDIT:&lt;br /&gt;
Another option to consider, not only to protect the wiki and all of OpenSimulator.org would be to update Apache Server and mod the httpd.conf  and reflect it in .htaccess    There are major lists of &amp;quot;Bad Bots&amp;quot; which you can further add in here but the material here is a darned good start to blocking the trashers &amp;amp;amp; spammers as well as getting rid of the scrapers which can seriously slow down the website &amp;amp;amp; server response times.&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;_fck_mw_lspace&amp;quot;&amp;gt;   #  --- LINE 237 in apache\conf\httpd.conf&lt;br /&gt;
   # Controls who can get stuff from this server.&lt;br /&gt;
   #&lt;br /&gt;
   Order allow,deny&lt;br /&gt;
   Allow from all&lt;br /&gt;
   # &lt;br /&gt;
   # Good Bots&lt;br /&gt;
   SetEnvIfNoCase User-Agent .*google.* search_robot&lt;br /&gt;
   SetEnvIfNoCase User-Agent .*yahoo.* search_robot&lt;br /&gt;
   # SetEnvIfNoCase User-Agent .*bot.* search_robot&lt;br /&gt;
   SetEnvIfNoCase User-Agent .*ask.* search_robot&lt;br /&gt;
   # &lt;br /&gt;
   # Nasty IP's that hit us looking for things they shouldn't&lt;br /&gt;
   Deny from 188.40.231.165&lt;br /&gt;
   Deny from 50.22.21.218&lt;br /&gt;
   Deny from 66.135.49.5&lt;br /&gt;
   Deny from 60.231.215.42&lt;br /&gt;
   Deny from 220.181.108.123&lt;br /&gt;
   #&lt;br /&gt;
   # BAD BOTS added by WS as they changed a little&lt;br /&gt;
   SetEnvIfNoCase User-Agent ^$ bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Baiduspider+&amp;quot; bad_bot	&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Yandex&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Exabot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Cityreview&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Dotbot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Sogou&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Sosospider&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Twiceler&amp;quot; bad_bot &lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Python-urllib/2.4&amp;quot; bad_bot &lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^whitehat&amp;quot; bad_bot &lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BitKinex&amp;quot; bad_bot &lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^w00tw00t^&amp;quot; bad_bot &lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^ZmEu&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;ZmEu&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Morfeus&amp;quot; bad_bot&lt;br /&gt;
   #&lt;br /&gt;
   # this ruleset is for unwanted useragents... possibly email harvesters&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^AESOP_com_SpiderMan&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Alexibot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Anonymouse.org&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^asterias&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^attach&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BackDoorBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BackWeb&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Bandit&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Baiduspider&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BatchFTP&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Bigfoot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Black.Hole&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BlackWidow&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BlowFish&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Bot\ mailto:craftbot@yahoo.com&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BotALot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Buddy&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BuiltBotTough&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Bullseye&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^BunnySlippers&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Cegbfeieh&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^CheeseBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^CherryPicker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^ChinaClaw&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Collector&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Copier&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^CopyRightCheck&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^cosmos&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Crescent&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Curl&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Custo&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^DA&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^DISCo&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^DIIbot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^DittoSpyder&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Download&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Download\ Demon&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Download\ Devil&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Download\ Wonder&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Downloader&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^dragonfly&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Drip&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^eCatch&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^EasyDL&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^ebingbong&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^EirGrabber&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^EmailCollector&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^EmailSiphon&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^EmailWolf&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^EroCrawler&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Exabot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Express\ WebPictures&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Extractor&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^EyeNetIE&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^FileHound&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^FlashGet&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Foobot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^flunky&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^FrontPage&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^GetRight&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^GetSmart&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^GetWeb!&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Go!Zilla&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Google\ Wireless\ Transcoder&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Go-Ahead-Got-It&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^gotit&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Grabber&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^GrabNet&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Grafula&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Harvest&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^hloader&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^HMView&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^httplib&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^HTTrack&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^humanlinks&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^ia_archiver&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^IlseBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Image\ Stripper&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Image\ Sucker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Indy\ Library&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^InfoNaviRobot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^InfoTekies&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Intelliseek&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^InterGET&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Internet\ Ninja&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Iria&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Jakarta&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^JennyBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^JetCar&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^JOC&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^JustView&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Jyxobot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Kenjin.Spider&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Keyword.Density&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^larbin&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^LeechFTP&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^LexiBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^lftp&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^libWeb/clsHTTP&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^likse&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^LinkextractorPro&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^LinkScan/8.1a.Unix&amp;quot; bad_bo&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^LNSpiderguy&amp;quot; bad_bott&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^LinkWalker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^lwp-trivial&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^LWP::Simple&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Magnet&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Mag-Net&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^MarkWatch&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Mass\ Downloader&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Mata.Hari&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Memo&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Microsoft.URL&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Microsoft\ URL\ Control&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^MIDown\ tool&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^MIIxpc&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Mirror&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Missigua\ Locator&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Mister\ PiX&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^moget&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Mozilla/3.Mozilla/2.01&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Mozilla.*NEWT&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NAMEPROTECT&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Navroad&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NearSite&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NetAnts&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Netcraft&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NetMechanic&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NetSpider&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Net\ Vampire&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NetZIP&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NextGenSearchBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NG&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NICErsPRO&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NimbleCrawler&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Ninja&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^NPbot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Octopus&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Offline\ Explorer&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Offline\ Navigator&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Openfind&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^OutfoxBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^PageGrabber&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Papa\ Foto&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^pavuk&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^pcBrowser&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^PHP\ version\ tracker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Pockey&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^ProPowerBot/2.14&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^ProWebWalker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^psbot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Pump&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^QueryN.Metasearch&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^RealDownload&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Reaper&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Recorder&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^ReGet&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^RepoMonkey&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^RMA&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Siphon&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;sitecheck.internetseer.com&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^SiteSnagger&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^SlySearch&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^SmartDownload&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Snake&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Snapbot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Snoopy&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^sogou&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^SpaceBison&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^SpankBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^spanner&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Sqworm&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Stripper&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Sucker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^SuperBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^SuperHTTP&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Surfbot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^suzuran&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Szukacz/1.4&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^tAkeOut&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Teleport&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Telesoft&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^TurnitinBot/1.5&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^The.Intraformant&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^TheNomad&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^TightTwatBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Titan&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^toCrawl/UrlDispatcher&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^True_Robot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^turingos&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^TurnitinBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^URLy.Warning&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Vacuum&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^VCI&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^VoidEYE&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Web\ Image\ Collector&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Web\ Sucker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebAuto&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebBandit&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Webclipping.com&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebCopier&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebEMailExtrac.*&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebEnhancer&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebFetch&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebGo\ IS&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Web.Image.Collector&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebLeacher&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebmasterWorldForumBot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebReaper&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebSauger&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebSite&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Website\ eXtractor&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Website\ Quester&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Webster&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebStripper&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebWhacker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WebZIP&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Wget&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;Whacker&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Widow&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WISENutbot&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WWWOFFLE&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^WWW-Collector-E&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Xaldon&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Xenu&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Zeus&amp;quot; bad_bot&lt;br /&gt;
   SetEnvIfNoCase User-Agent &amp;quot;^Zyborg&amp;quot; bad_bot&lt;br /&gt;
   &amp;amp;lt;/Directory&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
.htacess  to match above&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;_fck_mw_lspace&amp;quot;&amp;gt;   Order Allow,Deny&lt;br /&gt;
   Allow from all&lt;br /&gt;
   Deny from env=bad_bot&lt;br /&gt;
   Allow from env=search_robot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I agree that it would be a lot less tedious, and would most likely stop these bitcoiners dead in their dumb tracks.&lt;br /&gt;
:Unfortunately, i can't change how accounts are created/verified, i would need higher privileges for that.&lt;br /&gt;
:You may want to make thise suggestion to [[User:Makopoppo]], who does have such permissions.&lt;br /&gt;
:I do fully support the idea though. Just let them verify their account through email, it will take care of at least 90% of all spam, if not more!&lt;br /&gt;
:--[[User:Fritigern|Fritigern]] 13:10, 28 March 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
::Unfortunately, since I have no account on the server hosting this wiki, so I can't do that. And, this page is ignored by wiki until it have title blacklist extension (http://www.mediawiki.org/wiki/Extension:TitleBlacklist). Remember that updating wiki and installing any extension needs *server* account, not wiki's. Anyway, I'll poke Justin about this issue. -- [[User:Makopoppo|Makopoppo]] 15:09, 28 March 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
:::Hi folks.  I'll look to install TitleBlacklist soon and update mediawiki in that priority order.  Thanks!  -- [[User:Justincc|Justincc]] 19:41, 29 March 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
::::Spam seems to have ceased. I don't know who did what, but it's peaceful time now. Thank you, someone! -- [[User:Makopoppo|Makopoppo]] 03:34, 30 March 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
:::::Just in case it comes back I've now installed the TitleBlacklist extension.  Please let me know if there are any issues.  I've also badgered coyled to upgrade :) -- [[User:Justincc|Justincc]] 18:08, 30 March 2012 (PDT)&lt;br /&gt;
&lt;br /&gt;
::::::I tested it on this account. It works fine now. Thank you! -- [[User:MakoBot|MakoBot]] 20:42, 30 March 2012 (PDT)&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/REST</id>
		<title>REST</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/REST"/>
				<updated>2012-03-04T07:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{warning|These interfaces are not currently functional in OpenSimulator}}&lt;br /&gt;
&lt;br /&gt;
The following is taken from Alan M Webb's ''OpenSim REST Support'' Draft document dated 8/18/08. The information here and specification are works in progress but provide the basis for useful OpenSimulator integrations including content input and retrieval without direct DB access. --[[User:MoHax|MoHax]] 00:10, 10 October 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
There are a number of REST interfaces implemented within OpenSimulator. This document describes the work done to support specific interactions required in support of external application integration. XML is used to encode the payloads associated with these requests. The specific XML used is documented as an appendix, this is an interim specification.&lt;br /&gt;
&lt;br /&gt;
== What is REST? ==&lt;br /&gt;
&lt;br /&gt;
The notion of Representational State Transfer (REST) was introduced by Roy Fielding in his doctoral dissertation in 2000. It is essentially an architectural concept rather than a protocol, and this has led to a variety of implementations, all of which might claim to be compliant REST implementations.&lt;br /&gt;
&lt;br /&gt;
A REST interface is built upon the HTTP protocol, making use of the four principle methods defined therein: GET, PUT, POST, and DELETE. A fifth method HEAD is also supported, but that is really just a semantic variation of GET. The TRACE and OPTIONS methods have a less fundamental role. No other protocol is involved.&lt;br /&gt;
&lt;br /&gt;
Note that REST does not specify the nature of the payload either sent or received. The interface associated with this document uses XML meta-data to manage an arbitrary payload. The need for a schema document to give form to this XML will be dealt with as a separate discussion.&lt;br /&gt;
&lt;br /&gt;
Of particular significance is the understood meaning of the methods themselves, which is (and must be) as defined by the HTTP specification:&lt;br /&gt;
&lt;br /&gt;
* '''GET''' retrieves the information identified by the associated URI and returns it to the requester. GET is idempotent. If the URI identifies a process, then it is the output of that process which is returned, and not the source text of that process. GET is conditional when the headers include any of the If headers. GET is partial if a range related header is included. The results of GET may be able to be cached.&lt;br /&gt;
&lt;br /&gt;
* '''HEAD''' is functionally equivalent to GET except that the payload is not included in the response. The result of a HEAD request may be able to be cached.&lt;br /&gt;
&lt;br /&gt;
* '''POST''' requests that the server accept the payload as a new entity, subordinate to the existing entity identified by the URI. POST places requirements upon session capabilities in the server insofar as it requires persistent connection and flow control capabilities.&lt;br /&gt;
&lt;br /&gt;
* '''PUT''' indicates that the payload should be stored on the server under the resource named by the URI. If the named resource already exists, then the payload is considered to be a modified version of that resource. If the named resource does not exist, then it should be created by the server.&lt;br /&gt;
&lt;br /&gt;
* '''DELETE''' requests that the server delete the resource identified by the URI.&lt;br /&gt;
&lt;br /&gt;
Other methods (TRACE, OPTIONS, CONNECT) may be supported, but are not fundamental to the principles of REST. Use of these methods also implies specific requirements in terms of how the response codes should be used.&lt;br /&gt;
&lt;br /&gt;
== REST Inventory Support ==&lt;br /&gt;
&lt;br /&gt;
The REST support in OpenSimulator is separated into a number of functional components, all of which live in the OpenSimulator/ApplicationPlugins/Rest hierarchy.&lt;br /&gt;
&lt;br /&gt;
# Plug-in management. E.g. RestPlugin.cs and Inventory/RestHandler.cs&lt;br /&gt;
# Service management: Inventory/RestHandler.cs&lt;br /&gt;
# REST implementation: RequestData.cs, Rest.cs&lt;br /&gt;
# Service implementations: Inventory/RestInventoryServices.cs, Inventory/RestAssetServices.cs, etc.&lt;br /&gt;
&lt;br /&gt;
This separation serves a number of purposes:&lt;br /&gt;
&lt;br /&gt;
* it limits the sensitivity of each component to implementation changes in the others&lt;br /&gt;
* it simplifies the task of service implementation by “hiding” infrastructure&lt;br /&gt;
* it helps make services consistent by sharing a single implementation of REST related tasks&lt;br /&gt;
&lt;br /&gt;
The design intention is that each subdirectory in the REST hierarchy, I.e. Inventory, corresponds to a distinct REST handler assembly consisting of service management and one or more service implementations. The Inventory directory is one example of such an assembly.&lt;br /&gt;
&lt;br /&gt;
=== Configuration Parameters ===&lt;br /&gt;
&lt;br /&gt;
In order for the REST handlers to be loaded and effective, statements must be added to the OpenSimulator.ini file. OpenSimulator reads the initialization file during start-up. This file is partitioned into various functional domains, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Startup]&lt;br /&gt;
gridmode = false&lt;br /&gt;
physics = basicphysics&lt;br /&gt;
&lt;br /&gt;
[RestPlugins]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[RestHandler]&lt;br /&gt;
enabled = false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;RestPlugins&amp;lt;/tt&amp;gt; partition affects REST handlers in general and supports the following entries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[RestPlugins]&lt;br /&gt;
enabled = true|false || false&lt;br /&gt;
god_key = &amp;lt;string&amp;gt; || “”&lt;br /&gt;
prefix  = &amp;lt;string&amp;gt;   || “/admin”&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only &amp;lt;tt&amp;gt;enabled=true&amp;lt;/tt&amp;gt; is necessary to enable REST processing. &lt;br /&gt;
&lt;br /&gt;
Additionally, REST inventory processing currently requires that the following partition be defined:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[RestHandler]&lt;br /&gt;
enabled = true|false || false&lt;br /&gt;
authenticate = true|false || true&lt;br /&gt;
extended-escape = true|false || true&lt;br /&gt;
realm = &amp;lt;string&amp;gt; || “OpenSim REST”&lt;br /&gt;
dump-asset = true|false || false&lt;br /&gt;
dump-line-size = int%8 || 32&lt;br /&gt;
path-fill = true|false || false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The partition name corresponds to the &amp;lt;tt&amp;gt;ConfigName&amp;lt;/tt&amp;gt; value specified in the plug-in subclass, I.e. RestHandler.cs.&lt;br /&gt;
&lt;br /&gt;
Again, only the enabled=true entry must be provided to enable the inventory handler; all other defaults are acceptable for normal operation. The meanings of these values will become apparent in the rest of the document.&lt;br /&gt;
&lt;br /&gt;
When the server starts, the REST handler will publish several messages indicating which configuration values are in effect.&lt;br /&gt;
&lt;br /&gt;
=== Effective URI ===&lt;br /&gt;
&lt;br /&gt;
From a REST perspective, the path component of the URI is viewed as a resource identification, the precise significance of which depends upon the HTTP method being used. There are subtleties here, in some cases a prefix of the path may be viewed as a functional qualification of the authority, with the remainder of the URI being a resource identification within the domain of that authority. In this document, the notion of a service corresponds to the functional qualification mechanism just described.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;prefix&amp;lt;/tt&amp;gt; value in the configuration file is used to construct the server's base prefix for REST services, as illustrated in the description of the inventory services prefix shown below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/admin/inventory&lt;br /&gt;
                     ^^^^^&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this URI &amp;lt;tt&amp;gt;/admin&amp;lt;/tt&amp;gt; is the base prefix, and &amp;lt;tt&amp;gt;/inventory&amp;lt;/tt&amp;gt; is a prefix extension that identifies the inventory service handler.&lt;br /&gt;
&lt;br /&gt;
All requests that have an &amp;lt;tt&amp;gt;/admin/inventory&amp;lt;/tt&amp;gt; prefix will be passed to the inventory handler. The prefix must be followed by the name of the avatar that owns the inventory in question. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:9000/admin/inventory/Alan Webb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming the GET method, then this will return Alan Webb's inventory catalog, as XML data in the response payload, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Inventory&amp;gt;&lt;br /&gt;
&amp;lt;Folder name = “My Inventory” uuid=”11111111-...-111111111111” ....&lt;br /&gt;
        &amp;lt;Folder name=”Objects” uuid=....&lt;br /&gt;
        ....&lt;br /&gt;
        &amp;lt;/Folder&amp;gt;&lt;br /&gt;
    &amp;lt;/Folder&amp;gt;&lt;br /&gt;
&amp;lt;/Inventory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;tt&amp;gt;/admin/inventory&amp;lt;/tt&amp;gt; identiifes the service, and &amp;lt;tt&amp;gt;/Alan Webb&amp;lt;/tt&amp;gt; is the resource specification component of the path.&lt;br /&gt;
&lt;br /&gt;
== Implementation Overview ==&lt;br /&gt;
&lt;br /&gt;
The REST implementation being described is manifest in a subset of the files contained in the &amp;lt;tt&amp;gt;ApplicationPlugins/Rest&amp;lt;/tt&amp;gt; file hierarchy. It is logically partitioned into three domains:&lt;br /&gt;
&lt;br /&gt;
* Plugin and configuration management&lt;br /&gt;
* REST implementation services&lt;br /&gt;
* REST service providers&lt;br /&gt;
&lt;br /&gt;
The objective here being to separate functionality so that the task of the service provider is made as straightforward as possible while ensuring that all services implemented using the interface are consistent in both approach and behavior.&lt;br /&gt;
&lt;br /&gt;
[[Image:RESTOverallDataFlowModel.jpg|center|thumb|400px|Illustration 1: Overall Data Flow Model]]&lt;br /&gt;
&lt;br /&gt;
As shown in Illustration 1: Overall Data Flow Model all requests originate, and are eventually returned to, the OpenSimulator HTTP server. The handler is isolated from this implementation by the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; interface and the OSHTTP data-types. After matching, the request is passed to the appropriate handler; this relationship is defined by the &amp;lt;tt&amp;gt;IRest&amp;lt;/tt&amp;gt; interface and the &amp;lt;tt&amp;gt;RequestData&amp;lt;/tt&amp;gt; data-type.&lt;br /&gt;
&lt;br /&gt;
=== Changes to BaseHttpServer ===&lt;br /&gt;
&lt;br /&gt;
The existing OpenSimulator HTTP server class was modified to support plug-in modules that conform to the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; interface. Three new subroutines were added: &amp;lt;tt&amp;gt;AddHttpAgentHandler&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;RemoveHttpAgentHandler&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;TryHttpAgentHandler&amp;lt;/tt&amp;gt;; this is consistent with the way in which existing handlers are managed.&lt;br /&gt;
&lt;br /&gt;
Additionally, the &amp;lt;tt&amp;gt;HandleRequest&amp;lt;/tt&amp;gt; method was extended to include support for the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; interface.&lt;br /&gt;
&lt;br /&gt;
The processing of existing handlers is not affected by the new support.&lt;br /&gt;
&lt;br /&gt;
=== Plugin and Configuration Management ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; describes the interface between OpenSimulator's base HTTP server and the REST implementation, a plug-in must implement this interface. Any class that exports this interface, and that registers its handlers using the appropriate (not defined by an interface) methods in the base HTTP server can act as a handler. Note that while the usage described here is intended to support REST, the interface itself is agnostic and may be used as the basis for any HTTP request handler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;'''RestPlugin.cs'''&amp;lt;/tt&amp;gt; provides a basic agent-handling superclass. An implementation of this class represents a handler from the point of view of the base HTTP server. This class implements the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; interface. A given implementation class need only be differentiated from the others in terms of the agent name it uses when it registers. At present, a duplicate agent (based upon supplied agent name) will not be registered; how such a failure is handled depends upon the implementation class. Aside from the name used, a given handler should be differentiated in terms of the set of request patterns that it will match; overlap is undesirable as the first match will win, and at present the order in which OpenSimulator loads modules is non-deterministic. The &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; class in the Inventory sub-directory is an example of an implementation class for ''RestPlugin.cs''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;'''Inventory/RestHandler.cs'''&amp;lt;/tt&amp;gt; implements the plug-in interface described above, and also implements a local model of integrating a set of services within a single handler instance. It does this by scanning the classes included in the assembly for those that implement the &amp;lt;tt&amp;gt;IRest&amp;lt;/tt&amp;gt; interface; each such class is then initialized. This provides implementation independence from a development standpoint (adding a new service is as simple as adding a single class) whilst avoiding unnecessary overt modularization in OpenSimulator. This class also takes care of global configuration and initialization of the basic REST environment, i.e. It sets basic references for the OpenSimulator communications manager, user services, inventory services, and asset management.&lt;br /&gt;
&lt;br /&gt;
For performance reasons, and as an obligation to the &amp;lt;tt&amp;gt;IHttpAgentHandler&amp;lt;/tt&amp;gt; definition, this class also implements the Match function, using pattern information registered by the individual services when they were initialized1.&lt;br /&gt;
&lt;br /&gt;
This class contains no REST specific, or service specific functionality beyond some basic initialization. This class can be used in multiple assemblies without change.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;'''Rest.cs'''&amp;lt;/tt&amp;gt; provides both state and functionality in support of the REST implementation. Most of the state is static and constant, a small set of static values are initialized by the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; when the plug-in is loaded. This class will only change as the REST implementation evolves and becomes more complete. I''t must not contain any service sensitive elements.'' This class may be sub-classed by a given assembly to provide global additions required by a specific set of services.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;'''RequestData.cs'''&amp;lt;/tt&amp;gt; serves as a carrier for the state associated with a request. It may be sub-classed by a given service provider in order to add service specific state and functionality, for example the inventory services currently utilize an XML extension to handle inventory specific payload interpretation and generation.&lt;br /&gt;
&lt;br /&gt;
The remaining classes in the Inventory directory provide different classes of service.&lt;br /&gt;
&lt;br /&gt;
=== Adding A New REST Service To An Existing Handler ===&lt;br /&gt;
&lt;br /&gt;
The process for adding a new service is straightforward. The file &amp;lt;tt&amp;gt;RestTestServices.cs&amp;lt;/tt&amp;gt; serves as an example1 of what a new services class must minimally include. Key points to note are:&lt;br /&gt;
&lt;br /&gt;
# Each service class should have an associated value for &amp;lt;tt&amp;gt;qPrefix&amp;lt;/tt&amp;gt;. This should be unique for each service, as it represents the relative extension of the URI that will be matched by this service. The value supplied here may be absolute, but this is discouraged. The constructor will automatically update a relative value to reflect the absolute prefix set globally during initialization.&lt;br /&gt;
# In the case of test services the constructor loads a set of classes from a sub-directory, each of which represents a specific service implementation. For example, these may be method-related, or based upon other values contained in the supplied URI.&lt;br /&gt;
# The services constructor must register itself with the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt;. It provides three values at registration time: a reference to the service method, the URI prefix that this service will match, and a reference to an &amp;lt;tt&amp;gt;RequestData&amp;lt;/tt&amp;gt; allocation method that will return an appropriately sub-classed instance of the &amp;lt;tt&amp;gt;RequestData&amp;lt;/tt&amp;gt; class.&lt;br /&gt;
# Implementation of the service and allocation methods described above must be provided.&lt;br /&gt;
&lt;br /&gt;
Other methods definitions are simply part of the overall infrastructure and would be unique to a given service implementation.&lt;br /&gt;
&lt;br /&gt;
''Note that a given services class may implement zero or more services, according to its intended function. A class providing shared functionality to other services may be loaded but not register any actual handling methods. Similarly, a single services class could register multiple handling methods.''&lt;br /&gt;
&lt;br /&gt;
== REST Implementation Classes ==&lt;br /&gt;
&lt;br /&gt;
This section provides additional documentation of the state and services provided by &amp;lt;tt&amp;gt;Rest.cs&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;RequestData.cs&amp;lt;/tt&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
=== Rest.cs ===&lt;br /&gt;
&lt;br /&gt;
The eponymous class provides a collection of ''request independent'' services and state definitions. Any functions directly dependent upon the HTTP request and response elements are provided in &amp;lt;tt&amp;gt;RequestData.cs&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== State ====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Log&amp;lt;/tt&amp;gt; declaration provides local access to the &amp;lt;tt&amp;gt;log4net&amp;lt;/tt&amp;gt; facility. Though apparently complex it simply resolves to a static, read-only reference that can be used to pass messages to the logging facility.&lt;br /&gt;
&lt;br /&gt;
The value of &amp;lt;tt&amp;gt;DEBUG&amp;lt;/tt&amp;gt; reflects whether or not debug messages have been enabled in the OpenSimulator log. If they have, then &amp;lt;tt&amp;gt;DEBUG&amp;lt;/tt&amp;gt; will be enabled, if not, then they will not. Being a static declaration it is anticipated that the JIT compiler will be able to make efficient code generation assumptions. This is only of real significance where some substantial operation is performed solely in support of debugging.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Plugin&amp;lt;/tt&amp;gt; reference is set by &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; during initialization. It eliminates the need for a services class to have direct awareness of how it was activated. For example, this reference is used to locate the &amp;lt;tt&amp;gt;AddPathHandler&amp;lt;/tt&amp;gt; method needed to register its interface.&lt;br /&gt;
&lt;br /&gt;
The main reference is set by the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; during initialization. Its value is a reference to the simulator's base class. It is provided to the plug-in interface and is stored for that reason. It is not currently used except by &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; to locate the communications manager during initialization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Comms&amp;lt;/tt&amp;gt; provides a globally accessible reference to the simulator's communications manager. It is initialized by &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; during initialization and is currently only used by &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; to locate other, commonly needed, simulator services.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;InventoryServices&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;UserServices&amp;lt;/tt&amp;gt;, and &amp;lt;tt&amp;gt;AssetServices&amp;lt;/tt&amp;gt; are references to the corresponding simulator service interfaces. This list may grow as common service requirements expand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Prefix&amp;lt;/tt&amp;gt; is the common URI prefix associated with all handlers within a given assembly. In the case of inventory services it is obtained from the global REST configuration. It is currently /admin. This is a configurable attribute. Typical this should be set to whatever is considered to be the standard prefix for REST services in a given URI, it will be combined with scheme and authority information to construct a valid URL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Config&amp;lt;/tt&amp;gt; is a saved reference to the configuration file used by this assembly. The configuration partition is identified by the &amp;lt;tt&amp;gt;ConfigName&amp;lt;/tt&amp;gt; string supplied by the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; implementation. This is currently only used by the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt;, but it could be used by a service implementation to access attributes unique to the service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;GodKey&amp;lt;/tt&amp;gt; is a string obtained from the configuration file which contains the password for the God user. This user has unfettered access to all administrative functions. This is a temporary mechanism and will eventually be replaced by something more secure. This is a configurable attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Authenticate&amp;lt;/tt&amp;gt; indicates whether or not user authentication is required by this handler. This is a configurable attribute, true by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Secure&amp;lt;/tt&amp;gt; indicates whether or not the HTTP session should be secured. Secure sessions are currently not available to OpenSimulator. This is a configurable attribute, true by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;ExtendedEscape&amp;lt;/tt&amp;gt; controls whether or not the URI is processed for parsing extensions such as “+” in place of spaces. This is a configurable attribute, true by default.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;DumpAsset&amp;lt;/tt&amp;gt; controls whether or not the content of an incoming asset should be dumped to the trace file after decoding has completed. This is only intended to be used when there is some indication of a problem with the decoding process. It may produce a significant amount of trace output depending upon the quantity of asset data being uploaded. This is configurable and is normally false.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Fill&amp;lt;/tt&amp;gt; controls whether or not the server will automatically generate intermediate folder names when handling a POST request; it is not currently considered appropriate for PUT. This is not presently implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;FlushEnabled&amp;lt;/tt&amp;gt; indicates that the server will completely flush an inbound data stream before responding. This accommodates clients that can not handle the case where a socket error is generated as a result of an early termination of the inbound data stream (due to an authentication failure for example). This mechanism is vulnerable to DOS attacks and can be selectively enabled/disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Realm&amp;lt;/tt&amp;gt; is a string that may be used to distinguish the authentication realm associated with the handler, in place of the URI prefix. This corresponds directly to the realm token included in the WWW-Authenticate response header. This is a configurable option, and is set to 'OpenSim REST' by default. Clients may use this value to determine if additional authentication is necessary, or to select appropriate cached credentials.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;DumpLineSize&amp;lt;/tt&amp;gt; indicates the line length to use for any data dumps (e.g. &amp;lt;tt&amp;gt;DumpAsset&amp;lt;/tt&amp;gt;) during runtime. The default is 132. This is a configurable option.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;statusHead&amp;lt;/tt&amp;gt; contains the standard HTML header used for reporting request status. Similarly, &amp;lt;tt&amp;gt;statusTail&amp;lt;/tt&amp;gt; is used to provide a standard suffix. These are both used by the standard status reporting mechanisms.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;HttpStatusDesc&amp;lt;/tt&amp;gt; is an array which, when indexed by an appropriate HTTP status code, will return a corresponding status description.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;CreationDate&amp;lt;/tt&amp;gt; (property) provides a single consistent reference for creation data value needed when introducing new items into the inventory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;MsgId&amp;lt;/tt&amp;gt; (property) provides a consistent message prefix for log messages generated by the handler. Although static, the value is thread specific, so it is actually unique per request.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;RequestId&amp;lt;/tt&amp;gt; (property) provides a unique, monotonically incrementing request counter for processed requests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Encoding&amp;lt;/tt&amp;gt; provides a standard encoding reference (UTF8) for all data handled by the handler.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Version&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Name&amp;lt;/tt&amp;gt; are intended to uniquely identify the REST implementation represented by this particular class. Version information should be updated if any significant changes to the REST interface are implemented. This is not currently exploited, but should be. We should have an extended header that indicates the REST version that the client is expecting, and the Match process should be sensitive to this. In this way we can provide concurrent support for multiple REST versions.&lt;br /&gt;
&lt;br /&gt;
The extensive list of constant values are all held to be self-explanatory and should be used wheresoever the value they represent is required in a service implementation. This ensures consistency between the REST implementation and the REST service implementations.&lt;br /&gt;
&lt;br /&gt;
==== Functions ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;StringToBase64&amp;lt;/tt&amp;gt; provides a standard Base64 encoding mechanism for service implementations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Base64ToString&amp;lt;/tt&amp;gt; provides a standard Base64 decoding mechanism for service implementations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Hex2Int&amp;lt;/tt&amp;gt; provides a standard mechanism for converting a hexadecimal string of arbitrary length into an integer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Int2hex8&amp;lt;/tt&amp;gt; converts an integer into an 8 character hexadecimal number. This is not currently used, and as such should not be trusted.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;NonceGenerator&amp;lt;/tt&amp;gt; is a simple nonce producer that ensures uniqueness by simply converting a newly generated UUID into a Base64 string. This function is called each time the user is called upon to authenticate, which is not necessarily that often, provided the client caches credentials based upon realm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Dump&amp;lt;/tt&amp;gt; provides a general purpose facility for generating an interpreted hexadecimal data dump to the log file. It is currently used by the DumpAsset debug facility. But it may be used by anybody requiring such data dumping services.&lt;br /&gt;
&lt;br /&gt;
=== RequestException ===&lt;br /&gt;
&lt;br /&gt;
This class provides an extended exception that can be distinguished from regular, system generated, exceptions. A &amp;lt;tt&amp;gt;RequestException&amp;lt;/tt&amp;gt; does not indicate a programming failure, rather it indicates that the received request could not be validly processed, for example, the URI was invalid. This exception should only be used in those cases where request processing is to be immediately terminated in conjunction with normal response processing. Principally it allows the handler to differentiate between a failure in processing, which should be logged, and a normal response to an invalid request, which should not.&lt;br /&gt;
&lt;br /&gt;
=== RequestData.cs ===&lt;br /&gt;
&lt;br /&gt;
This file, and its eponymous class provides consistent support for request specific REST processing. When the &amp;lt;tt&amp;gt;RestHandler&amp;lt;/tt&amp;gt; has successfully matched a handler to a request, the registered allocate method for that service interface is called to allocate an instance of this class either directly, or as a super class of some service specific extension. This description deals only with the base implementation.&lt;br /&gt;
&lt;br /&gt;
With a single instance of a service class per handler, it is necessary to encapsulate request/response specific data in this way. Those functions that operate over that data are included here for convenience and represent part of the previously mentioned REST implementation encapsulation.&lt;br /&gt;
&lt;br /&gt;
==== Members ====&lt;br /&gt;
&lt;br /&gt;
When an instance of this class is created, the constructor always does the following:&lt;br /&gt;
&lt;br /&gt;
# The parameters are not validated. Their validity is considered to be a precondition and as such the natural exception mechanism is an efficient and effective way to deal with invalid argument values.&lt;br /&gt;
# The supplied request and response object references are cached, as is the supplied request prefix.&lt;br /&gt;
# The effective encoding is obtained from the supplied request if possible, or the Rest default (UTF8) is applied.&lt;br /&gt;
# A lower case copy of the request method is stored.&lt;br /&gt;
# &amp;lt;tt&amp;gt;InitUrl&amp;lt;/tt&amp;gt; is called to decompose the supplied URI into its basic components: query, path, host name, and port.&lt;br /&gt;
# &amp;lt;tt&amp;gt;InitParameters&amp;lt;/tt&amp;gt; is called to create an array of strings, each of which represents a separated portion of whatever URI remains after the handler's selection prefix is removed. This list may be empty.&lt;br /&gt;
&lt;br /&gt;
In the interests of laziness, constructor processing is kept to a minimum.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;IsAuthenticated&amp;lt;/tt&amp;gt; property checks to see if the user is currently authenticated, and if not, then invokes that authentication mechanism. This allows a service request handler so simply test this boolean and reject the request if the result is false. This is an example of a failure that should not normally be logged, as the client is expected to respond to the challenge with an appropriate set of credentials.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;PathNodes&amp;lt;/tt&amp;gt; property is an array that contains a normalized list of elements in the absolute path provided in the URI. It does not differentiate the elements.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Parameters&amp;lt;/tt&amp;gt; property is an array that contains only those URI path elements that are not a part of the service selection prefix (i.e. &amp;lt;tt&amp;gt;/admin/inventory&amp;lt;/tt&amp;gt;). This simplifies service processing by providing a prefix-independent base for request parameter indeces.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Complete&amp;lt;/tt&amp;gt; allows a service provider to indicate the manner in which a request has completed. Called with no arguments, this corresponds to a status code of 200 indicating a normal completion. In many cases the service provider must necessarily indicate a more specific code. The message associated with this call may be arbitrarily complex, it is used, as-is, as the message body in the response.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Redirect&amp;lt;/tt&amp;gt; allows a service provider to indicate that the requester should be redirected to an alternative URL. Redirection may be permanent or temporary as indicated by the boolean argument.&lt;br /&gt;
&lt;br /&gt;
Variations on &amp;lt;tt&amp;gt;Fail&amp;lt;/tt&amp;gt; allow a service to abandon request processing. This call constructs an appropriate HTTP failure response, including any specified message body, generates the response, adds request information to an instance of &amp;lt;tt&amp;gt;RestException&amp;lt;/tt&amp;gt; and finally throws the exception. It is important that a service provider allow &amp;lt;tt&amp;gt;RestException&amp;lt;/tt&amp;gt; events to pass through transparently, (i.e. re-throw any that are inadvertently trapped).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Reject&amp;lt;/tt&amp;gt; encapsulates whatever processing is appropriate for requests that attempted processing that is not implemented.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;Respond&amp;lt;/tt&amp;gt; allows a service provider to generate a response and complete processing with respect to the current HTTP request and response. This call is mandatory for any request that is considered to have been processed successfully.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;AddHeader&amp;lt;/tt&amp;gt; allows a service provider to add a header to the set of response headers that will be included when the response is finally generated. The Rest constants should be used when specifying the header name. The header value is treated as an arbitrary string.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;RemoveHeader&amp;lt;/tt&amp;gt; allows a service provider to remove a header that was previously added to the response header set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;DumpHeaders&amp;lt;/tt&amp;gt; causes a list of the currently effective headers to be sent to the log. This is a DEBUG option.&lt;br /&gt;
&lt;br /&gt;
== RestInventoryServices ==&lt;br /&gt;
This file, and the classes it contains, provide a monolithic implementation of all of the services provided in support of inventory processing. If required, authentication is established before any processing of inventory data. The following abnormal completion codes may be returned:&lt;br /&gt;
&lt;br /&gt;
* 301 indicating that a permanently applicable alternative URI for a specified resource has been provided.&lt;br /&gt;
* 400 indicating a bad request. Information about the nature of the request error is included in the status information returned to the client. Currently this is textual, but when a proper schema document for the interface is established, a more quantitative status will be returned.&lt;br /&gt;
* 401 indicating that the client must authenticate.&lt;br /&gt;
* 409 indicating that an ambiguous or conflicting request was received.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Resource Identification ===&lt;br /&gt;
&lt;br /&gt;
An avatar's inventory is a catalog of the assets 'owned' by the avatar; the inventory contains only of meta-data and depends upon the asset data base for whatever actual data represents the perceived content. References to inventory in this document normally refer to the meta-data rather than the content. An inventory consists of two types of element: ''folders'' and ''items''. In both cases, a given element is uniquely identified by an assigned UUID. An associated name is also provided for human convenience, but such names are not required to be unique and are insufficient to ensure an exact identification. The URI used in inventory related requests allows either UUID or name to specified for each element in a resource identification path, ''if any ambiguity arises then the request will be failed''.&lt;br /&gt;
&lt;br /&gt;
The avatar's inventory can contain a private catalog, and one or more shared, or public, catalogs. Currently only the private catalog is processed. When support for the shared catalogs is introduced it will do so by adding by prefixing any path as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/admin/inventory/shared/[&amp;lt;libname&amp;gt;]/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows all global inventory, or a specific library to be referenced.&lt;br /&gt;
For all requests, specifying an avatar name implies the private inventory.&lt;br /&gt;
In all cases, if additional path information is provided, then the root directory name may be inferred (but accepted if specified explicitly). So&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/admin/inventory/Alan Webb/My Inventory/Clothing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/admin/inventory/Alan Webb/Clothing&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
are semantically equivalent. This is a convenient and harmless special case. Note that the folder names are case-sensitive. Where no additional path information is provided, as in&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/admin/inventory/Alan Webb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then the root directory may still be inferred for GET and POST, but can not be allowed for PUT. PUT requires the URI to identify the element that is being updated, so inference in this case could be extremely damaging. Explicit specification of the root inventory name is therefore required for all PUT requests. Given that this is an interface normally used only by programmed clients, the additional verbosity is not expected to be an issue. If this proves to be contentious, then the only viable approach would be to drop the inference altogether.&lt;br /&gt;
&lt;br /&gt;
=== Supported Services ===&lt;br /&gt;
&lt;br /&gt;
==== GET ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;GET&amp;lt;/tt&amp;gt; allows the client to retrieve all, or some sub-tree of, the inventory associated with a specified avatar's inventory. Inventory information is returned in an XML payload. This request is guaranteed not to affect the state of the avatar's inventory. Possible normal completions are:&lt;br /&gt;
&lt;br /&gt;
* 200 indicating normal completion of the request. The payload will contain an XML representation of the avatar's inventory.&lt;br /&gt;
&lt;br /&gt;
==== PUT ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;PUT&amp;lt;/tt&amp;gt; allows a resource, explicitly nominated in the URI, to be created or replaced. I.e. the URI identifies an instance rather than a context. Possible normal completions are&lt;br /&gt;
&lt;br /&gt;
* 200 if the nominated resource was successfully updated&lt;br /&gt;
* 201 if the nominated resource was successfully created.&lt;br /&gt;
* 204 if no content change (but the resource was recognized and valid)&lt;br /&gt;
&lt;br /&gt;
==== POST ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;POST&amp;lt;/tt&amp;gt; allows a new resource to be created in the context identified by the URI. It follows from this that the resource identified by a POST request should always be a folder. Normal completions are:&lt;br /&gt;
&lt;br /&gt;
* 200 if some portion of the context was modified.&lt;br /&gt;
* 201 if the new data was entirely new.&lt;br /&gt;
&lt;br /&gt;
==== DELETE ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;DELETE&amp;lt;/tt&amp;gt; allows a named resource to be deleted. If the resource is a folder, then the entire sub-tree will be removed. Normal completion codes are:&lt;br /&gt;
&lt;br /&gt;
* 200 if the specified resource was deleted.&lt;br /&gt;
&lt;br /&gt;
Both PUT and POST allow any assets upon which the inventory catalog depends, to be included in-line with the XML catalog data.&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/OSSL_Script_Library/OpenSim_Radio</id>
		<title>OSSL Script Library/OpenSim Radio</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/OSSL_Script_Library/OpenSim_Radio"/>
				<updated>2012-03-04T07:48:43Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A basic parcel radio, using OSSL functions to read a notecard, cointaining a list of stations.&lt;br /&gt;
&lt;br /&gt;
* Open access, so anyone can change stations. &lt;br /&gt;
* Very basic, and much could be added or improved.&lt;br /&gt;
* Demonstrates the use of OSSL functions to read a notecard.&lt;br /&gt;
&lt;br /&gt;
'''Updates'''&lt;br /&gt;
* 0.12 - Selected station choice is now saved in the object description, and will be re-applied to the land/parcel upon script stert.&lt;br /&gt;
* 0.11 - Improved menu system&lt;br /&gt;
* 0.10 - Initial version&lt;br /&gt;
&lt;br /&gt;
=== Notecard ===&lt;br /&gt;
Name the notecard &amp;quot;stations&amp;quot; and place it in your prim.&lt;br /&gt;
Here are some example stations, copy and pase these exatly into your notecard:&lt;br /&gt;
&lt;br /&gt;
 Public Domain Jazz=http://82.197.167.138:80&lt;br /&gt;
 Digital Gunfire=http://radio1-uk.digitalgunfire.com:8000&lt;br /&gt;
 Salsa and Latin=http://205.188.215.231:8010&lt;br /&gt;
 Retro=http://scfire-ntc-aa03.stream.aol.com:80/stream/1013&lt;br /&gt;
&lt;br /&gt;
More stations can be found at http://www.shoutcast.com&lt;br /&gt;
&lt;br /&gt;
=== OpenSimulator Radio ===&lt;br /&gt;
&amp;lt;source lang = &amp;quot;lsl&amp;quot;&amp;gt;&lt;br /&gt;
// ######################################&lt;br /&gt;
// Radio for OpenSim, by Fritigern Gothly&lt;br /&gt;
// Version 0.12 - Oct 08, 2011&lt;br /&gt;
//&lt;br /&gt;
// Add your name and date to these&lt;br /&gt;
// comments if you alter this script in&lt;br /&gt;
// any way.&lt;br /&gt;
// If you put this in your own build, &lt;br /&gt;
// make sure to mention BOTH me and you!&lt;br /&gt;
// ######################################&lt;br /&gt;
&lt;br /&gt;
integer dchannel; // Will be a random number.&lt;br /&gt;
key toucher;&lt;br /&gt;
string stationcard = &amp;quot;stations&amp;quot;; // Name for the notecard. Change this is you want to use a different name.&lt;br /&gt;
integer cardlines;&lt;br /&gt;
integer n;&lt;br /&gt;
integer i;&lt;br /&gt;
list names;&lt;br /&gt;
list uris;&lt;br /&gt;
list page;&lt;br /&gt;
integer pagenum;&lt;br /&gt;
&lt;br /&gt;
// ----------------------&lt;br /&gt;
// Needed user functions.&lt;br /&gt;
// ----------------------&lt;br /&gt;
&lt;br /&gt;
initialize()&lt;br /&gt;
{&lt;br /&gt;
    //Clear the values to prevent problems&lt;br /&gt;
    names =[];&lt;br /&gt;
    uris=[];&lt;br /&gt;
    page = [];&lt;br /&gt;
    pagenum=0;&lt;br /&gt;
    cardlines=0;&lt;br /&gt;
    // Now get all stations (again)&lt;br /&gt;
    cardlines = osGetNumberOfNotecardLines(stationcard);&lt;br /&gt;
    for(n=0;n&amp;lt;cardlines;++n)&lt;br /&gt;
    {&lt;br /&gt;
            // Use llStringTrim to get rid of additional spaces around the&lt;br /&gt;
            // string. Makes this script a little more forgiving.&lt;br /&gt;
        string line = llStringTrim(osGetNotecardLine(stationcard,n), STRING_TRIM);&lt;br /&gt;
        if(llGetSubString(line,0,0)==&amp;quot;#&amp;quot; || line == &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            // Skip comments and empty lines&lt;br /&gt;
        } else {&lt;br /&gt;
            integer seperator = llSubStringIndex(line, &amp;quot;=&amp;quot;);&lt;br /&gt;
            uris += [llStringTrim(llGetSubString(line,seperator+1,llStringLength(line)), STRING_TRIM)];&lt;br /&gt;
            &lt;br /&gt;
                // Make sure that the button names fit on the buttons. Names &lt;br /&gt;
                // can be up to 24 characters (but only a few will show),&lt;br /&gt;
                // Doing this will let you put really long station names in&lt;br /&gt;
                // the notecard without problems.&lt;br /&gt;
            string desc = llStringTrim(llGetSubString(line,0,seperator-1), STRING_TRIM);&lt;br /&gt;
            if(llStringLength(desc) &amp;gt;= 23) desc = llGetSubString(desc,0,23);&lt;br /&gt;
            names += [desc];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
        // Get all entries from the list of station names and put them in a string&lt;br /&gt;
        // in groups of nine, and put them in a new list..&lt;br /&gt;
    string btn;&lt;br /&gt;
    for(n=0;n&amp;lt;llGetListLength(names);n=n+9)&lt;br /&gt;
    {&lt;br /&gt;
        for(i=n;i&amp;lt;(n+9);++i) // Get 9 buttons....&lt;br /&gt;
        {&lt;br /&gt;
            if(n&amp;gt;llGetListLength(names)) return;&lt;br /&gt;
            btn += llList2String(names,i)+&amp;quot;,&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        page += [btn]; // ...And put them in a list again! (As a string, not as list items!)&lt;br /&gt;
        btn=&amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    llOwnerSay(&amp;quot;Notecard loaded. &amp;quot;+(string)llGetListLength(names)+&amp;quot; stations in &amp;quot;+llGetListLength(page)+&amp;quot; pages.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
dialog(string buttons)&lt;br /&gt;
{&lt;br /&gt;
    list b = [&amp;quot;&amp;lt; Prev&amp;quot;,&amp;quot;Cancel&amp;quot;,&amp;quot;Next &amp;gt;&amp;quot;]+llParseString2List(buttons,&amp;quot;,&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
    string txt = &amp;quot;\nShowing stations &amp;quot;+(string)((pagenum*9)+1)+&amp;quot; to &amp;quot;+(string)((pagenum*9)+llGetListLength(llParseString2List(buttons,&amp;quot;,&amp;quot;,&amp;quot;&amp;quot;)))+&lt;br /&gt;
                 &amp;quot; of &amp;quot;+(string)llGetListLength(names)+&amp;quot; loaded.\n&amp;quot;+&lt;br /&gt;
                 &amp;quot;\nPage &amp;quot;+(string)(pagenum+1)+&amp;quot; of &amp;quot;+(string)llGetListLength(page);&lt;br /&gt;
    llDialog(toucher, txt+&amp;quot;\nChoose a station:&amp;quot;, b, dchannel);&lt;br /&gt;
    b=[]; // Clear the list, and save some memory.&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        dchannel = llFloor(llFrand(9999999)); // Choose a random channel.&lt;br /&gt;
        initialize();&lt;br /&gt;
        if(llGetObjectDesc() != (integer)llGetObjectDesc()||llGetObjectDesc() == &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            llSetText(&amp;quot;OpenSimulator Radio\nClick to choose a station&amp;quot;, &amp;lt;1,1,1&amp;gt;,1);&lt;br /&gt;
        } else {&lt;br /&gt;
            integer index = (integer)llGetObjectDesc();&lt;br /&gt;
            llSetText(llList2String(names,index)+&amp;quot;\n&amp;quot;+llList2String(uris,index),&amp;lt;1,1,0&amp;gt;,1);&lt;br /&gt;
            llSetParcelMusicURL(llList2String(uris,index)); // Sometimes the parcel's audio settings don't survive a restart or server upgrade. So we'll set it again, just to make sure.&lt;br /&gt;
        }&lt;br /&gt;
        // llOwnerSay(&amp;quot;Ready&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer numdet)&lt;br /&gt;
    {&lt;br /&gt;
        toucher = llDetectedKey(0);&lt;br /&gt;
        llListen(dchannel, &amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
        dialog(llList2String(page,pagenum));&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name, key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if(msg == &amp;quot;&amp;lt; Prev&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            --pagenum;&lt;br /&gt;
            if(pagenum&amp;lt;0) pagenum = llGetListLength(page)-1;&lt;br /&gt;
            dialog(llList2String(page,pagenum));&lt;br /&gt;
        } &lt;br /&gt;
        else if(msg == &amp;quot;Next &amp;gt;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            ++pagenum;&lt;br /&gt;
            if(pagenum&amp;gt;=llGetListLength(page)) pagenum = 0;&lt;br /&gt;
            dialog(llList2String(page,pagenum));&lt;br /&gt;
        } &lt;br /&gt;
        else if(msg == &amp;quot;Cancel&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            pagenum = 0;&lt;br /&gt;
            return;&lt;br /&gt;
        } &lt;br /&gt;
        else {&lt;br /&gt;
                // If none of the predefined buttons were clicked, it must be a station name.&lt;br /&gt;
            integer index = llListFindList(names,msg);&lt;br /&gt;
            llSetParcelMusicURL(llList2String(uris,index));&lt;br /&gt;
            llSay(0,&amp;quot;Station changed to &amp;quot;+llList2String(names,index)+&amp;quot; (&amp;quot;+llList2String(uris,index)+&amp;quot;)&amp;quot;);&lt;br /&gt;
            llSetText(llList2String(names,index)+&amp;quot;\n&amp;quot;+llList2String(uris,index),&amp;lt;1,1,0&amp;gt;,1);&lt;br /&gt;
            llSetObjectDesc((string)index);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    changed(integer ischanged)&lt;br /&gt;
    {&lt;br /&gt;
            //If something changed in the inventory, go and read the list with stations again!&lt;br /&gt;
        if(ischanged &amp;amp; CHANGED_INVENTORY) initialize();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/0.6.6-release</id>
		<title>0.6.6-release</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/0.6.6-release"/>
				<updated>2012-03-04T07:43:47Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Version 0.6.6-release is SVN r9962 ===&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9961 | sdague | 2009-06-30 22:50:12 +0900 (Tue, 30 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
From: Chris Yeoh &amp;lt;yeohc@au1.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ooops, sorry there was a bug in the patch and causes an exception&lt;br /&gt;
on some system (I think it only happens on windows since it didn't&lt;br /&gt;
occur during my testin). I've attached a one liner which fixes the problem.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9960 | ckrinke | 2009-06-30 06:47:47 +0900 (Tue, 30 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, Snowdrop, for a patch that solves:&lt;br /&gt;
The current API for MRM is quite sparse, this patch &lt;br /&gt;
supplies basic support for accessing the task &lt;br /&gt;
inventory of object.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9959 | arthursv | 2009-06-30 04:24:43 +0900 (Tue, 30 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Thanks StrawberryFride, for a patch that fixes MSSQL migration:&lt;br /&gt;
Minor tweak to a region migration SQL script for the OAR DateTime field - SQL Server syntax slightly different from MySQL (and there is no unsigned in MSSQL, sadly)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9958 | arthursv | 2009-06-30 04:24:30 +0900 (Tue, 30 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* C# compiler is not smart enough to understand ClientLoop is under very heavy usage and inline DebugPacket, so DebugPacket is run as a method, causing Packet&lt;br /&gt;
to be constantly pushed and popped uselessly, if you are not debugging packets. This showed some really big difference in a mock test, let's see how it behaves here.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9957 | ckrinke | 2009-06-30 03:07:30 +0900 (Tue, 30 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, Snowdrop/Snowcrash for a patch that:&lt;br /&gt;
This patch makes the worn attachments accessible to MRM scripting &lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9956 | arthursv | 2009-06-30 01:55:00 +0900 (Tue, 30 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Changing List to Dictionary in PacketQueue.Dequeue for great justice (and performance)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9955 | chi11ken | 2009-06-30 00:40:00 +0900 (Tue, 30 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties, add copyright header, formatting cleanup.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9954 | sdague | 2009-06-30 00:05:12 +0900 (Tue, 30 Jun 2009) | 6 lines&lt;br /&gt;
&lt;br /&gt;
From: Chris Yeoh &amp;lt;yeohc@au1.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attached is a patch that changes the oar file saving of creation date/time to an integer&lt;br /&gt;
instead of a string. I did this after justincc emailed me saying there is a problem&lt;br /&gt;
with internationalisation doing it the old way and I said I'd fix it. Its been&lt;br /&gt;
tested with MySQL and I've made the changes for MSSQL but that hasn't been well tested.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9953 | ckrinke | 2009-06-29 23:01:08 +0900 (Mon, 29 Jun 2009) | 7 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, Godfrey, for a patch that:&lt;br /&gt;
The new IRCd module causes an error when multiple instances of OpenSimulator &lt;br /&gt;
are run on the same machine; since the port number (6666) is hardcoded,&lt;br /&gt;
the second and subsequent instances crash upon startup because the port &lt;br /&gt;
is already in use. Attached is a patch which adds a Port specifier to the &lt;br /&gt;
[IRCd] section of the config file, which defaults to 6666 if not present.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9952 | ckrinke | 2009-06-29 03:19:11 +0900 (Mon, 29 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, Grumly57 for a patch that solves:&lt;br /&gt;
When a sit position is modified by llSitTarget and the &lt;br /&gt;
sim is restarted, the object sit position is lost until &lt;br /&gt;
llSitTarget is applied again.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9951 | mw | 2009-06-28 20:07:26 +0900 (Sun, 28 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Removed the List&amp;lt;NewForce&amp;gt; m_forceList from ScenePresence, as there wasn't any need for a list, as only the last entry in it was acted on. So it now has a single NewForce m_nextVelocity , which is updated (rather than a NewForce object being created every AgentUpdate). So as well as cutting out all the adds and clearing of the list, it also removes the creation of upto 100+ new objects per second per avatar.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9950 | dahlia | 2009-06-27 16:49:10 +0900 (Sat, 27 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Make cleartext authentication case sensitive. Thanks jhurliman for spotting this.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9949 | chi11ken | 2009-06-27 13:31:49 +0900 (Sat, 27 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9948 | mw | 2009-06-26 21:30:54 +0900 (Fri, 26 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Fixed null bug, which was making unit tests fail&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9947 | mw | 2009-06-26 21:09:43 +0900 (Fri, 26 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Extracted the code that handles the sending of prim updates to the client, from ScenePresence into ISceneViewer/SceneViewer. Currently ScenePresence &amp;quot;has&amp;quot; a ISceneViewer, although if we had a proper Node based scenegraph then it would most likely be attached directly to the nodes.&lt;br /&gt;
By extracting this code, it should make it easier to experiment with different ways of managing the update process. [Next step to make this module based, could be to create a SceneViewerFactoryModule]&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9946 | melanie | 2009-06-26 20:32:36 +0900 (Fri, 26 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Enable the RemoteAdmin module to save regions as ini files rather than XML&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9945 | melanie | 2009-06-26 09:00:20 +0900 (Fri, 26 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Make delete-region delete the section from an ini file. Will delete the whole&lt;br /&gt;
file if it has no sections left.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9944 | melanie | 2009-06-26 08:31:55 +0900 (Fri, 26 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
Make create region save the new region to ini file format if the name&lt;br /&gt;
specifies an ini file.&lt;br /&gt;
If the ini file exists, the region will be added.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9943 | melanie | 2009-06-26 02:53:03 +0900 (Fri, 26 Jun 2009) | 7 lines&lt;br /&gt;
&lt;br /&gt;
From this version onwards, all new region files created automatically will&lt;br /&gt;
be created as new style INI files.&lt;br /&gt;
This doesn't yet affect create region, but it does affect first starts of&lt;br /&gt;
OpenSim.exe&lt;br /&gt;
Because master avatars are slated to be replaced by estate owners, this now&lt;br /&gt;
allows regions to be created without any master avatar data.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9942 | melanie | 2009-06-26 01:05:59 +0900 (Fri, 26 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Add a comment and an example region config file&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9941 | melanie | 2009-06-26 00:48:54 +0900 (Fri, 26 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Allow the reading of ini files instead of xml files when reading region&lt;br /&gt;
definitions from the file system&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9940 | mw | 2009-06-25 22:12:48 +0900 (Thu, 25 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Added a note to the ScenePresence.UpdateMovement() method, to remind everyone that the so called &amp;quot;forces&amp;quot; are actually velocities. &lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9939 | mw | 2009-06-25 21:26:23 +0900 (Thu, 25 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Applied patch from mantis #3820 which changed the clearing of the ScenePresence.m_forcesList, so it used the List.Clear method rather than doing a loop through the list and manually removing each item. Thanks dslake.&lt;br /&gt;
I also fixed the issue where the code also loops through the m_forcesList and copies each force to the ScenePresence's movementVector. Which resulted in only the last force in the list actually be acted on. As each copy overrode the last one. So now it only copies the last force in the list.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9938 | drscofield | 2009-06-25 20:30:31 +0900 (Thu, 25 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
moving the m_PendingAcksMap.Remove() out of the foreach and clearing&lt;br /&gt;
it instead after the foreach as we are going through the whole&lt;br /&gt;
m_PendingAcks list anyhow&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9937 | drscofield | 2009-06-25 20:30:16 +0900 (Thu, 25 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
have to clear m_PendingAcks not m_PendingAcksMap&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9936 | drscofield | 2009-06-25 19:26:10 +0900 (Thu, 25 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
hmph: missing '{'/'}', thx to nebadon for reporting it and rob smart&lt;br /&gt;
for spotting it!&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9935 | drscofield | 2009-06-25 17:28:59 +0900 (Thu, 25 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
fixing windows specific compile error.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9934 | drscofield | 2009-06-25 17:17:37 +0900 (Thu, 25 Jun 2009) | 13 lines&lt;br /&gt;
&lt;br /&gt;
From: Alan Webb &amp;lt;alan_webb@us.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After noticing on several occasions that the thread counts&lt;br /&gt;
we see when running OpenSIm were bordering on the astronomical&lt;br /&gt;
I decided to seriously investigate.&lt;br /&gt;
&lt;br /&gt;
After much poking I discovered that the problem is actually very&lt;br /&gt;
simple. The XEngine secition of the example ini says that the&lt;br /&gt;
timeout for an iden thread is in seconds, and an example value&lt;br /&gt;
of 60 is specified. In fact, this is actually resulting in a 60mS&lt;br /&gt;
idle timeout, which is not normally enough for a smart thread&lt;br /&gt;
to survive. I have added a multiplier to the XEngine constructor&lt;br /&gt;
so that the number now matches the published behavior.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9933 | drscofield | 2009-06-25 17:01:02 +0900 (Thu, 25 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
cosmetic change&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9932 | drscofield | 2009-06-25 17:00:43 +0900 (Thu, 25 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
streamlining m_NeedAck logic&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9931 | drscofield | 2009-06-25 17:00:18 +0900 (Thu, 25 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
streamling m_PendingAcks logic to get rid of gratuitous List&amp;lt;...&amp;gt;&lt;br /&gt;
instantiations and object copies.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9930 | drscofield | 2009-06-25 16:59:58 +0900 (Thu, 25 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
commenting out expensive bits (who in the world even uses SetClientInfo()?)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9929 | drscofield | 2009-06-25 16:59:47 +0900 (Thu, 25 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
changing DropSend()'s foreach loop so that it does not copy the&lt;br /&gt;
LLQueItem m_NeedAck queue each time.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9928 | drscofield | 2009-06-25 16:59:38 +0900 (Thu, 25 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
commenting out rather expensive bits of GetClientInfo() --- the only&lt;br /&gt;
bit of GetClientInfo that is actually used seems to be userEP as part of the&lt;br /&gt;
OSSL osGetAgentIP() script function. Now commented are the parts where&lt;br /&gt;
we serialize and copy out the *entire* packet queue of the client&lt;br /&gt;
(locking the packet handler in the process).&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9927 | drscofield | 2009-06-25 16:59:25 +0900 (Thu, 25 Jun 2009) | 8 lines&lt;br /&gt;
&lt;br /&gt;
more efficient way of checking for already seen packets:&lt;br /&gt;
- uses Environment.TickCount for all timestamps (instead of more&lt;br /&gt;
  costly Util.UnixTimeSinceEpoch()&lt;br /&gt;
- takes care of Environment.TickCount overflow (which will happens&lt;br /&gt;
  after 24.8 days of system uptime)&lt;br /&gt;
- avoids instantiating List copies for each check&lt;br /&gt;
- gets rid of one lock() invocation&lt;br /&gt;
- moves calculation of loop invariant variable out of the loop itself&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9926 | drscofield | 2009-06-25 16:50:19 +0900 (Thu, 25 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
adding logging statement for receive buffer size&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9925 | drscofield | 2009-06-25 16:50:02 +0900 (Thu, 25 Jun 2009) | 9 lines&lt;br /&gt;
&lt;br /&gt;
- adds the possibility of setting the socket receive buffer size&lt;br /&gt;
  option for LLUDPServer. On windows .NET the default socket receive&lt;br /&gt;
  buffer size is 8192 bytes, on recent linux systems it's about&lt;br /&gt;
  111K. both value can be a bit small for an OpenSimulator instance serving&lt;br /&gt;
  many clients. The socket receive buffer size can be configured via&lt;br /&gt;
  an OpenSim.ini config option&lt;br /&gt;
&lt;br /&gt;
- adds a general catch clause to LLUDPServer.OnReceivedData() to&lt;br /&gt;
  prevent it submerging when an unexpected Exception occurs.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9924 | drscofield | 2009-06-25 16:42:06 +0900 (Thu, 25 Jun 2009) | 37 lines&lt;br /&gt;
&lt;br /&gt;
From: Alan Webb &amp;lt;alan_webb@us.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This change moves texture send processing out of the main&lt;br /&gt;
  packet processing loop and moves it to a timer based&lt;br /&gt;
  processing cycle.&lt;br /&gt;
&lt;br /&gt;
  Texture packets are sent to the client consistently over&lt;br /&gt;
  time. The timer is discontinued whenever there are no&lt;br /&gt;
  textures to transmit.&lt;br /&gt;
&lt;br /&gt;
  The behavior of the texture sending mechanism is controlled&lt;br /&gt;
  by three variables in the LLCLient section of the config&lt;br /&gt;
  file:&lt;br /&gt;
&lt;br /&gt;
   [1] TextureRequestRate (mS) determines how many times per second&lt;br /&gt;
       texture send processing will occur. The default is 100mS.&lt;br /&gt;
   [2] TextureSendLimit determines how many different textures&lt;br /&gt;
       will be considered on each cycle. Textures are selected&lt;br /&gt;
       by priority. The old mechanism specified a value of 10 for&lt;br /&gt;
       this parameter and this is the default&lt;br /&gt;
   [3] TextureDataLimit determines how many packets will be sent for&lt;br /&gt;
       each of the selected textures. The old mechanism specified a&lt;br /&gt;
       value of 5, so this is the default.&lt;br /&gt;
&lt;br /&gt;
  So the net effect is that TextureSendLimit*TextureDataLimit&lt;br /&gt;
  packets will be sent every TextureRequestRate mS.&lt;br /&gt;
&lt;br /&gt;
  Once we have gotten a reasonable feeling for how these parameters&lt;br /&gt;
  affect overall processing, it would be nice to autonmically manage&lt;br /&gt;
  these values using information about the current status of the&lt;br /&gt;
  region and network.&lt;br /&gt;
&lt;br /&gt;
  Note that this also resolves the pathologcal problem that&lt;br /&gt;
  previously existed which was that a seated avatar generated very&lt;br /&gt;
  few in-bound packets (theoretically) and would therefore be the&lt;br /&gt;
  least able to retrieve the images being displayed by a&lt;br /&gt;
  projector script.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9923 | drscofield | 2009-06-25 16:39:48 +0900 (Thu, 25 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
- fixes a &amp;quot;collection out of sync&amp;quot; exception in the ODE physics&lt;br /&gt;
  engine, caused by an &amp;quot;avatar infinite position&amp;quot; occurring under&lt;br /&gt;
  heavy load.&lt;br /&gt;
- fixes &amp;quot;value too small&amp;quot; exception in ChatModule&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9921 | melanie | 2009-06-25 08:45:21 +0900 (Thu, 25 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
Allow &amp;quot;Take Copy&amp;quot; with copy only permissions if you own the object. Trans&lt;br /&gt;
is only required when taing an object you don't own, now.&lt;br /&gt;
Fixes Mantis #3838&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9920 | melanie | 2009-06-24 18:49:49 +0900 (Wed, 24 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
Reading GroupPosition, but setting OffsetPosition in undo doesnt' seem right.&lt;br /&gt;
This may fix the Mantii where individual prims ctrl-z to nirvana, but&lt;br /&gt;
it's not tested.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9919 | chi11ken | 2009-06-24 13:51:15 +0900 (Wed, 24 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9917 | melanie | 2009-06-24 07:11:34 +0900 (Wed, 24 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Also fix group role membership packet sizes to stay safely below MTU&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9915 | melanie | 2009-06-24 06:17:20 +0900 (Wed, 24 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Can I be this dumb?&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9913 | melanie | 2009-06-24 05:27:35 +0900 (Wed, 24 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Fix an error in group membership sending when the memebr count exceeds 60&lt;br /&gt;
Also reduce limit to 40 to allow for last logon dates and titles&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9911 | melanie | 2009-06-23 23:37:51 +0900 (Tue, 23 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Allow the member list of groups with more than 70 members to be viewed&lt;br /&gt;
without crashing&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9910 | melanie | 2009-06-23 18:04:30 +0900 (Tue, 23 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Add RegionSecret to user data structure to provide data update security&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9909 | melanie | 2009-06-23 17:56:45 +0900 (Tue, 23 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Commenting out the jhurliman fix, since our libOMV doesnt' have those fields&lt;br /&gt;
yet.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9908 | melanie | 2009-06-23 17:51:35 +0900 (Tue, 23 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Correct an uninitialized field in a packet. Thanks, jhurliman.&lt;br /&gt;
Fixes Mantis #3831&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9907 | melanie | 2009-06-23 17:37:12 +0900 (Tue, 23 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
Fix the AssetServiceBase bug I introduced by reordering configuration load&lt;br /&gt;
order. Thanks, Grumly57, for pointing it out.&lt;br /&gt;
The point of the original change was to let the more specific setting override&lt;br /&gt;
the less specific one, actually, I disabled the use of the less specific one.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9906 | sdague | 2009-06-23 04:27:38 +0900 (Tue, 23 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
update README to specify the correct mono revisions&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9905 | melanie | 2009-06-22 22:25:47 +0900 (Mon, 22 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Forgot a file&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9904 | melanie | 2009-06-22 22:14:48 +0900 (Mon, 22 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Committing RemoteUserServiceConnector out connector, local user service&lt;br /&gt;
connector and the glue code.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9903 | melanie | 2009-06-22 21:18:04 +0900 (Mon, 22 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Committing the meat of the user server interface and the bones of the service implementation&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9902 | chi11ken | 2009-06-22 20:04:09 +0900 (Mon, 22 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Formatting cleanup, ignore some generated files.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9901 | chi11ken | 2009-06-22 19:07:27 +0900 (Mon, 22 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9900 | lbsa71 | 2009-06-22 17:34:50 +0900 (Mon, 22 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Panda no like LongRunningAttribute, no? Me now reverting minuscule fix, yes? Panda happy, eh?&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9899 | lbsa71 | 2009-06-22 16:40:31 +0900 (Mon, 22 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Minuscule CC fix&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9898 | lbsa71 | 2009-06-22 16:40:00 +0900 (Mon, 22 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Ignored some gens&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9897 | lbsa71 | 2009-06-22 16:39:36 +0900 (Mon, 22 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Fixed some prebuild ref issues&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9896 | lbsa71 | 2009-06-22 16:39:04 +0900 (Mon, 22 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
* Added SceneTests and SceneBaseTests&lt;br /&gt;
* Changed some fields to protectesd to enable faking&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9895 | melanie | 2009-06-22 07:40:21 +0900 (Mon, 22 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
Suppress exception dump when informing friends in another region about login&lt;br /&gt;
or logoff. Regions come and go and we can't throw just because someone&lt;br /&gt;
took their region off the grid, or crashed.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9893 | melanie | 2009-06-22 04:49:11 +0900 (Mon, 22 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Correct the behaviro of group deeding and llGetOwner() within deeded objects&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9892 | homerh | 2009-06-22 04:06:19 +0900 (Mon, 22 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Do llEscapeURL with Uri.EscapeDataString instead of Uri.EscapeUriString.&lt;br /&gt;
Not exactly right, according to the LSL docs, but similar enough, I hope.&lt;br /&gt;
Fixes Mantis #3825.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9891 | melanie | 2009-06-22 03:38:12 +0900 (Mon, 22 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Publish a method on ICompiler to generate the CIL assembly path&lt;br /&gt;
Cause group deeding to apply next owner perms&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9888 | melanie | 2009-06-20 07:32:02 +0900 (Sat, 20 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Properly reset a vehicle's status to VEHICLE_TYPE_NONE when requested&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9886 | melanie | 2009-06-20 05:46:17 +0900 (Sat, 20 Jun 2009) | 6 lines&lt;br /&gt;
&lt;br /&gt;
When a shared module hooks OnClientClosed, it has no way of finding&lt;br /&gt;
out which client connection has closed. So, in multi-region sims, things&lt;br /&gt;
can get messy fast.&lt;br /&gt;
This introduces a second parameters, which is a Scene object ref. Minor&lt;br /&gt;
adjustments to custom modules may be required due to this change.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9885 | dahlia | 2009-06-20 02:08:23 +0900 (Sat, 20 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Thanks cmickeyb for a patch that checks for null assets in Cenome asset cache - Mantis #3819&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9884 | sdague | 2009-06-19 21:21:33 +0900 (Fri, 19 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
From: Rob Smart &amp;lt;SMARTROB@uk.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Makes an avatars personal voice indicator work with Freeswitch (though not other avatars indicators)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9883 | sdague | 2009-06-19 21:21:20 +0900 (Fri, 19 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
From: Chris Yeoh &amp;lt;yeohc@au1.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This patch ensures that the touch positions are set during touch_end&lt;br /&gt;
events (currently only working for touch_start and touch events).&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9882 | sdague | 2009-06-19 09:01:50 +0900 (Fri, 19 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
more type clean fixes for mono 2.4.2&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9881 | sdague | 2009-06-19 08:59:21 +0900 (Fri, 19 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
mono 2.4.2 seems a little more type strict, fix some sqlite tests to pass&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9880 | dahlia | 2009-06-19 08:02:12 +0900 (Fri, 19 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Thanks Michelle Argus for Mantis #0003742: Terrain editor - Flatten tool lowers Land&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9879 | mw | 2009-06-19 05:18:47 +0900 (Fri, 19 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Applied patch from Mantis #3817, which fixes a error when using MSSQL. I don't use MSSQL so couldn't test this myself. But there was certainly duplicated instructions in these files...which this patch fixes. Thanks Grumly57&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9878 | mw | 2009-06-19 05:01:37 +0900 (Fri, 19 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Applied patch from Mantis #3736 , which should stop the userserver crashing when a SL viewer version 1.23 logs in. Thanks StrawberryFride&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9877 | arthursv | 2009-06-18 23:33:35 +0900 (Thu, 18 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Corrected CAPS namespaces&lt;br /&gt;
* &amp;quot;luke, use the sed&amp;quot;&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9876 | diva | 2009-06-18 09:48:39 +0900 (Thu, 18 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Moved OpenSim/Framework/Communications/Capabilities up to OpenSim/Framework/Capabilities. Didn't change the namespace because VC# is not helping, and this would imply manually changing more than 50 files. So the namespace is still OpenSim.Framework.Communications.Capabilities, to be cleaned up later by someone with more energy.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9875 | melanie | 2009-06-18 08:46:13 +0900 (Thu, 18 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Fix an uninitialized data block. Thanks, jhurliman&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9874 | melanie | 2009-06-17 23:54:25 +0900 (Wed, 17 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Add the missing resource files for MSSQL&lt;br /&gt;
Mantis #3800&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9873 | diva | 2009-06-17 12:52:39 +0900 (Wed, 17 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Implementation of a simple authentication service + in connector in route to making HGInventory (client access) work in standalone again. This is the refactoring of what was/is there, but done in the new model. Not complete yet, but key authentication works. It should be enough to make HGInventory work again soon.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9872 | diva | 2009-06-16 08:29:00 +0900 (Tue, 16 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Moving these nice HG connectors to their homes.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9871 | diva | 2009-06-15 09:29:37 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Renamed two of the in connector modules, to make things consistent.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9870 | diva | 2009-06-15 09:17:17 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Removing the OpenSim.SimulatorServices project. All of those region modules are now in CoreModules/ServiceConnectorsIn, where they belong.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9869 | diva | 2009-06-15 08:00:23 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Factoring out &amp;quot;land_data&amp;quot; / RequestLandData that was hanging off of IGridServices, erroneously. Not sure when this is used, but now it is implemented in the new model of service connectors. Hopefully it works.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9868 | chi11ken | 2009-06-15 07:00:08 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Formatting cleanup.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9867 | melanie | 2009-06-15 06:44:34 +0900 (Mon, 15 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
Fixes Mantis #3793 . Committing thomax/Snoopy's patch to allow deeding of objects, with changes:&lt;br /&gt;
- Set OwnerID = GroupID for deeded objects.&lt;br /&gt;
- Close a security loophole that would have allowed a user with deed rights in a group to deed ANY object to that group, even if it's not owned by them and/or not set to that group&lt;br /&gt;
- Set LastOwnerID correctly. Handle objects vs. prims correctly.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9866 | chi11ken | 2009-06-15 06:37:50 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9865 | diva | 2009-06-15 04:44:56 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Renamed Region/CoreModules/ServiceConnectors to Region/CoreModules/ServiceConnectorsOut. No functional changes.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9864 | ckrinke | 2009-06-15 01:32:50 +0900 (Mon, 15 Jun 2009) | 8 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, M1sha, for a patch that improves the treePopulator module:&lt;br /&gt;
(a) Implements the ICommandableModule interface to clean up the user interface&lt;br /&gt;
(b) Uses a specification for a 'copse' (collected group of trees) which permits via an xml file: Tree type; Tree Line (high and low), Seed point; Radius of Copse; Number of required trees; Initial size of seeded tree; maximum size of seeded tree; growth rate; freeze growth state&lt;br /&gt;
(c) Multiple Copse may be defined for a region&lt;br /&gt;
(d) Growth on individual copse may be frozen or restarted, or all growth disabled/enabled&lt;br /&gt;
(e) Copse definitions are persistant, they are reloaded from the trees present on a region restart&lt;br /&gt;
(f) All trees in a copse may be removed and the copse definition deleted in one command&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9863 | diva | 2009-06-15 01:26:14 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Bug fix in remote neighbour connector.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9862 | diva | 2009-06-15 00:45:28 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
And this one too...&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9861 | diva | 2009-06-15 00:37:50 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Oops. Forgot to add this file.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9860 | diva | 2009-06-15 00:35:09 +0900 (Mon, 15 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Pulled out HelloNeighbour into its own service, INeighbourService, which may get more functions as we go along. It's a very simple service and service connectors, and it served primarily to establish the design of services that dependent on Scenes and that must always have a local connector. More refactoring coming, as this showed how to do it right.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9859 | justincc | 2009-06-13 05:00:26 +0900 (Sat, 13 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Temporarily resolve another problem in http://opensimulator.org/mantis/view.php?id=3741 by disabling the loading of OAR creation information&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9858 | justincc | 2009-06-13 00:45:38 +0900 (Sat, 13 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* minor: removing some logging stuff accidentally left in on the last commit&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9857 | justincc | 2009-06-13 00:41:53 +0900 (Sat, 13 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
* Move standalone login setup in LLStandaloneLoginmodule to RegionLoaded() from AddRegion()&lt;br /&gt;
* This is necessary to avoid a dependency problem where LLStandaloneLoginModule references IInventoryService before the LocalInventoryServiceConnector is registered&lt;br /&gt;
* Correct some copypasta log messages in LocalInventoryServiceConnector&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9856 | mikem | 2009-06-13 00:00:08 +0900 (Sat, 13 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
Give m_test* methods more reasonable names&lt;br /&gt;
&lt;br /&gt;
Changing the names of these methods because they were being picked up by&lt;br /&gt;
nunit as tests even though they were marked private. Naming them Check*&lt;br /&gt;
after the original Test*.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9855 | justincc | 2009-06-12 23:37:56 +0900 (Fri, 12 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* remove long unused interregion optional module code&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9854 | justincc | 2009-06-12 23:29:42 +0900 (Fri, 12 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* minor: remove one mono warning&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9853 | justincc | 2009-06-12 23:23:31 +0900 (Fri, 12 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* fix build break: sigh, must remember to build before committing&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9852 | justincc | 2009-06-12 23:18:01 +0900 (Fri, 12 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* minor: make control file loading code consistent&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9851 | justincc | 2009-06-12 23:00:50 +0900 (Fri, 12 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* minor: if OAR saving receives assets after timeout, just print warning, don't accidentally go on to process them&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9850 | justincc | 2009-06-12 22:37:08 +0900 (Fri, 12 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* minor: remove warning from unused field&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9849 | arthursv | 2009-06-12 05:50:23 +0900 (Fri, 12 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Fixed a few more async calls. Still not uncommented, some asserts still failing&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9848 | diva | 2009-06-12 05:27:13 +0900 (Fri, 12 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Fixes mantis #3803. Thanks jhurliman.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9847 | diva | 2009-06-12 04:12:20 +0900 (Fri, 12 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Small improvement in the IAR tests, but these tests are still showing random behavior, so they are still commented out.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9846 | arthursv | 2009-06-12 03:27:12 +0900 (Fri, 12 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Reinstating UserProfileCacheServiceTests. One test still fails (TestUpdateFolder)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9845 | diva | 2009-06-11 22:46:44 +0900 (Thu, 11 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Changed the inventory service so that is uses exactly one DB plugin, not many. The composition of plugins can be done at the service and connector levels.&lt;br /&gt;
This fixes the unit tests that were failing yesterday, but I'm not committing those yet, because I'm seeing 2 of those tests having pass and fail outcomes randomly which suggests that the tests are buggy.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9843 | diva | 2009-06-11 12:00:25 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
InterServiceInventoryService references *almost* completely removed from the simulator. Only a couple left, not important. Also updated the login tests -- Justin, this time I was able to fix this by myself :)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9842 | diva | 2009-06-11 10:50:52 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Removed a change in StandaloneHypergrid.ini introduced in r9838, which was incorrect.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9841 | diva | 2009-06-11 05:31:02 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Bug fix for creating users in standalone: the newly-created root folder was not being set in the cached profile. I suspect this bug has been around for a while.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9840 | diva | 2009-06-11 03:43:03 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Fixed problem in configuration for GridHypergrid.ini.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9839 | diva | 2009-06-11 03:02:49 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Small bug fix in HG.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9838 | ckrinke | 2009-06-11 02:53:06 +0900 (Thu, 11 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, BlueWall, for a patch that solves:&lt;br /&gt;
SQLite error on creating user.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9837 | diva | 2009-06-11 01:48:26 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Removing the default reading of AssetCaching on all cache modules.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9836 | diva | 2009-06-11 01:31:22 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Added some defaults to OpenSim.ini.example so that it works out of the box again with zero configuration.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9835 | melanie | 2009-06-11 00:36:44 +0900 (Thu, 11 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Reverse the default setting in Flotsam Asset Cache. Nothing should be the default&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9834 | diva | 2009-06-11 00:25:52 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Flipping memory cache to false (default) in Flotsam cache, because of a bug in libomv.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9833 | diva | 2009-06-11 00:18:07 +0900 (Thu, 11 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Commenting the IAR tests for now until we understand how to set up things in this new inventory model.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9832 | diva | 2009-06-10 23:15:50 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
duh. wrong variable name in SceneSetup.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9831 | diva | 2009-06-10 22:49:13 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
The previous commit was still wrong.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9830 | diva | 2009-06-10 22:46:38 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Attempt at fixing the inventory archiver tests.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9829 | diva | 2009-06-10 22:33:26 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Attempt at disabling the inventory unit tests, so I can figure out how to fix them. The test setup is broken.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9828 | diva | 2009-06-10 22:18:32 +0900 (Wed, 10 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
Heart surgery no.2: the inventory service hooks. &lt;br /&gt;
Several improvements in the connectors themselves.&lt;br /&gt;
Several improvements in configurations.&lt;br /&gt;
Needed to add a hack in IUserService and UserManagerBase, to be removed when that service is refactored.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9827 | drscofield | 2009-06-10 20:48:13 +0900 (Wed, 10 Jun 2009) | 6 lines&lt;br /&gt;
&lt;br /&gt;
From: Alan Webb &amp;lt;alan_webb@us.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Eat collision errors --- NOTE: this fix might be naive, it seems to&lt;br /&gt;
  have helped us getting to 81 avatars (whereas we'd crash with 20&lt;br /&gt;
  before), but it sure would benefit from some check-over by a person&lt;br /&gt;
  skilled in the art of ODE physics.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9826 | drscofield | 2009-06-10 20:29:09 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
persists Estate.PublicAccess settings across reboots [re #552]&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9825 | drscofield | 2009-06-10 20:05:44 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
makes voice setting persistent [re #552]&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9824 | drscofield | 2009-06-10 19:59:56 +0900 (Wed, 10 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
adding lastlogin information to admin_exists_user: will be 0 if the&lt;br /&gt;
user does not exist or hasn't logged in yet.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9823 | chi11ken | 2009-06-10 13:28:56 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Formatting cleanup.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9822 | diva | 2009-06-10 05:20:30 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Letting the Flotsam cache be enabled even when [AssetCache] section is missing. Thank you mcortez!&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9821 | chi11ken | 2009-06-10 03:07:35 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Formatting cleanup. Ignore some generated files.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9820 | chi11ken | 2009-06-10 02:48:22 +0900 (Wed, 10 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9819 | drscofield | 2009-06-09 21:11:22 +0900 (Tue, 09 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
ARGH!!!! note to self: ALWAYS use String.IsNullOrEmpty(...)!&lt;br /&gt;
&lt;br /&gt;
this patch fixes RemoteAdminPlugin gratuitously updating the user&lt;br /&gt;
password even if no update was intended.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9818 | melanie | 2009-06-09 17:17:06 +0900 (Tue, 09 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Added Snoopy to CONTRIBUTIRS.txt&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9817 | melanie | 2009-06-09 17:15:34 +0900 (Tue, 09 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
Thank you Snoopy, for a patch that implements group permissions.&lt;br /&gt;
Applied with changes:&lt;br /&gt;
- removed spammy debug message&lt;br /&gt;
- corrected tab formatting&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9816 | drscofield | 2009-06-09 15:39:27 +0900 (Tue, 09 Jun 2009) | 32 lines&lt;br /&gt;
&lt;br /&gt;
From: Alan Webb &amp;lt;alan_webb@us.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  This change addresses two issues:&lt;br /&gt;
&lt;br /&gt;
  [1] It adds a flag field to the blendface call which allows the&lt;br /&gt;
      caller to indicate whether or not the generated asset is&lt;br /&gt;
      temporary, and whether or not the asset being replaced should&lt;br /&gt;
      be explicitly retired fromt the memory cache. The decimal&lt;br /&gt;
      values correspond to:&lt;br /&gt;
      0 - Permanent asset, do not expire old asset&lt;br /&gt;
      1 - Permanent asset, expire old asset&lt;br /&gt;
      2 - Temporary asset, do not expire old asset&lt;br /&gt;
      3 - Temporary asset, expire old asset&lt;br /&gt;
      '3' corresponds to the default behavior seen today, and is&lt;br /&gt;
          the continued behavior of the non-blendface calls.&lt;br /&gt;
  [2] The dynamic texture routines are highly-asynchronous and can&lt;br /&gt;
      be scheduled simultaneously on a multi-core machine. The nature&lt;br /&gt;
      of the texture management interfaece is such that updates may&lt;br /&gt;
      be lost, and the nature of asynchornous operation means that&lt;br /&gt;
      they may be processed out of order. A lock has been added to&lt;br /&gt;
      ensure that updates are at least atomic. No attempt has been&lt;br /&gt;
      made to enforce ordering. The lock applies to the SceneObjectPart&lt;br /&gt;
      being updated and is held for the lifetime of the TextureEntry&lt;br /&gt;
      used to carry texture updates (the one instance carries all&lt;br /&gt;
      faces supported by the prim).&lt;br /&gt;
&lt;br /&gt;
   Users of these services should remember that the dynamic texture&lt;br /&gt;
   call is asynchronous and control will be returned *before* the&lt;br /&gt;
   texture update has actually occurred. As a result, a isubsequent&lt;br /&gt;
   GetTexture call may not return the expected asset id. A script&lt;br /&gt;
   must wait for the corresponding TEXTURE_CHANGED event before&lt;br /&gt;
   retrieving any texture information.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9815 | melanie | 2009-06-09 05:09:49 +0900 (Tue, 09 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Updating the flotsam asset cache. Thank you, mcortez!&lt;br /&gt;
Fixes Mantis #3784&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9814 | diva | 2009-06-09 04:35:36 +0900 (Tue, 09 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Bug fix. Adding the asset to the cache after a DB get.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9813 | diva | 2009-06-09 02:50:17 +0900 (Tue, 09 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
That didn't quite work. Trying this instead -- prompt given in the cmd line.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9812 | diva | 2009-06-09 02:34:42 +0900 (Tue, 09 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Making the prompt configurable in the server shell. Default is &amp;quot;Server&amp;quot;.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9811 | diva | 2009-06-09 02:22:23 +0900 (Tue, 09 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
IInentoryDataPlugins were missing.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9810 | diva | 2009-06-08 12:16:55 +0900 (Mon, 08 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
First draft of the inventory service IN connector. Probably won't work yet. But everything of inventory service is now checked in, first draft.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9809 | diva | 2009-06-08 12:09:24 +0900 (Mon, 08 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Added more functions to IInventoryService. Unsure about whether all of these are really necessary.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9808 | diva | 2009-06-08 04:00:55 +0900 (Mon, 08 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
First draft of inventory service connectors, and service implementation. No handlers yet, this is just the OUT part for now. It's not active and nothing in the simulator uses this yet. Just checking it in to start sharing with others. There are a couple of interesting software design points that could use other devs opinions.&lt;br /&gt;
Hopefully I added all needed files. &lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9807 | mikem | 2009-06-07 19:22:55 +0900 (Sun, 07 Jun 2009) | 15 lines&lt;br /&gt;
&lt;br /&gt;
Skip lone ident statments or for-loop assignments&lt;br /&gt;
&lt;br /&gt;
SL's LSL supports lone idents:&lt;br /&gt;
&lt;br /&gt;
    integer x;&lt;br /&gt;
    x;&lt;br /&gt;
&lt;br /&gt;
as well as lone idents in for-loop assignments:&lt;br /&gt;
&lt;br /&gt;
    for (x; x &amp;lt; 10; x++) { ... }&lt;br /&gt;
&lt;br /&gt;
while those are errors in C# (MONO at least). This patch skips lone&lt;br /&gt;
idents in such places.&lt;br /&gt;
&lt;br /&gt;
Fixes Mantis #3042.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9806 | mikem | 2009-06-07 19:22:41 +0900 (Sun, 07 Jun 2009) | 10 lines&lt;br /&gt;
&lt;br /&gt;
Allow empty assignment in for-loop&lt;br /&gt;
&lt;br /&gt;
For loops with no assignment are no longer syntax errors. For example,&lt;br /&gt;
this is now valid:&lt;br /&gt;
&lt;br /&gt;
    for ( ; i &amp;lt; 10; i++) { ... }&lt;br /&gt;
&lt;br /&gt;
Corresponding changes to lsl.{lexer,parser} in r99 in opensim-libs.&lt;br /&gt;
&lt;br /&gt;
Fixes Mantis #2501. Fixes Mantis #2884.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9805 | lbsa71 | 2009-06-07 17:51:10 +0900 (Sun, 07 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Reverting the test restructuring as, on second thought, this is not at all how the tests are structured.&lt;br /&gt;
(pt2)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9804 | lbsa71 | 2009-06-07 17:50:43 +0900 (Sun, 07 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Reverting the test restructuring as, on second thought, this is not at all how the tests are structured.&lt;br /&gt;
(pt1)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9803 | mikem | 2009-06-07 17:32:07 +0900 (Sun, 07 Jun 2009) | 6 lines&lt;br /&gt;
&lt;br /&gt;
Rename private TestllAngleBetween method&lt;br /&gt;
&lt;br /&gt;
It seems overloading the method TestllAngleBetween confused nunit a bit&lt;br /&gt;
and caused it to try running the private TestllAngleBetween method. The&lt;br /&gt;
method's access modified prevented that from happening, and nunit&lt;br /&gt;
complained.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9801 | diva | 2009-06-07 02:06:47 +0900 (Sun, 07 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Added Flotsam's cache config vars to configuration. Made it the default in grided sims. Made Cenome cache the default in standalone sims. More splitting in ini files, invisible to the user.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9799 | melanie | 2009-06-07 01:39:28 +0900 (Sun, 07 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
Correct an error where the config file name was always considered to be a&lt;br /&gt;
local file. This caused llHttpRequest and llSetInventoryPermsMask to fail&lt;br /&gt;
on regions that load their config from a web server&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9798 | dahlia | 2009-06-06 17:41:27 +0900 (Sat, 06 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
some code cleanup&lt;br /&gt;
test commit with cygwin svn&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9797 | justincc | 2009-06-06 04:53:24 +0900 (Sat, 06 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* minor: tiny tweak just to trigger another panda build&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9796 | justincc | 2009-06-06 04:34:35 +0900 (Sat, 06 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
* A bug fix for the last mantis 3741 bugfix&lt;br /&gt;
* Hopefully now, the nre should not occur and the lock should be correctly unlocked during the initial save oar process&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9795 | justincc | 2009-06-06 04:20:31 +0900 (Sat, 06 Jun 2009) | 6 lines&lt;br /&gt;
&lt;br /&gt;
* A further fix for mantis 3641 (oar saves do not complete)&lt;br /&gt;
&lt;br /&gt;
* For some reason, if a null was recieved (indicating a missing asset), the code had stopped passing that on to the waiting lock, resulting in a perpetual freeze&lt;br /&gt;
* This change passes the null on correctly&lt;br /&gt;
* Many thanks to thomax for being insistent in presenting his analysis of the problem :)&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9794 | justincc | 2009-06-06 03:44:44 +0900 (Sat, 06 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* refactor: split out part xml writing in SceneObjectSerializer&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9793 | justincc | 2009-06-06 02:03:44 +0900 (Sat, 06 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
* Fix unit tests so that they correctly handle 404 missing asset response&lt;br /&gt;
&lt;br /&gt;
* I didn't think there were tests in this area - my bad&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9792 | justincc | 2009-06-06 01:14:22 +0900 (Sat, 06 Jun 2009) | 7 lines&lt;br /&gt;
&lt;br /&gt;
* Fix problem where known missing assets would stop save oar ever completing&lt;br /&gt;
&lt;br /&gt;
* Issue was that region server was silently dropping an XmlException caused by trying to deserialize the blank asset service response&lt;br /&gt;
* So make asset service return http status NOT FOUND rather than OK in accordance with REST&lt;br /&gt;
* and interpret this correctly in the async response so that a null object is sent back&lt;br /&gt;
* This means that this fix won't be active until both region simulator and server reach this revision&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9791 | justincc | 2009-06-05 22:48:43 +0900 (Fri, 05 Jun 2009) | 7 lines&lt;br /&gt;
&lt;br /&gt;
* Add oar saving timeout&lt;br /&gt;
&lt;br /&gt;
* If an oar save fails to get responses to all asset requests to the asset service then timeout after 60 seconds&lt;br /&gt;
* Timeout executes abort, since missing assets in an OAR seems bad&lt;br /&gt;
* This means that oar saves won't permanently hang and instead can be retried if something goes wrong with the asset service&lt;br /&gt;
* This is not a solution to mantis 3714. Hopefully a fix will be along shortly since I can now consistently reproduce that problem&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9790 | melanie | 2009-06-05 18:47:42 +0900 (Fri, 05 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
Thank you, thomax, for a patch to provide finer-grained access control to&lt;br /&gt;
scripting.&lt;br /&gt;
Fixes Mantis #2862&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9789 | lbsa71 | 2009-06-05 15:23:09 +0900 (Fri, 05 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* convenience ignores&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9788 | lbsa71 | 2009-06-05 15:22:42 +0900 (Fri, 05 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Restructured Scenes Tests to follow (what I conceive of as being) current directory standards. (pt 2 - thank you, svn. not.)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9787 | lbsa71 | 2009-06-05 15:22:08 +0900 (Fri, 05 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Restructured Scenes Tests to follow (what I conceive of as being) current directory standards. (pt 1 - thank you, svn. not.)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9786 | melanie | 2009-06-05 13:58:55 +0900 (Fri, 05 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Committing mcortez's FlotsamAssetCache after several positive reviews.&lt;br /&gt;
Thank you, mcortez!&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9785 | diva | 2009-06-05 03:41:19 +0900 (Fri, 05 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Changed a comment to reflect changes in config.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9784 | diva | 2009-06-05 03:36:02 +0900 (Fri, 05 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Fixed placement of optional configs for CenomeAssetCache. Thank you ImazeR.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9783 | chi11ken | 2009-06-04 12:58:04 +0900 (Thu, 04 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Comment out unused variables / private fields to avoid compiler warnings.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9782 | chi11ken | 2009-06-04 10:37:31 +0900 (Thu, 04 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Comment out unused private functions to avoid compiler warnings.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9781 | chi11ken | 2009-06-04 10:26:31 +0900 (Thu, 04 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Fix comparison of UUID with null.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9780 | chi11ken | 2009-06-04 10:10:49 +0900 (Thu, 04 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Ignore some generated files.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9779 | chi11ken | 2009-06-04 10:09:18 +0900 (Thu, 04 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Add copyright headers.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9778 | chi11ken | 2009-06-04 09:51:02 +0900 (Thu, 04 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9777 | melanie | 2009-06-04 05:14:41 +0900 (Thu, 04 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Committing the skeleton of the authentication service&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9776 | melanie | 2009-06-04 04:54:19 +0900 (Thu, 04 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Make AssetMetadata [Serializable] to help in binary caching&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9775 | melanie | 2009-06-04 04:49:26 +0900 (Thu, 04 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Committing the partial refactor of authentication services. No user functionlity&lt;br /&gt;
will eat your babies, etc&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9774 | lbsa71 | 2009-06-04 02:29:21 +0900 (Thu, 04 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Making sure we fail a bit earlier if we have no AssetService&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9773 | drscofield | 2009-06-03 21:48:04 +0900 (Wed, 03 Jun 2009) | 29 lines&lt;br /&gt;
&lt;br /&gt;
From: Chris Yeoh &amp;lt;yeohc@au1.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This patch adds oar file date and time (UTC) meta data to an oar file&lt;br /&gt;
when it is created. It also adds a unique ID, though this id does not&lt;br /&gt;
in anyway identify the machine that the oar file was created on.&lt;br /&gt;
&lt;br /&gt;
When an oar file with this meta data is loaded this extra information&lt;br /&gt;
is saved with the region settings and available via LSL through:&lt;br /&gt;
&lt;br /&gt;
- osLoadedCreationDate()&lt;br /&gt;
- osLoadedCreationTime()&lt;br /&gt;
- osLoadedCreationID()&lt;br /&gt;
&lt;br /&gt;
If there is no meta data these fields will be blank. Subsequent oar&lt;br /&gt;
file loads will erase the information for the previous oar file&lt;br /&gt;
load. Persistence has only been implemented for MySQL, the other&lt;br /&gt;
backends need updating.&lt;br /&gt;
&lt;br /&gt;
Overall this allows us to much more easily identify the specific version of&lt;br /&gt;
software that clients are using. Its very straightforward to edit the oar file&lt;br /&gt;
to change the ID string to be something more human friendly.&lt;br /&gt;
&lt;br /&gt;
Included in the patch is a new file OpenSim/Data/MySQL/Resources/030_RegionStore.sql&lt;br /&gt;
required for the MySQL DB migration.&lt;br /&gt;
&lt;br /&gt;
btw I had a chat with justincc about this a few weeks ago since he&lt;br /&gt;
wrote the oar file import/export and he sounded happy to accept&lt;br /&gt;
something that included date/time information but didn't want anything&lt;br /&gt;
that would silently leak private information like machine names.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9772 | drscofield | 2009-06-03 21:39:44 +0900 (Wed, 03 Jun 2009) | 34 lines&lt;br /&gt;
&lt;br /&gt;
From: Chris Yeoh &amp;lt;yeohc@au1.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- fixes wild swings in memory usage related to usage of GetDrawStringSize()&lt;br /&gt;
&lt;br /&gt;
  We've been seeing wild swings in memory usage and a large chunk of&lt;br /&gt;
  memory leak. From analysing this it's pretty clear that the mono&lt;br /&gt;
  garbage collector is rather buggy! When exercised heavily it looks&lt;br /&gt;
  like it frees more than its meant to resulting in crashes.&lt;br /&gt;
&lt;br /&gt;
  GetDrawStringSize() measures the size in pixels of text. To do this&lt;br /&gt;
  memory for an image is allocated and used to call the GDI text&lt;br /&gt;
  measure functions.  Although no reference to the temporary memory&lt;br /&gt;
  for the measuring is kept, it takes quite a while for the mono&lt;br /&gt;
  garbage collector to clean up - so if lots calls to&lt;br /&gt;
  GetDrawStringSize() are made at once there can be a spike in memory&lt;br /&gt;
  usage. If the garbage collector is not fast enough then the GDI&lt;br /&gt;
  layer runs out of memory. It also looks like the garbage collector&lt;br /&gt;
  is not always reclaiming all of the memory.&lt;br /&gt;
&lt;br /&gt;
  I've attached an OpenSimulator patch which works around the garbage collector&lt;br /&gt;
  issues. Instead of dynamically allocating memory for measuring&lt;br /&gt;
  text sizes, it serialises (on a per region basis) access to a single&lt;br /&gt;
  block of memory. The effect of this is to be nicer to the garbage&lt;br /&gt;
  collector as it has a lot less work to do, at the cost of some&lt;br /&gt;
  theoretical loss in performance (nothing noticeable with our tests&lt;br /&gt;
  which hit it pretty hard).&lt;br /&gt;
&lt;br /&gt;
  OpenSimulator still does leak memory slowly, but it is a lot more stable&lt;br /&gt;
  with this patch. I suspect that either the garbage collector misses&lt;br /&gt;
  bits of freed memory or the GDI/cairo layer leaks a bit each time a&lt;br /&gt;
  texture is created. Thats going to be a lot harder to hunt down, but&lt;br /&gt;
  for reference if someone has OpenSimulator running on Windows it would be&lt;br /&gt;
  interesting to see if it has the same problem as it would tell us if&lt;br /&gt;
  its a mono/GDI problem or an OpenSimulator problem.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9771 | drscofield | 2009-06-03 21:21:14 +0900 (Wed, 03 Jun 2009) | 9 lines&lt;br /&gt;
&lt;br /&gt;
From: Alan Webb &amp;lt;alan_webb@us.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Modify dynamic texture handling so that an explicitly targetted&lt;br /&gt;
  face is not scheduled for immediate expiration. The requirement&lt;br /&gt;
  for precaching explicitly requires these assets to persist. They&lt;br /&gt;
  do however remain temporary.&lt;br /&gt;
&lt;br /&gt;
  This approach leaves the legacy mode of operation (ALL_SIDES)&lt;br /&gt;
  unchanged in this respect.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9770 | dahlia | 2009-06-03 17:41:08 +0900 (Wed, 03 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Thank you Imaze Rhiano for a patch that implements Cenome Memory Asset Cache (Mantis #3759)&lt;br /&gt;
See the files: bin/config-include/GridCommon.ini.example and bin/config-include/StandaloneCommon.ini.example to configure and enable this caching method.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9769 | dahlia | 2009-06-03 14:31:53 +0900 (Wed, 03 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Thanks aduffy70 for Mantis #3762: A patch to fix llGround, llGroundNormal, and llGroundSlope&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9768 | dahlia | 2009-06-03 11:03:11 +0900 (Wed, 03 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
revert r9765 due to too many errors on some compilers. Affects Mantis #3759&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9767 | dahlia | 2009-06-03 10:27:07 +0900 (Wed, 03 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
add body to an empty getter/setter&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9766 | dahlia | 2009-06-03 10:06:00 +0900 (Wed, 03 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
fix a int[] declaration&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9765 | dahlia | 2009-06-03 07:42:47 +0900 (Wed, 03 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Thank you Imaze Rhiano for a patch that implements Cenome Memory Asset Cache (Mantis #3759)&lt;br /&gt;
See the files: bin/config-include/GridCommon.ini.example and bin/config-include/StandaloneCommon.ini.example to configure and enable this caching method.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9764 | ckrinke | 2009-06-03 06:13:29 +0900 (Wed, 03 Jun 2009) | 7 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, MattSetzer, for a patch that solves a Mantis:&lt;br /&gt;
This appears to be due to the fact that no asset cache has been &lt;br /&gt;
configured, possibly as a result of the configuration changes that &lt;br /&gt;
have been made recently. I've attached a patch to display a message &lt;br /&gt;
to that effect rather than throwing an error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9763 | ckrinke | 2009-06-03 05:56:27 +0900 (Wed, 03 Jun 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, jonc, for a patch that:&lt;br /&gt;
Grid mode only. Serialization and deserialization of &lt;br /&gt;
byte representing Access Level is failing unless byte &lt;br /&gt;
is ToString'd first on Grid Server.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9762 | lbsa71 | 2009-06-03 03:12:34 +0900 (Wed, 03 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Pried apart the ODE tests. This fixes mantis #3212&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9761 | justincc | 2009-06-03 00:24:29 +0900 (Wed, 03 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Add simple original xml serialization test&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9760 | melanie | 2009-06-02 17:19:32 +0900 (Tue, 02 Jun 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Explicitly set the changed status of the prim groups affected in a delink&lt;br /&gt;
Mantis #2484&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9759 | arthursv | 2009-06-02 05:51:40 +0900 (Tue, 02 Jun 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
* Allow for lowercase searching in standalone mode, when case sensitive&lt;br /&gt;
search fails. This allows compability to libOMV bots, that always lowercase&lt;br /&gt;
region names.&lt;br /&gt;
* Uncertain if this should/could propagate to grids&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9758 | lbsa71 | 2009-06-02 05:17:10 +0900 (Tue, 02 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Removed some commented-out code&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9757 | chi11ken | 2009-06-02 03:45:36 +0900 (Tue, 02 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Only save crashes to disk if save_crashes in OpenSim.ini is true (false by default).&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9756 | arthursv | 2009-06-02 03:34:40 +0900 (Tue, 02 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Making silent logoff of old hung sessions for new connections default for&lt;br /&gt;
StandAlone users. Not touching grid.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9755 | justincc | 2009-06-02 03:03:51 +0900 (Tue, 02 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Add simple original sog xml serialization test&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9754 | justincc | 2009-06-02 02:38:11 +0900 (Tue, 02 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* minor: change the name of one serialization method to match its counterpart&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9753 | justincc | 2009-06-02 01:00:46 +0900 (Tue, 02 Jun 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Fix race condition in save oar&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9752 | mw | 2009-06-01 20:41:03 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Fixed AvatarCreationModule (I think)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9751 | mw | 2009-06-01 20:36:58 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
trying to get panda to be able to read the AvatarCreationModule &lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9750 | mw | 2009-06-01 20:34:10 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
part 1 of trying to get panda to be able to read the AvatarCreationModule &lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9749 | mw | 2009-06-01 20:16:07 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Some changes to the AvatarCreationModule to reduce the number of database reads/writes. Still requires more work in this area.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9748 | chi11ken | 2009-06-01 15:37:14 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Minor: Change OpenSim to OpenSimulator in older copyright headers and LICENSE.txt.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9747 | joha1 | 2009-06-01 10:24:18 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Added cscope tag support in Makefile&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9746 | dahlia | 2009-06-01 08:57:52 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
reduce verbosity of sculpt map cache messages to reporting cache failures only&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9745 | ckrinke | 2009-06-01 05:53:59 +0900 (Mon, 01 Jun 2009) | 9 lines&lt;br /&gt;
&lt;br /&gt;
Thank you kindly, StrawberryFride for a patch that:&lt;br /&gt;
Added in some key code to read properties from MSSQL for user profiles &lt;br /&gt;
which fixes issues of users having trouble editing estate settings on a &lt;br /&gt;
grid where estate managers are not god, and fixes the option of enabling &lt;br /&gt;
grid god functionality on MSSQL grids.&lt;br /&gt;
&lt;br /&gt;
I have applied this to trunk only. I need someone else to examine and apply&lt;br /&gt;
to 0.6.5-Post-Fixes, or give me some direction, please.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9744 | chi11ken | 2009-06-01 03:35:00 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Add copyright headers, formatting cleanup, ignore some generated files.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9743 | chi11ken | 2009-06-01 01:26:18 +0900 (Mon, 01 Jun 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9742 | afrisby | 2009-05-31 21:53:05 +0900 (Sun, 31 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Adds MRM scripting commands, World.Objects.Create(Vector3 position) and World.Objects.Create(Vector3 position, Quaternion rotation). These rez a 'default box' object at the specified coordinates, and return the associated IObject.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9741 | mikem | 2009-05-31 20:50:42 +0900 (Sun, 31 May 2009) | 7 lines&lt;br /&gt;
&lt;br /&gt;
Fix IRCd init check for config section&lt;br /&gt;
&lt;br /&gt;
The IRCStackModule used Nini.Config.ConfigCollection.Contains() to&lt;br /&gt;
determine whether the &amp;quot;IRCd&amp;quot; section was present in the config. This&lt;br /&gt;
ConfigCollection, however, stores an ArrayList of IConfig objects, not&lt;br /&gt;
strings, so calling Contains(&amp;quot;IRCd&amp;quot;) always returns false since &amp;quot;IRCd&amp;quot;&lt;br /&gt;
is a string, not an IConfig object.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9740 | diva | 2009-05-31 01:30:53 +0900 (Sun, 31 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Slashing trailing slashes.&lt;br /&gt;
https://lists.berlios.de/pipermail/opensim-dev/2009-May/006673.html&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9739 | diva | 2009-05-31 01:22:15 +0900 (Sun, 31 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Forgot to add this to my last commit 2 days ago. Async in the HGBroker too.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9738 | mw | 2009-05-31 01:13:40 +0900 (Sun, 31 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Added option (on my default) to the clone avatar function so that the clothes and attachments that the target avatar is wearing, to begin with, are removed. So the end result isn't a merger of those clothes/attachments and the ones the template avatar is wearing.&lt;br /&gt;
Added IPAddress ListenIPAddress property to BaseHttpServer so that the listening/binding IP can be set.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9737 | mw | 2009-05-31 00:20:39 +0900 (Sun, 31 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Made it so ( by default) the Clone avatar function, propagates the permissions on the cloned items. This needs further testing to make sure all permissions are set correctly.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9736 | mw | 2009-05-30 22:39:07 +0900 (Sat, 30 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
a few small changes to AvatarCreationModule&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9735 | mw | 2009-05-30 21:51:28 +0900 (Sat, 30 May 2009) | 6 lines&lt;br /&gt;
&lt;br /&gt;
Added a AvatarCreationModule to the user server. This handles the &amp;quot;cloning&amp;quot; of a existing avatar's inventory to another avatar's inventory (the base method will also create the inventory for a new avatar if the avatar doesn't alreayd have any inventory).&lt;br /&gt;
The code also sets the target avatar as wearing whatever the template avatar was wearing (including attachments). The idea is to allow the use of this to give new avatars a more interesting avatar (and inventory set) than the current default. &lt;br /&gt;
I have include a console command that will clone the inventory from one existing user (template avatar) to another existing avatar (target avatar). The format of the command is : &amp;quot;clone avatar &amp;lt;templateAvatarFirstName&amp;gt; &amp;lt;templateAvatarLastName&amp;gt; &amp;lt;targetAvatarFirstName&amp;gt; &amp;lt;targetAvatarLastName&amp;gt;&amp;quot; (to use this console command on new accounts, the &amp;quot;create user&amp;quot; command will need to be used first)&lt;br /&gt;
While the code was designed for hooking up to a remote call from a web interface, I have left the hookup code out of this commit, as I believe most use cases will want to handle it differently.&lt;br /&gt;
Also added a &amp;quot;trusted handler&amp;quot; to the inventory server to allow the user server to create new folders in a user's inventory. &lt;br /&gt;
All this is in the old UGAIM servers so will need porting to the new servers. &lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9734 | afrisby | 2009-05-30 18:37:11 +0900 (Sat, 30 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Tweaks to /WHO listings.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9733 | afrisby | 2009-05-30 16:02:38 +0900 (Sat, 30 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* You are likely to be eaten by a grue.&lt;br /&gt;
* Enable with [IRCd] Enabled=true (will listen on port 6666).&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9732 | afrisby | 2009-05-30 13:07:58 +0900 (Sat, 30 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* More Tweaks&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9731 | afrisby | 2009-05-30 12:53:04 +0900 (Sat, 30 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* More IRCClientView fiddling. Now implements IClientAPI &amp;amp; IClientCore.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9730 | afrisby | 2009-05-30 12:18:09 +0900 (Sat, 30 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* May partially implement a C# IRCd &amp;amp; IRCClientStack.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9729 | afrisby | 2009-05-30 08:49:48 +0900 (Sat, 30 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Adds World.Audio.* to MRM&lt;br /&gt;
* This includes methods such as PlaySound which take a Position as an argument, allowing you to trigger sounds arbitrarily across the scene without needing a parent object in the position.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9728 | afrisby | 2009-05-30 07:48:34 +0900 (Sat, 30 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Protip: When you click 'make public' in resharper, note to save before committing.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9727 | afrisby | 2009-05-30 07:44:49 +0900 (Sat, 30 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
* Implements Sound on Objects for IObject in MRM&lt;br /&gt;
* Method: IObject.Sound.Play(UUID sound, double volume)&lt;br /&gt;
* More feature-packed API to come soon. (I want a World.Sound with arbitrary positioning)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9726 | arthursv | 2009-05-30 07:38:18 +0900 (Sat, 30 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
* Allows standalone region users to skip the &amp;quot;You must wait 5 minutes to log again&amp;quot; message and&lt;br /&gt;
allow the region to kick the old user and log the new one without reporting any failure.&lt;br /&gt;
Default is still to show message and fail login&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9725 | arthursv | 2009-05-30 06:12:55 +0900 (Sat, 30 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Bug fix: Fixes an exception when Scene.RemoveClient is called to remove on a&lt;br /&gt;
non-existing ScenePresence avatar. Also removed trailing white spaces.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9724 | justincc | 2009-05-30 06:10:17 +0900 (Sat, 30 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* refactor: little tweaks to trigger another build&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9723 | justincc | 2009-05-30 06:01:18 +0900 (Sat, 30 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* refactor: Remove redundent prim id attribute on Scene.AddSceneObject()&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9722 | justincc | 2009-05-30 05:20:47 +0900 (Sat, 30 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Add save xml2 serialization test&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9721 | justincc | 2009-05-30 01:27:43 +0900 (Sat, 30 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* minor: move common serialization test code into fixture setup&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9720 | justincc | 2009-05-30 01:11:33 +0900 (Sat, 30 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Add xml2 load test&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9719 | dahlia | 2009-05-29 17:57:10 +0900 (Fri, 29 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
some clean up of sculpt map caching code&lt;br /&gt;
remove a redundant debug message&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9718 | dahlia | 2009-05-29 15:50:15 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
reinstate a hopefully more robust experimental decoded sculpt map caching scheme&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9717 | dahlia | 2009-05-29 14:42:06 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
plumbing for future sculpt map caching&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9716 | dahlia | 2009-05-29 14:11:50 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
disable sculpt map caching until a better method of avoiding asset requests can be found&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9715 | dahlia | 2009-05-29 13:29:55 +0900 (Fri, 29 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
null test for texture assets when using cached sculpt map&lt;br /&gt;
addresses mantis #3735&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9712 | dahlia | 2009-05-29 11:46:35 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Experimental decoded sculpt map caching&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9711 | diva | 2009-05-29 10:26:53 +0900 (Fri, 29 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Making the delegate handlers async in async Get, to make things consistent. Them being synchronous in certain cases (asset in cache, for example) may account for slowness reported by folks in osgrid when they have the cache module on. Turns out that some of the provided handlers do non-trivial processing (the ones coming from J2KImage, for example), which means that the several asset requests that hit the cache end up being synchronous. The jury is still out on this.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9710 | diva | 2009-05-29 06:04:10 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Instrumenting GlynnTuckerCache to find out the hit rate.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9709 | afrisby | 2009-05-29 04:20:49 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Tweak to above&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9708 | afrisby | 2009-05-29 04:19:10 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Makes grid announcements more prominent.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9707 | afrisby | 2009-05-29 04:03:27 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Oops. Forgot Initialise needs tweaking between IRegionModule and ISharedRegionModule.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9706 | afrisby | 2009-05-29 03:59:18 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Converts recently added OGSRadmin to IRegionModule because I cant be arsed figuring out Mono.Addins.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9705 | afrisby | 2009-05-29 03:27:08 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Adds OGS RAdmin class. Adds primitive remote admin functions for gridservers to perform on region servers. Used for grid-wide announcements, etc.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9704 | afrisby | 2009-05-29 00:27:15 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* May make the terrain flatten brush behave like Second Life(tm)'s client expects. May break everything. You decide!&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9703 | diva | 2009-05-29 00:05:00 +0900 (Fri, 29 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
This may bring the missing texture back.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9702 | lbsa71 | 2009-05-28 03:27:28 +0900 (Thu, 28 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* So, giving up on my efforts to de-duplicate the asset handlers. I'll just service commit my current state, then start over and this time concentrating only on the new handlers.&lt;br /&gt;
* Fixed some erroneous refs in Tests.Common&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9701 | drscofield | 2009-05-28 03:01:06 +0900 (Thu, 28 May 2009) | 10 lines&lt;br /&gt;
&lt;br /&gt;
From: Chris Yeoh &amp;lt;cyeoh@au1.ibm.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The attached patch implements llPassTouches. It has been added&lt;br /&gt;
to the export/import XML along with the flag for AllowedInventoryDrop.&lt;br /&gt;
&lt;br /&gt;
The MySQL backend has been updated as well, though I haven't&lt;br /&gt;
done one of those before so could do with a check. I added&lt;br /&gt;
the migration mysql file as well.&lt;br /&gt;
&lt;br /&gt;
The other data backends need updating as well.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9700 | drscofield | 2009-05-28 02:34:06 +0900 (Thu, 28 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
making TarArchiveReader more resilient when faced with OARs created by&lt;br /&gt;
ancient tars.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9699 | diva | 2009-05-28 01:11:23 +0900 (Thu, 28 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Adding the GlynnTucker cache module as the default choice in .ini's.&lt;br /&gt;
Minor log message change in the module itself.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9698 | chi11ken | 2009-05-27 23:30:33 +0900 (Wed, 27 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Update svn properties.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9697 | sdague | 2009-05-27 21:53:29 +0900 (Wed, 27 May 2009) | 5 lines&lt;br /&gt;
&lt;br /&gt;
Revert &amp;quot;* Added IntegrationTest Attribute and tagged the ODETestClass&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This reverts commit 8f0096cc7b112fea8f69f391224911f624482747.&lt;br /&gt;
&lt;br /&gt;
To get us back to compiling on fresh checkouts.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9696 | sdague | 2009-05-27 21:41:18 +0900 (Wed, 27 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
the new Tests were defined before the Tests.Common dll in prebuild,&lt;br /&gt;
this causes nant to choke on a fresh checkout. This should fix the build&lt;br /&gt;
break&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9695 | lbsa71 | 2009-05-27 21:36:58 +0900 (Wed, 27 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Added IntegrationTest Attribute and tagged the ODETestClass&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9694 | lbsa71 | 2009-05-27 20:54:17 +0900 (Wed, 27 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
* Added OpenSim.Server.Handlers.Tests project&lt;br /&gt;
* Added AssetServerGetHandlerTests - not really wired up yet; more to come.&lt;br /&gt;
* Ignored some gens&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9693 | diva | 2009-05-27 07:39:01 +0900 (Wed, 27 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Catching weirdnesses on resolving External EndPoint in agent transfers. Will probably need to do more aggressively.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9692 | diva | 2009-05-27 06:35:24 +0900 (Wed, 27 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Forgot to include this on the last commit.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9691 | diva | 2009-05-27 06:24:18 +0900 (Wed, 27 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Experimental alternative cache module implementation, using GlynnTucker.Cache.dll.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9690 | diva | 2009-05-27 01:45:30 +0900 (Wed, 27 May 2009) | 4 lines&lt;br /&gt;
&lt;br /&gt;
Changed the order of things in Scene creation. This piece of code is very jibbery, widely different results with slightly different orders. This particular order produces the best results in the UC Irvine sim in osgrid. But clearly there's something messed up here.&lt;br /&gt;
&lt;br /&gt;
Addresses mantis #3707, mantis #3713, mantis #3686.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9689 | lbsa71 | 2009-05-27 01:18:41 +0900 (Wed, 27 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
* We have strand flavours.&lt;br /&gt;
* The version string is now reported as &amp;quot;OpenSimulator 0.6.5 (Dev)&amp;quot;&lt;br /&gt;
* This has to be administrated manually.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9688 | lbsa71 | 2009-05-27 01:01:06 +0900 (Wed, 27 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Introduced GetVersionString so we can harness the whole thing.&lt;br /&gt;
* Introduced 'Flavour' to spice things up.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9687 | lbsa71 | 2009-05-27 00:46:09 +0900 (Wed, 27 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* slowly getting there...&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9686 | lbsa71 | 2009-05-27 00:43:43 +0900 (Wed, 27 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Changed Version to property for great justice&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9685 | lbsa71 | 2009-05-27 00:35:55 +0900 (Wed, 27 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Added test to make sure version info is 27 chars long (still don't know exactly why it has to be that, though)&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9684 | diva | 2009-05-27 00:26:22 +0900 (Wed, 27 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Catching exceptions on Store, including timeout. Store may fail, for whatever reason, but it won't crash the sim.&lt;br /&gt;
Addresses mantis #3707, mantis #3713, mantis #3686.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9683 | diva | 2009-05-26 11:47:02 +0900 (Tue, 26 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Commented a log message related to users not found, because it floods the log when the sims have prims from foreign users.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9682 | diva | 2009-05-26 11:24:38 +0900 (Tue, 26 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Restoring the initial CAP Url to exactly what it used to be before Adam's changes. Adam's code is still there, but commented, until we figure out what's going on.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9681 | melanie | 2009-05-26 10:38:32 +0900 (Tue, 26 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Revert a change I made to get a better URL because it failes under mono&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9680 | melanie | 2009-05-26 10:27:22 +0900 (Tue, 26 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Couple of tweaks to the URL module: handle script reset gracefully and&lt;br /&gt;
stop crashing http server threads.&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9679 | diva | 2009-05-26 10:05:40 +0900 (Tue, 26 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Addresses mantis #3718.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9678 | afrisby | 2009-05-26 09:53:49 +0900 (Tue, 26 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Fiddles with some login network code to attempt to fix login bug.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9677 | diva | 2009-05-26 08:33:56 +0900 (Tue, 26 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Fixed a typo.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9676 | melanie | 2009-05-26 06:15:14 +0900 (Tue, 26 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
Correct a minor typo&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9675 | diva | 2009-05-26 05:30:24 +0900 (Tue, 26 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
Beginning of refactoring RESTComms/LocalComms in the new style of services and connectors. This commit has the beginning of the In connector, not the Out. Nothing of this is finished yet, and it doesn't run. But it should compile ok.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9674 | justincc | 2009-05-26 04:54:47 +0900 (Tue, 26 May 2009) | 6 lines&lt;br /&gt;
&lt;br /&gt;
* reseparate inventory item creator id and creator uuid&lt;br /&gt;
* unfortunately, while the client requires uuids and we want to be able to have arbitrary string ids, these cannot be kept in sync&lt;br /&gt;
* I think the problems last time were due to a serialization change&lt;br /&gt;
* So the major inteface version has been bumped to take care of any lingering issues here.&lt;br /&gt;
* This means that region servers beyond this revision can only connect to similarly uptodate grid services, and vice versa&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9673 | diva | 2009-05-26 04:20:27 +0900 (Tue, 26 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
One more utility. Not used yet.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9672 | justincc | 2009-05-26 01:29:01 +0900 (Tue, 26 May 2009) | 2 lines&lt;br /&gt;
&lt;br /&gt;
* Display normal log information in the console's default foreground colour, for those of us with white backgrounds&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9671 | drscofield | 2009-05-25 21:27:17 +0900 (Mon, 25 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
oops: wrong &amp;quot;path&amp;quot; in addin.xml&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9670 | lbsa71 | 2009-05-25 20:43:56 +0900 (Mon, 25 May 2009) | 1 line&lt;br /&gt;
&lt;br /&gt;
* Upped version number to 0.6.5&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
r9669 | drscofield | 2009-05-25 20:32:31 +0900 (Mon, 25 May 2009) | 3 lines&lt;br /&gt;
&lt;br /&gt;
Revert &amp;quot;From: Chris Yeoh &amp;lt;cyeoh@au1.ibm.com&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This reverts r9666. for some reason the mysql update does not work.&lt;br /&gt;
&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/0.7_Release</id>
		<title>0.7 Release</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/0.7_Release"/>
				<updated>2012-03-04T07:36:10Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Major changes from 0.6.x ==&lt;br /&gt;
&lt;br /&gt;
Release 0.7 features the completed major refactoring and rearchitecting work that happened during the second half of 2009 and the first quarter of 2010. This work targeted mainly the resource services and servers previously known as UGAIM. These servers have been replaced by one single server shell called [[ROBUST]] which can now run any combination of services in it.&lt;br /&gt;
&lt;br /&gt;
The standard opensim release includes configuration files for two deployment architectures:&lt;br /&gt;
&lt;br /&gt;
* The standalone deployment consists in having both the simulator and the services in one single process, OpenSim.exe, configured by OpenSim.ini (and included .inis under bin/config-include).&lt;br /&gt;
* The grid deployment has 1 ROBUST server process (Robust.exe) running all services, configured by Robust.ini (or Robust.HG.ini); and one or more simulators (OpenSim.exe), each configured by OpenSim.ini (and included .ini files under bin/config-include).&lt;br /&gt;
&lt;br /&gt;
Users and distributors of OpenSimulator can deviate from these pre-existing configurations in many ways. Specifically, large grids will benefit from splitting the single ROBUST server into several ROBUST servers, each running a collection of services. Instructions for how to do that are found elsewhere. (Think of the ROBUST server as an Apache server, to which you can load service modules)&lt;br /&gt;
&lt;br /&gt;
The services themselves have been reconceptualized; we now have the following set of main services: &lt;br /&gt;
&lt;br /&gt;
* Assets -- the asset store &lt;br /&gt;
* Authentication -- passwords and auth tokens &lt;br /&gt;
* Authorization -- access control &lt;br /&gt;
* Avatar -- the visual representation of users, formerly known as &amp;quot;avatar appearance&amp;quot; &lt;br /&gt;
* FreeSwitch -- voice &lt;br /&gt;
* Friends -- social net &lt;br /&gt;
* Gatekeeper -- hypergrid foreign users control &lt;br /&gt;
* Grid -- maps map locations to IPs and regions &lt;br /&gt;
* Grid User -- grid-local information about users &lt;br /&gt;
* Inventory -- the inventory store &lt;br /&gt;
* Login -- the login service &lt;br /&gt;
* Presence -- tracks where in the grid user agents are &lt;br /&gt;
* User Accounts -- administrative info about users &lt;br /&gt;
* User Agents -- hypergrid local users protection&lt;br /&gt;
&lt;br /&gt;
The simulators access these services through abstract interfaces, therefore being isolated from implementation details. The services are seamlessly instantiated as plugins in any process, namely ROBUST server shells and the simulators processes themselves, which means that we have complete reuse of service code between standalone and grid configurations. The plugin specification is done in configuration files (.ini). Moreover, access to remote services is also seamlessly achieved through the instantiation of stubs (aka service connectors) as plugins; again, the specification of which stubs the simulators use is done externally in configuration files (.ini).&lt;br /&gt;
&lt;br /&gt;
This layering allows for alternative third-party implementations of the entire resource service infrastructure without having to affect one line of code in the simulator, and simply using different ini files. Starting in this release, there is an alternative infrastructure to Robust: [http://code.google.com/p/openmetaverse/ SimianGrid], a project separate from OpenSimulator. The standard OpenSimulator release includes simulator's connectors and configuration files for the SimianGrid, but that infrastructure is not distributed with OpenSim, only Robust is.&lt;br /&gt;
&lt;br /&gt;
== Database changes ==&lt;br /&gt;
&lt;br /&gt;
[[File:DB-0.7.jpg|400px|right|(click to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
[[File:DB-0.7-old-tables.jpg|400px|right|(click to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
The database schema has changed considerably from previous releases. The top picture on the right shows the entire set of tables for a clean installation of the 0.7 release with MySql. The bottom picture shows the new tables as well as the tables that existed in previous versions of OpenSimulator and that are now obsolete, stroked in red. OpenSimulator does not drop the old tables automatically, for obvious reasons. Once you are sure your data migration was successful, you can then drop the obsolete tables manually.&lt;br /&gt;
&lt;br /&gt;
In the picture on top, the tables are grouped into 2 catalogs, the service-db and the simulator-db, corresponding to the data managed by the resource services (the ConnectionString under the [DatabaseService] section) and the data managed by the simulators (the connection_string under [Startup] section), respectively. &lt;br /&gt;
&lt;br /&gt;
As before, you have a lot of freedom to define how the data is organized, so, for example you might have one single catalog with all the tables (like the organization shown in the picture on the bottom). In any case, after a clean installation of release 0.7, there should be all these tables in your DB.&lt;br /&gt;
&lt;br /&gt;
For SQLite, the tables are split among several .db files under the bin directory. Here are the SQLite .db files that a clean install of 0.7 should produce:&lt;br /&gt;
&lt;br /&gt;
 $ ls -l *.db&lt;br /&gt;
 ----------+ 1 crista None 6555648 Jun 14 08:15 Asset.db&lt;br /&gt;
 ----------+ 1 crista None  564224 Jun 14 08:15 OpenSim.db&lt;br /&gt;
 ----------+ 1 crista None    5120 Jun 14 08:15 auth.db&lt;br /&gt;
 ----------+ 1 crista None    4096 Jun 14 08:14 avatars.db&lt;br /&gt;
 ----------+ 1 crista None    4096 Jun 14 08:14 friends.db&lt;br /&gt;
 ----------+ 1 crista None    4096 Jun 14 08:14 griduser.db&lt;br /&gt;
 ----------+ 1 crista None   26624 Jun 14 08:15 inventory.db&lt;br /&gt;
 ----------+ 1 crista None       0 Jun 14 08:14 inventoryStore.db&lt;br /&gt;
 ----------+ 1 crista None    4096 Jun 14 08:15 userprofiles.db&lt;br /&gt;
&lt;br /&gt;
With SQLite, the simulator data is in OpenSim.db; the service data is in all the other files. inventoryStore.db has to do with migrations of inventory from older OpenSimulator releases; on a fresh install, this file is created but is has no data, you can safely delete it afterward.&lt;br /&gt;
&lt;br /&gt;
== Hypergrid changes ==&lt;br /&gt;
&lt;br /&gt;
The Hypergrid underwent considerable changes to make it more secure. 0.7 features HG1.5, an interoperability design that is as secure as it can be while continuing to assume the use of the regular Linden viewer. Here are the highlights with respect to security.&lt;br /&gt;
&lt;br /&gt;
'''HG Teleports: The Gateway'''&lt;br /&gt;
&lt;br /&gt;
HG teleports are now done through the Gateway service, as opposed to being done directly between the departing and the receiving simulators. The flow is like this: user U is in sim A of grid G1, and wants to HG TP to sim B of grid G2; sim A posts the user agent to the Gateway service of G2; after verifying a few things, and making sure this is a genuine agent for user U, the Gateway service in G2 logs in the user's presence in the local grid as a valid grid user, and posts the agent to sim B; sim B in G2 then contacts Sim A in G1 telling it it can delete the agent; at that point sim2 logs off user U from G1.&lt;br /&gt;
&lt;br /&gt;
The posting of foreign agents directly to simulators of a grid, without passing through the Gateway, will fail.&lt;br /&gt;
&lt;br /&gt;
In 0.7, the Gateway is still not performing authorization (i.e. access control for foreign users based on grid-specific policies), but that step is now possible, and will be introduced in a future release.&lt;br /&gt;
&lt;br /&gt;
'''User Agents Verification'''&lt;br /&gt;
&lt;br /&gt;
Prior to 0.7, it was possible to impersonate users by launching agents at simulators pretending to be those users. This vulnerability was independent of the Hypergrid being active or not, it affected all publicly available simulators. With 0.7 and beyond, and for grids where all simulators are under the same authority, this vulnerability has been eliminated.&lt;br /&gt;
&lt;br /&gt;
HG1.5 includes pieces of protocol that guarantee that the user agent being launched at the Gatekeeper of a grid is indeed a genuine agent from the claimed user.&lt;br /&gt;
&lt;br /&gt;
'''Inventory Access'''&lt;br /&gt;
&lt;br /&gt;
The important thing to know about the family of viewers deriving from the Linden viewer is that they all access the user's inventory from the simulator that the user is currently on. In other words, they expect the simulators to proxy inventory, instead of accessing inventory directly from the user's inventory service. This poses serious security and privacy issues that can only be minimized but not eliminated. HG1.5 minimizes the risks as much as they can be minimized while allowing users to access their inventory everywhere. This comes at the cost of a slight UI mismatch at points.&lt;br /&gt;
&lt;br /&gt;
First, in HG1.0, the visiting simulator had the power to delete items from the user's inventory and even delete the entire user inventory. That vulnerability has been eliminated. Foreign simulators cannot delete anything from the user's inventory: &amp;quot;purge&amp;quot; actions from a foreign simulator are ignored by the user's home inventory service. This means that if the user performs a genuine &amp;quot;purge&amp;quot; while in a foreign sim, the viewer will show that the items have been purged, but upon the next login those items will be in the Trash bin again, because they weren't really deleted.&lt;br /&gt;
&lt;br /&gt;
Second, upon arrival at a foreign simulator that simulator is not given the user's root inventory folder. Instead, it is given another folder called Suitcase that will act as root folder while the user is visiting. As such, the simulator cannot recursively download the user's inventory; it can only 'see' the items and folder under the Suitcase folder. (No need to create a Suitcase folder, it will be created if it doesn't exist)&lt;br /&gt;
&lt;br /&gt;
Besides the Suitcase folder, the only items that the simulator will know about upon user's arrival are those pertaining to the user's current appearance. 'Knowing about' means that a rogue simulator can copy them; but it can never delete them, as explained above.&lt;br /&gt;
&lt;br /&gt;
Because inventory access is dictated by the viewer (i.e. by the user's actions), privacy of inventory depends on what actions the user does while visiting foreign grids. If the user does not access his/her inventory, the visiting simulator will know very little about it -- only the things stated above. On the other extreme, searching for an inventory item or opening up the texture picker makes the viewer query the entire user inventory, sending the to simulator all folder identifiers one by one; this means that the visiting simulator will 'see' the entire inventory; rogue simulators may then copy the items (again, they cannot delete them).&lt;br /&gt;
&lt;br /&gt;
While using the Linden family of viewers, HG users should be aware of these issues. Trust decisions, ultimately, fall on them. If users trust the visiting grid, they can access their inventory without worrying that it will be stolen; if, however, the users don't know much about the simulator that they are visiting, they can still visit but should abstain from performing inventory actions.&lt;br /&gt;
&lt;br /&gt;
== Groups Changes ==&lt;br /&gt;
&lt;br /&gt;
The groups module can use a PHP XmlRpc server from:&lt;br /&gt;
&lt;br /&gt;
* Flotsam project at http://code.google.com/p/flotsam/&lt;br /&gt;
* SimianGrid project at http://code.google.com/p/openmetaverse&lt;br /&gt;
&lt;br /&gt;
The same GroupsServerURI configuration variable is used for either. 0.6.x setups using the old XmlRpcServiceURL configuration variable should be changed to use GroupsServerURI as illustrated in Opensim.ini.example.&lt;br /&gt;
&lt;br /&gt;
== Profile Changes ==&lt;br /&gt;
&lt;br /&gt;
The profile feature has been discontinued from the core distribution. 3rd-party addons provide different flavors of support for this feature.&lt;br /&gt;
&lt;br /&gt;
== Bug Fixes, New Features and Assorted Changes ==&lt;br /&gt;
&lt;br /&gt;
* Impovements to sculptmap and level of detail handling.&lt;br /&gt;
* Standalone database configuration simplified.&lt;br /&gt;
* Parcel and estate bans&lt;br /&gt;
* Neighboring regions being brought up and down results in correct accessibility in the connected clients.&lt;br /&gt;
* Friends online/offline notifications are now working across the board.&lt;br /&gt;
* Object attach/drop/attach correctly working.&lt;br /&gt;
* Inventory folder 'wear' working correctly.&lt;br /&gt;
* Inventory accept/decline notifications working correctly.&lt;br /&gt;
* Eliminated deadlock affecting scripts startup. This deadlock showed more often in certain mono versions. The same code was responsible for a CPU spike at region startup, which is now under control.&lt;br /&gt;
* Megaregion prims now in place after unclean shutdown. They used to be missing.&lt;br /&gt;
* Several permissions vulnerabilities fixed.&lt;br /&gt;
* Allow use of old angle rules PSYS_SRC_INNERANGLE and PSYS_SRC_OUTERANGLE in llParticleSystem().&lt;br /&gt;
* Bug fix in llRot2Euler()&lt;br /&gt;
* llVecNorm() now returns a zero-length vector when one is supplied as input.&lt;br /&gt;
* Fixed problem where &amp;quot;Adult&amp;quot; regions were reported as being of type &amp;quot;Unknown&amp;quot;&lt;br /&gt;
* Fixed Copy on Ray, Drag Copy and other little things.&lt;br /&gt;
* Make drag copy and copy-on-ray handle friends list perms properly.&lt;br /&gt;
* Added checks to XInventory DB layer to truncate names and descriptions, so they fit their sizes in the DB.&lt;br /&gt;
* Guarded prioritizer agains null values as those produced by a bullet dying before it can be updated&lt;br /&gt;
* Security fix: Allow only textures to be fetched using HTTP texture cap&lt;br /&gt;
* Fixed faulty profile cut parameter checking in llSetPrimitiveParams()&lt;br /&gt;
* Fixed attachments coming back upon being detached in neighbouring regions and crossing.&lt;br /&gt;
* Added CHANGED_TELEPORT event trigger upon inter-sim teleports.&lt;br /&gt;
* Prevented region crossings from screwing up complex attachments by preserving link numbers.&lt;br /&gt;
* Added ability to load IARs directly from URIs&lt;br /&gt;
* Added prim prioritization according to several schemes (configurable)&lt;br /&gt;
* Fixed spamming the assets table with map tiles.&lt;br /&gt;
* Corrected an invalid construction of Primitive.TextureEntry&lt;br /&gt;
* Added LightShare scripting&lt;br /&gt;
* Added SimianGrid connectors&lt;br /&gt;
* &amp;quot;Share with group&amp;quot; implemented for object inventory items. This only works if you're using a groups module with OpenSimulator.&lt;br /&gt;
* Added HTTP texture retrieval.&lt;br /&gt;
* Fixes to allow Linden Lab's viewer 2 to work, though some new features of this viewer (e.g. shared media/media on a prim) are not yet implemented.&lt;br /&gt;
* Added --skip-assets option to load oar command. This allows an oar to be loaded without loading its assets, which can be quicker if the assets are already known to be in the database.&lt;br /&gt;
* Various core performance improvements.&lt;br /&gt;
* Various core stability improvements.&lt;br /&gt;
&lt;br /&gt;
* Master Avatar no longer in use. Upon creation of a new region, the user is prompted for the region owner and estate information. In standalone configurations, the region owner account is created if it doesn't exist; in grid configurations, the region owner account must already have been created.&lt;br /&gt;
&lt;br /&gt;
= Upgrading from older releases =&lt;br /&gt;
&lt;br /&gt;
Upgrading the database from older releases is done automatically when OpenSimulator 0.7 is first run; no special provisions are required. However, we very strongly recommend that you backup your database first, in case something goes wrong during the migration process.&lt;br /&gt;
&lt;br /&gt;
Configuration files, on the other hand, have changed in 0.7 compared with 0.6 versions. Simply copying old configuration files can result in strange errors. We recommend that you start afresh with the OpenSim.ini.example and example files in bin/config-include and manually move accross any changes that you've made to the default configuration.&lt;br /&gt;
&lt;br /&gt;
== Standalone Deployments ==&lt;br /&gt;
&lt;br /&gt;
For standalones, there is no noticeable difference in the mode of operation. The main configuration file is OpenSim.ini, as before; make sure it exists and that is readable. If you are upgrading from 0.6.[7-8-9], you should already know about config-include/StandaloneCommon.ini. If you are upgrading from older releases, please be aware that this additional configuration file is needed. Make sure it exists and that it is readable. There are .example files for both of these. &lt;br /&gt;
&lt;br /&gt;
There were several changes and additions to the configuration files. As such, it is better that you start with the given .example files and customize from them, as opposed to upgrading your existing ini files.&lt;br /&gt;
&lt;br /&gt;
== Grid Deployments ==&lt;br /&gt;
&lt;br /&gt;
The deployment model for grids has changed considerably, as explained before, so you need to acquire the know-how for operating in this post-0.7 model. The most important change is this: '''none of the UGAIM servers exist any longer'''; they have been replaced by one single server shell, Robust.exe, configured by one single configuration file, Robust.ini (or Robust.HG.ini). There are .example files provided. Copy one of them, and make the appropriate customizations. Robust does not depend on OpenSim.ini, only on Robust.ini.&lt;br /&gt;
&lt;br /&gt;
 Robust.exe -inifile=Robust.HG.ini&lt;br /&gt;
 or&lt;br /&gt;
 Robust.exe -inifile=Robust.ini&lt;br /&gt;
&lt;br /&gt;
On the simulators' side, the operation is the same as before. The main configuration file is OpenSim.ini, as before; make sure it exists and that is readable. If you are upgrading from 0.6.[7-8-9], you should already know about config-include/GridCommon.ini. If you are upgrading from older releases, please be aware that this additional configuration file is needed. Make sure it exists and that it is readable. There are .example files for both of these. &lt;br /&gt;
&lt;br /&gt;
It is better that you start with the given .example files and customize from them, as opposed to upgrading your existing ini files.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
When migrations fail, the migration number is incremented anyway. If one of your migrations fail, notice which number it was, and to which table it pertained to. Then, login to the DB and set the version number of the corresponding store to the number just before the failed migration. &lt;br /&gt;
&lt;br /&gt;
For example, if there is a failure in migration 8 for the assets table, issue this command in the DB:&lt;br /&gt;
 &amp;gt; UPDATE Migrations SET version=7 WHERE name='AssetStore';&lt;br /&gt;
Then run Robust/OpenSim again.&lt;br /&gt;
&lt;br /&gt;
The very last resort is to perform the migration manually, i.e. login to the DB server and issue the offending statement directly there.&lt;br /&gt;
&lt;br /&gt;
See also [http://opensimulator.org/mantis/view.php?id=4875 this bug report] for useful tips related to account migration problems.&lt;br /&gt;
&lt;br /&gt;
[[Category:Release Notes]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E9%96%A2%E9%80%A3%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2</id>
		<title>関連ソフトウェア</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E9%96%A2%E9%80%A3%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2"/>
				<updated>2012-03-04T07:08:59Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dependant Software ==&lt;br /&gt;
* [http://libsecondlife.org libopenmetaverse]&lt;br /&gt;
* [http://www.mono-project.com mono]&lt;br /&gt;
* [http://nant.sourceforge.net nant]&lt;br /&gt;
* [http://dev.mysql.com/ MySQL]&lt;br /&gt;
* [http://www.ode.org ODE]&lt;br /&gt;
* [http://www.realxtend.org realXtend]&lt;br /&gt;
* [http://subversion.tigris.org Subversion]&lt;br /&gt;
* [http://xmlrpccs.sf.net XmlRpcCS]&lt;br /&gt;
* [http://logging.apache.org/log4net log4net]&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator Viewers ==&lt;br /&gt;
* [http://get.secondlife.com Official Second Life™ Viewer]&lt;br /&gt;
* [http://opensim-viewer.sourceforge.net Hippo Viewer]&lt;br /&gt;
* [http://imprudenceviewer.org Imprudence Viewer]&lt;br /&gt;
* [http://www.meerkatviewer.org Meerkat Viewer]&lt;br /&gt;
* [http://www.realxtend.org realXtend Viewer]&lt;br /&gt;
* [http://www.singularityviewer.org Singularity Viewer]&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator Forge Projects ==&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/osinstaller OpenSimulator Installers]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/opensim-viewer Hippo OpenSimulator Viewer]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/opensimwi/ OpenSimWi(Redux)]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/openterrains/ Open Source Terrain Textures]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/ogp/ OGP Patches]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/xenki/ Xenki Viewer]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/ostray/ OSTray]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/sllauncher/ SL Launcher]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/openusermanual/ Open User Manual]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/deepservers/ DeepServer (ASP.NET Grid Server)]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/modrex/ realXtend Modules]&lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/currency/ DTL Currency Processing]&lt;br /&gt;
&lt;br /&gt;
== Other related software ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.ics.uci.edu/~lopes/terraingen/ Terraingen] - 地形データの生成ツール &lt;br /&gt;
* [[RegionGenerator]] - 地形データ（XML）の生成ツール &lt;br /&gt;
* [http://www.secondinventory.com/ Second Inventory] - MS Windowsベースのオブジェクトバックアップ・リストア用ソフトウェア．フルパーミッションのオブジェクト（プリム）のバックアップとリストアが可能．Second Life™ や OpenSimで使用できる．有料． &lt;br /&gt;
* [http://www.metabolt.net/ METAbolt] - テキストベースの Viewer&lt;br /&gt;
&lt;br /&gt;
* [http://3di-opensim.com/ 3Di OpenSimulator Enterpise] - OpenSimをベースにした 3Di社の商用サービス &lt;br /&gt;
* [http://3di-rei.org/ 3Di Viewer Rei] - 3Di社が提供する WEBブラウザベースのオープンソースViewer.&lt;br /&gt;
&lt;br /&gt;
* [http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?sl_proxy sl_proxy] - ファイアウォール内から Second Life™ や OpenSimに接続するためのプロキシシステム &lt;br /&gt;
* [http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?XoopenSim XoopenSim] - Xoops Cube用OpenSimulator WEBインターフェイス．[http://forge.opensimulator.org/gf/project/opensimwi/ OpenSimWi(Redux)] を Xoops Cube用モジュールとして改造したもの． &lt;br /&gt;
* [http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?OpenSim%2FMoneyServer Money Server (NSL Version)] - OpenSimulator のマネーサーバである [http://forge.opensimulator.org/gf/project/currency/ DTL Currency Processing] を Linux/Unix専用に改造したもの +α． &lt;br /&gt;
* [http://www.nsl.tuis.ac.jp/xoops/modules/d3downloads/index.php?page=singlefile&amp;amp;cid=8&amp;amp;lid=11 OpenSimulator 0.6.8用非公式NSLパッチ] - &amp;lt;strike&amp;gt;何もない領域とSIMとの境界でアバタが奈落に落ちていく現象，&amp;lt;/strike&amp;gt;装着したオブジェクトが次回ログイン時に外れるバグなどを修正．&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[メインページ]]&lt;br /&gt;
{{DEFAULTSORT:かんれん}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E8%A8%AD%E5%AE%9A</id>
		<title>設定</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E8%A8%AD%E5%AE%9A"/>
				<updated>2012-03-04T07:08:51Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Configuration}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== OpenSimulator シミュレータ設定ファイル ==&lt;br /&gt;
地域シミュレータの設定は OpenSim.ini と呼ばれるファイルで行われます。このファイルは SIM がスタンドアロンモードで動作していてもグリッドモードで動作していても同じように使用されます。このファイルは config-include/ ディレクトリの中にある追加の設定情報を参照します。各種設定についての情報は OpenSim.ini ファイル自体にあります（または OpenSim.ini.example が参考となります）。&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini という名前は、コマンドライン引数で変更される場合があります。&lt;br /&gt;
&lt;br /&gt;
INI ファイルを 2 つのファイルに分けて配布することができます。 OpenSimulator を複数起動して、一部の設定以外は全く同じ設定にしたいときに便利です。マスターファイルが最初に呼ばれ、 INI ファイルが次に呼ばれます。 INI ファイルに記述された設定はマスターファイルに記述された設定を上書きします。マスターファイルには INI ファイルと同じフォーマットで同じキーワードで書かれていますので、INI ファイルについての説明がマスターファイルについてもあてはまります。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 日本語訳だけに存在するリンク ここから --&amp;gt;&lt;br /&gt;
=== 各設定ファイルの日本語訳 ===&lt;br /&gt;
* [[日本語訳(OpenSim.ini.example)|bin/OpenSim.ini.example]]&lt;br /&gt;
* [[日本語訳(Robust.ini.example)|bin/Robust.ini.example]]&lt;br /&gt;
* [[日本語訳(StandaloneCommon.ini.example)|bin/config-include/StandaloneCommon.ini.example]]&lt;br /&gt;
* [[日本語訳(GridCommon.ini.example)|bin/config-include/GridCommon.ini.example]]&lt;br /&gt;
* [[日本語訳(FlotsamAssetCache.ini.example)|bin/config-include/FlotsamAssetCache.ini.example]]&lt;br /&gt;
* [[日本語訳(CenmoeAssetCache.ini.example)|bin/config-include/CenmoeAssetCache.ini.example]]&lt;br /&gt;
&amp;lt;!-- 日本語訳だけに存在するリンク ここまで --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== データベース ==&lt;br /&gt;
OpenSimulator は以下のデータベースエンジンをサポートします。設定の詳細は、 OpenSim.ini.example ファイルや、その他 bin/config-include にある各種サンプルファイルにあります。各データベースの設定の詳細は [[Database Settings]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
* '''SQLite''' （標準） - OpenSimulator にバンドルされている、軽いデータベースで、特に設定をすることなく使用できます。手っ取り早く立ち上げるためのオプションであり、商用利用には適していません。MySQL に比べて超遅いです。ここに書かれている機能の中には（例えばアタッチメントの不揮発化など）、完全に実装されていないものがあります。&lt;br /&gt;
* '''MySQL 5.1''' （完全にサポートされています）- これは推奨のデータベースで、本格的に使用したり、小さなスタンドアロンアプリケーションを作成したりする場合に適しています。&lt;br /&gt;
::*'''OpenSimulator 0.7.1:''' そのままの状態で MySQL 5.5 をサポートします。&lt;br /&gt;
::*'''64 ビット版 Windows:''' &amp;amp;nbsp;現在、MySQL 5.5 を Windows x64 システムで動作させる場合に、未解決のバグ [http://opensimulator.org/mantis/bug_view_advanced_page.php?bug_id=5294 bug_id=5294] が発生することがわかっています。&lt;br /&gt;
::*'''OpenSimulator 0.7.0.2:''' &amp;amp;nbsp;MySQL 5.1.55 と 0penSim 0.7.0.2 の組み合わせで問題が発生すると、ユーザが報告しています。詳細は [http://opensim-users.2152040.n2.nabble.com/OpenSim-1-7-0-2-and-MySQL-Versions-td6155064.html this thread] を参照してください。この問題は MySql.Data.dll のアップデートされたバージョンを使用するか、MySQL の古いバージョン、例えば [http://downloads.mysql.com/archives.php?p=mysql-5.1&amp;amp;v=5.1.52 MySQL 5.1.52] をインストールして、OpenSimulator 0.7.0.2 と共存させるかすれば解決します。&lt;br /&gt;
&lt;br /&gt;
* '''MSSQL''' (一部サポートされています) - 最近の OpenSimulator の機能の中には実装されていないものがあります。&lt;br /&gt;
&lt;br /&gt;
== スタンドアロン vs グリッド ==&lt;br /&gt;
最初のうちは、グリッドに接続したりグリッドを作ったりするまでは、 OpenSimulator をスタンドアロンモードで動かすことをお薦めします。OpenSimulator はバイナリ・ディストリビューションで何も設定しないとスタンドアロンモードで動作します。&lt;br /&gt;
&lt;br /&gt;
OpenSimulator 設定は地域（地域シミュレータによって動作する）とバックエンドデータサービス（ユーザ、アセット、インベントリの管理など）で構成されています。&lt;br /&gt;
&lt;br /&gt;
'''スタンドアロンモード'''で動作するシステムでは、 OpenSim.exe を起動すると、地域シミュレータと全てのデータサービスが同一プロセスで動作します。このモードでは、地域を好きなだけ起動させることができますが、マシンは１つに制限されます。&lt;br /&gt;
&lt;br /&gt;
[[Image:Opensim-standalone.png|frame|center|OpneSim がスタンドアロンモードで動作しています。シミュレータとサービスが両方とも同じプロセス (OpenSim.exe) で動作します。]]&lt;br /&gt;
&lt;br /&gt;
'''グリッドモード'''では、データサービスは地域サーバプロセスから分離されています。その代わり、それぞれ Robust.exe と呼ばれる実行可能プログラムで動作します。Robust シェルは全てのサービスを動作させたり、任意の数の Robust インスタンスに分割して動作させたりすることができます。これにより、必要であれば、全く別のマシンで動作させることもできます。このモードでは、 OpenSim.exe は単なる地域サーバとして動作して、１つ以上の地域と分離したデータサービスとの間の通信を受け持ちます。現在のところ、 OpenSim.exe の地域シミュレータを別々のマシンで複数立ち上げることができます。&lt;br /&gt;
&lt;br /&gt;
[[Image:Opensim-grid-simple.png|frame|center|OpenSimulator がグリッドモードで動作しています。この例の場合だと、全てのサービスが Robust.exe プロセスで動作します。OpenSim.exe の複数のコピー (たいてい、別のマシンで動作しています) がみんなで、同じ一連の共通サービスを利用します。]]&lt;br /&gt;
&lt;br /&gt;
グリッドモードで動作させるのは、スタンドアロンモードで動作させるより難しいです。 UUID 、 XY座標、サーバハンドシェークパスワード、不動産や不動産オーナー、その他諸々の設定についての知識が必要です。設定は、注意深く、忍耐強く行わなければなりません。あなたがものすごく忍耐強く器用な人でなければ、グリッドモードで動作させようとしないことを強くお薦めします。&lt;br /&gt;
&lt;br /&gt;
= OpenSimulator をスタンドアロンモードで動作させる =&lt;br /&gt;
OpenSimulator のバイナリディストリビューションをスタンドアロンの設定で動作させるのは比較的単純です。デフォルトでそのように設定されているからです。逆に、もしソースディストリビューションをGit リポジトリから取得してビルドするのなら、以下の手順が必要となります。&lt;br /&gt;
&lt;br /&gt;
# bin/OpenSim.ini.example ファイルを bin/OpenSim.ini にコピーします。これは 、3D シミュレータ自体を設定するものです。&lt;br /&gt;
# bin/config-include/StandaloneCommon.ini.example ファイルを bin/config-include/StandaloneCommon.ini にコピーします。これは、スタンドアロン設定で使用される、プロセスの内部にあるサービスを設定するものです。&lt;br /&gt;
# OpenSim.ini のファイルの最後の方にある [Architecture] セクションで、 Standalone.ini の行のコメントを外します。行のコメントアウト状態を解除するには、行の先頭にあるセミコロン (;) を外して、次のような感じにします。&lt;br /&gt;
&lt;br /&gt;
 Include-Architecture = &amp;quot;config-include/Standalone.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
OpenSim.exe を起動すると、 OpenSimulator が起動したことになります。しかしその前に、関連するモジュールを全部インストールしておく必要があります。詳細は、[[動作環境]] を参照してください。その後、コマンドプロンプト (Windows の場合、スタートメニュー &amp;gt; ファイル名を指定して実行... &amp;gt; cmd) を開き、OpenSim/bin ディレクトリに移動します。&lt;br /&gt;
&lt;br /&gt;
'''32 ビット版 Windows''' のコマンドプロンプトでは、&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''64 ビット版 Windows''' では、まだ ODE が 64 ビットモードでコンパイルされていないため、デフォルトの ODE 物理エンジンを使う場合は次のようにして実行します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 OpenSim.32BitLaunch.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''Linux''' では、次のようにして実行します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 mono OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ODE 物理エンジンを使う場合は、32 ビットモードでも 64 ビットモードでもこの手順で起動します。&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator を最初に起動する ==&lt;br /&gt;
&lt;br /&gt;
OpenSimulator を最初に起動すると、いくつかの質問がコンソールに表示され、あなたに代わって１個の地域を設定してくれます。入力した設定内容は bin/Regions/Regions.ini に記載され、後日変更が必要になったときに編集できるようになっています。&lt;br /&gt;
&lt;br /&gt;
多くの質問にはデフォルトの答えがあります。ここで、質問の意味を説明します。&lt;br /&gt;
&lt;br /&gt;
* '''New region name'''&lt;br /&gt;
::地域の名前です。空白にしないでください！&lt;br /&gt;
* '''Region UUID'''&lt;br /&gt;
::地域のユニークな ID です。よっぽどのことがない限り、角括弧に囲まれて表示されている、ランダムに生成されたデフォルト値をそのまま採用すればよいでしょう。既にある地域データに対して設定を行おうとしている場合のみ、やってはいけません。しかし、このケースではおそらく Regions.ini ファイルを直接編集したほうがいいと思うでしょう。&lt;br /&gt;
* '''Region Location'''&lt;br /&gt;
::これはグリッドの中における地域の位置です。スタンドアロンモードではデフォルト値 (1000,1000) のままにするほうが安全です。後で Regions.ini に別の地域を追加するとき、違うグリッド座標 (1000,1001など) にする必要が出てくるでしょう。 OpenSimulator の地域は 65536 × 65536 のグリッドの中のどこにでも設置することができますが、[[ハイパーグリッド]] 対応地域では地域の位置に関して特別な考慮が必要です。詳しくは[[ハイパーグリッドのインストールと運用#4096 の地域制限]]を参照してください。&lt;br /&gt;
* '''Internal IP address'''&lt;br /&gt;
::これは常に 0.0.0.0 でなければなりません（0.0.0.0 は「全てのインターフェースの接続を監視する」という意味で、要はワイルドカードです）。UDP 接続を 1 つのネットワークインターフェースだけに限定したい場合は、IP アドレスを明示的に指定しましょう。このアドレスは内部でのみ使用されます - '''External host name''' だけが、ビューアに送信されます（ので、大きな影響をもつものとなっています）。&lt;br /&gt;
* '''Internal port'''&lt;br /&gt;
::これはクライアント接続の受け口となる IP ポートです。この名前は少し誤解を招きがちです。これは内向きだけでなく、外向きの通信にも（例えば Second Life ビューアなどで）使用されるからです。好きなポートを指定して構いませんが、 9000 にしておくのが安全です。サーバ上の地域には、それぞれ別々のポートが設定されていなければなりません。&lt;br /&gt;
* '''Allow alternate ports'''&lt;br /&gt;
::これは現在試行中です。デフォルトの False のままにしてください。&lt;br /&gt;
* '''External host name'''&lt;br /&gt;
::これをデフォルトの 'SYSTEMIP' のままにすると、マシンの LAN ネットワークアドレス（例えば 192.168.1.2) となります。 LAN の中からのみ接続する場合は、この設定で大丈夫です。インターネット上のクライアントから接続させる場合は、これはルータの外部 IP アドレスにしなければなりません。 Fully Qualified Domain Names (FQDNs) も使用されますが、ビューアに送信される前に IP アドレスに変換されます。&lt;br /&gt;
&lt;br /&gt;
OpenSimulator 0.6.9 以前では以下も質問されます。&lt;br /&gt;
&lt;br /&gt;
* '''Master Avatar UUID'''&lt;br /&gt;
::これはレガシーな OpenSimulator 機能で、 00000000-0000-0000-0000-000000000000 のままで結構です。後々、地形編集で問題が発生したら、Regions.ini でこれを自分のアバターの UUID に変更するとよいでしょう。&lt;br /&gt;
* '''Master Avatar first name'''&lt;br /&gt;
::マスターアバターを指定するもう一つのやり方です。 UUID でなくアバター名で指定します。ここでエンターキーを押すと、このフィールドと last name フィールドが空となります。デフォルトの空白のままで結構です - これは後からいつでも Regions.ini ファイルで変更できます。&lt;br /&gt;
* '''Master Avatar last name'''&lt;br /&gt;
::マスターアバターのラストネームです。&lt;br /&gt;
* '''Master Avatar sandbox password'''&lt;br /&gt;
::マスターアバターのパスワードです。&lt;br /&gt;
&lt;br /&gt;
OpenSimulator 0.7 以降では、OpenSimulator はセットアップの過程で、各地域を不動産(Estate)に関連づけるための質問をしてきます。不動産を作成する必要がある場合は、不動産管理者(Estate Manager)を作成するためにさらに質問をしてきます。スタンドアロンモードの場合、不動産管理者はセットアップの過程で作成されます。&lt;br /&gt;
&lt;br /&gt;
マスターアバター（0.6.9 の場合）や不動産管理者（0.7 以降）を設定するのに使ったアカウント情報を忘れないようにしてください。初期状態ではこのユーザだけが地域のインワールド設定を行うことができるようになります。これは、最初にログインしてみる際に使うユーザアカウントにもなります。&lt;br /&gt;
&lt;br /&gt;
[[地域の設定]] に、質問によって生成された Regions.ini ファイルについての追加情報があります。&lt;br /&gt;
&lt;br /&gt;
不動産管理者以外のユーザを作成したいときは、サーバコンソールに次のように入力します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 create user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ユーザ作成に必要な（ファーストネーム、ラストネーム、パスワードなどの）質問をしてきます。&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator に接続する ==&lt;br /&gt;
&lt;br /&gt;
自分のユーザ名で新しい SIM に接続するには、次のコマンドライン引数で Second Life ビューアを起動します。&lt;br /&gt;
&lt;br /&gt;
'''OpenSimulator を同じマシンにあるクライアント:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 -loginuri http://127.0.0.1:9000/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''OpenSimulator と同じ LAN ネットワークにあるクライアント:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 -loginuri http://lan_ip:9000/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''他のマシンや、インターネット上にあるクライアント:'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 -loginuri http://external_ip:9000/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
それから先の手順で設定したユーザ名とパスワードを入力すると、新しいユーザでログインできるはずです。&lt;br /&gt;
&lt;br /&gt;
「外部の」設定を使ってビューアとサーバを同じマシン (LAN) で動作させる場合は、[http://osgrid.org/forums/viewtopic.php?f=5&amp;amp;t=400&amp;amp;start=0&amp;amp;st=0&amp;amp;sk=t&amp;amp;sd=a ループバック] 問題に気をつけてください。&lt;br /&gt;
（&amp;lt;u&amp;gt;'''地域のハンドシェークで永遠に待たされることになります'''&amp;lt;/u&amp;gt;。） [[Troubleshooting/ja|トラブルシューティングのヒント]] も参照してください。接続に関して問題がある場合は、[[Network Settings|必ずネットワーク設定のページを読んでください]]。地域ハンドシェークにまつわるトラブルを理解するのに重要な資料です。&lt;br /&gt;
&lt;br /&gt;
= OpenSimulator をグリッドモードで動作させる =&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
[[Image:Exclamation.png|left]]&lt;br /&gt;
注: 0.7 は全てのサービスを ROBUST サーバシェルに完全に移行した最初の OpenSimulator リリースです。0.6.9 から使っていた OpenSim.Grid.UserServer.exe や MessageServer.exe はもう必要ありません。詳細は、[[0.7 Release|0.7 Release Notes]] を確認してください。OpenSimulator 0.6.9 以前のグリッドサービスのセットアップ方法については、 [[OpenSim 0.6.9 グリッドモード設定]] を参照してください。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
OpenSimulator をグリッドモードで動作させるのは、スタンドアロンで動作させるのよりも難しいとされています。全てが同一プロセスで動作するのではなく、バックエンドのデータサービス (アセット、インベントリなど) は、たいてい異なるマシン上にある、１つまたは複数に分かれたプロセスで動作します。この仕組みにより、複数の OpneSim.exe シミュレータ・インスタンスが同一のアセットやインベントリ・データを使用することができるようになります。&lt;br /&gt;
&lt;br /&gt;
== ステップ 1: ROBUST サービスインスタンスを設定する ==&lt;br /&gt;
&lt;br /&gt;
1.  bin ディレクトリで、Robust.ini.example を Robust.ini にコピーします。このサンプルファイルは、全てのサービスが同一の ROBUST インスタンスで動作するように設定されています。&lt;br /&gt;
&lt;br /&gt;
2.  Robust.ini の [DatabaseService] セクションを編集して、MySQL データベースを使用するようにします。MySQL だけがグリッドサービスの実行でサポートされています。&lt;br /&gt;
&lt;br /&gt;
3.  Robust.exe を起動します。&lt;br /&gt;
&lt;br /&gt;
 mono Robust.exe (Linux, BSD, Mac OS X)&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 Robust.exe (Windows)&lt;br /&gt;
&lt;br /&gt;
コンソールにエラーが (赤で) 表示されていなかったら、次の手順に進みましょう。&lt;br /&gt;
&lt;br /&gt;
4.  全ての地域は不動産 (Estate) に所属していなければなりません。また、全ての不動産にはオーナーがいて、そのユーザアカウントが OpenSimulator のユーザアカウント・サービスで有効になっているような状態でなければなりません。ROBUST コマンドコンソールで次のようにしてユーザを作成します。&lt;br /&gt;
&lt;br /&gt;
 create user&lt;br /&gt;
&lt;br /&gt;
ユーザの名前、パスワード、メールアドレス(任意)を聞いてきます。この名前は覚えておきましょう。シミュレータを最初に起動するときに必要になります。&lt;br /&gt;
&lt;br /&gt;
== ステップ 2: OpenSim.exe を設定して ROBUST サービスを利用するようにする ==&lt;br /&gt;
&lt;br /&gt;
グリッドモードでも、スタンドアロンモードと同様、3D シミュレータ自体を制御する OpenSim.ini を編集する必要があります。&lt;br /&gt;
&lt;br /&gt;
しかし、グリッドに接続するシミュレータは、config-include/StandaloneCommon.ini を編集するのではなく、config-include/GridCommon.ini ファイルを参照・編集して、ローカルのプロセス内部のサービスにではなく、ROBUST がホストするリモートのデータサービスのほうに接続する必要があります。&lt;br /&gt;
&lt;br /&gt;
これらの実施手順は、以下のようになります。&lt;br /&gt;
&lt;br /&gt;
1.  bin/OpenSim.ini.example を OpenSim.ini にコピーします。&lt;br /&gt;
&lt;br /&gt;
2.  [Architecture] セクションを OpenSim.ini で探します。以下の行だけが有効になっているような状態にしてください。 &lt;br /&gt;
&lt;br /&gt;
 Include-Architecture = &amp;quot;config-include/Grid.ini&amp;quot; (OpenSimulator 0.7.1 以降)&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 Include-Grid         = &amp;quot;config-include/Grid.ini&amp;quot; (OpenSimulator 0.7.0.2 以前)&lt;br /&gt;
&lt;br /&gt;
他はコメントアウト状態のままにしてください。&lt;br /&gt;
&lt;br /&gt;
3.  bin/config-include に移動し、GridCommon.ini.example を GridCommon.ini にコピーします。&lt;br /&gt;
&lt;br /&gt;
4.  GridCommon.ini をテキストエディタで開きます。URL がいっぱい書いてあります。それぞれの URL は、 &amp;lt;nowiki&amp;gt;http://myassetserver.com:8003, http://myinventoryserver.com:8003 &amp;lt;/nowiki&amp;gt;のような、ダミーの初期値が記載されています。それぞれを編集して、ROBUST インスタンスのアドレスを示すようにする必要があります。例えば、ROBUST をローカル IP アドレス 192.168.1.2 で動作させようとしているのなら、AssetServerURI を次のようにする必要があります。&lt;br /&gt;
&lt;br /&gt;
 AssetServerURI = &amp;quot;http://192.168.1.2:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
5.  OpenSim.exe を実行します。OpenSim.exe を最初に起動すると、スタンドアロンモードで最初に起動したときと同じように、地域の設定に関する質問をしてきます。どのように答えるかについては、スタンドアロンのセクションを参照してください。また、Regions.ini のさらに詳しい情報は、[[地域の設定]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
全てが順調に設定されれば、OpenSim.exe を起動したときにエラーが表示されないはずです。また、地域がグリッドサービスに登録された旨のログメッセージが、ROBUST コンソールに表示されるはずです。例えば、&lt;br /&gt;
&lt;br /&gt;
 21:43:45 - [GRID SERVICE]: Region t1 (176cc95e-f693-4b02-8e08-af86e2372faa) registered successfully at 256000-256000&lt;br /&gt;
 21:43:47 - [GRID SERVICE]: region t1 has 0 neighbours&lt;br /&gt;
&lt;br /&gt;
6.  クライアントでログインします。クライアントの起動オプションはこのようにします。&lt;br /&gt;
&lt;br /&gt;
 -loginuri http://192.168.1.2:8002&lt;br /&gt;
&lt;br /&gt;
loginuri はログインサービスのアドレスにする必要があります。スタンドアロンモードでは、地域シミュレータと同じアドレスで、ポートはデフォルトで 9000 でした。しかしグリッドモードでは、ROBUST がホストしているログインサービスのアドレスになります。この場合、192.168.1.2 が ROBUST インスタンスのアドレスになります。ポート 8002 は従来のグリッドログインサービスのために残してあるもので、Robust.ini.example のデフォルト値になっています。&lt;br /&gt;
&lt;br /&gt;
7.  ログインに成功すると、ログが ROBUST コンソールと(こちらはログインという行為自体に対するものです)、地域シミュレータのコンソールに (こちらはログイン処理がシミュレータにアバターを迎え入れるように指示を出したタイミングと、ビューアに地域シミュレータのアドレスを伝えたタイミングと、ビューアがシミュレータと直接やりとりするようになったタイミングで) 表示されます。&lt;br /&gt;
&lt;br /&gt;
== 自分の SIM を他人のグリッドに接続する ==&lt;br /&gt;
地域サーバ（例えば &amp;lt;tt&amp;gt;OpenSim.exe&amp;lt;/tt&amp;gt;）を設定してグリッドに接続する際は、 上の[[#ステップ 2: OpenSim.exe を設定して ROBUST サービスを利用するようにする]]に従ってください。&lt;br /&gt;
&lt;br /&gt;
既に必要なサービスがグリッドに提供されているはずです。ステップ２では、提供されたサービス接続 URL を使用する必要があります。&lt;br /&gt;
&lt;br /&gt;
bin/Regions.ini ファイル (などの地域設定ファイル) に、グリッド管理者から提供された、地域のグリッド座標を設定する必要があります。詳細は、[[地域の設定]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
= 追記 =&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
[[トラブルシューティング]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator 0.6.7 以降を 64 ビット版 Windows でを動作させる ==&lt;br /&gt;
[[Image:Exclamation.png|left]]&lt;br /&gt;
OpenSimulator 0.6.7 から、OpenSimulator のデフォルトの物理エンジンが ODE エンジンに変更されました。これは ODE が現在 OpenSimulator に同梱されている物理エンジンプラグインの中で今のところ最も先進的なものだからです。残念なことに、 64 ビット版 Windows ではライブラリの互換性がないという欠点があります。&lt;br /&gt;
&lt;br /&gt;
このため、64 ビット版 Windows のユーザは、地域シミュレータを起動する際は&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ではなく、&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 OpenSim.32BitLaunch.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
を実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
代替の方法として、基礎物理エンジンや OpenSimulator に同梱されている他の物理エンジンを使うこともできますが、ODE プラグインに比べると断然機能性の面で劣ります。&lt;br /&gt;
&lt;br /&gt;
== Mono に関する注意 ==&lt;br /&gt;
Mono を使用している場合、Mono の環境変数 MONO_THREADS_PER_CPU をデフォルトの 5 から SIM で動作する値まで増加させなければなりません。正確な数字は様々な要因によって左右されます: マシンの CPU の数、マシンの他の用途、SIM にある地域の数、隣接する SIM の数、スクリプトの数、アバターの同時滞在予定数などです。参考までに、OSGrid の Wright Plaza という、１つの SIM で１つの地域を動作させていて、約 20 名のアバターで定期的にミーティングを開いている SIM では、値は 125 にしています。&lt;br /&gt;
&lt;br /&gt;
値が小さすぎると、SIM の挙動がいろいろな点でおかしくなってきます。よくある症状は、新しいアバターがログインするときにフリーズすることです。他の症状はこれに比べればはるかに軽いです。&lt;br /&gt;
&lt;br /&gt;
例: $ export MONO_THREADS_PER_CPU=125&lt;br /&gt;
&lt;br /&gt;
== OpenDynamicsEngine を *nix で使用する際のスタック領域拡張 ==&lt;br /&gt;
OpenDynamicsEngine を *nix で使用していて問題が発生している場合は、次のコマンドでスタック領域をデフォルトよりも大きく設定してみてください。&lt;br /&gt;
&amp;lt;tt&amp;gt;ulimit -s 262144&amp;lt;/tt&amp;gt;&lt;br /&gt;
もしくは、 opensim-ode.sh で OpenSimulator を起動してください。&lt;br /&gt;
&lt;br /&gt;
== ファイアウォール ==&lt;br /&gt;
OS・ディストリビューションによっては、デフォルトでファイアウォールが稼働している場合があります。OpenSimulator にリモートのクライアントからアクセスできない場合は、設定を確認する必要があります。詳細は、[[ファイアウォール設定]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== レガシー設定に関する情報 ==&lt;br /&gt;
正確かどうかはわかりませんが、レガシー設定に関する情報について書かれているページがいくつかあります。&lt;br /&gt;
&lt;br /&gt;
[[OpenSim 0.6.6 legacy configuration information]]&lt;br /&gt;
&lt;br /&gt;
== 拡張オプションの設定 ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSimulator をさらに設定する ===&lt;br /&gt;
OpenSim.ini.example ([[日本語訳(OpenSim.ini.example)|ファイルの日本語訳]]) やその他の設定ファイルをよく見ると、膨大な数の設定可能なパラメタがあるはずです。詳しくは、 [[シミュレータ・パラメタの設定]] を参照してください。(訳注：各設定ファイルの日本語訳へのリンクは、このページの一番上の[[#パッケージ内容の日本語訳]] にあります。)&lt;br /&gt;
&lt;br /&gt;
=== OpenSim.exe コマンドラインオプション ===&lt;br /&gt;
OpenSim.exe にはコマンドラインオプションがあり、これを使って他のディレクトリから設定ファイルを読みこむといったことができます。詳細は [[OpenSim.exe Command Line Options|command line arguments]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== スクリプトエンジン ===&lt;br /&gt;
OpenSimulator は複数のスクリプトエンジンをサポートします。詳細は [[ScriptEngines]] を参照してください。何を言っているのかわからないかもしれませんが、デフォルトのスクリプトエンジンはちゃんと動くので安心してください。事実上、最近のバージョンの OpenSimulator は XEngine という１つのスクリプトエンジンしか同梱していません。&lt;br /&gt;
&lt;br /&gt;
=== 権限設定 ===&lt;br /&gt;
OpenSimulator には複雑な権限の集合があります。詳細は [[Permissions(Server)]] を参照してください。デフォルトでは、権限は地域シミュレータで有効となっていません。&lt;br /&gt;
&lt;br /&gt;
=== ログ出力 ===&lt;br /&gt;
デフォルトでは、OpenSimulator は bin ディレクトリの中の OpenSim.log と呼ばれるファイルに情報をログ出力します。必要であれば、設定方法の詳細が [[Logging]] にあります。&lt;br /&gt;
&lt;br /&gt;
=== 地域モジュールの設定 ===&lt;br /&gt;
* [[IRCBridgeModule]]&lt;br /&gt;
* [[Freeswitch Module]]&lt;br /&gt;
* [[Offline Messaging]]&lt;br /&gt;
&lt;br /&gt;
=== Web サーバや Web ページの設定 ===&lt;br /&gt;
OpenSimulator は Web サーバを同梱しており、様々なページを公開することができます。外部ファイルを表示するページもあれば、内部で生成されるページもあります。&lt;br /&gt;
* [[External Files]]&lt;br /&gt;
* [[Internally Generated]]&lt;br /&gt;
&lt;br /&gt;
=== 複数のスタンドアロン地域を同じサーバで動かすときの設定 ===&lt;br /&gt;
OpenSim.ini の 'http_listener_port' を、9000 以外の値に変更し、Regions.ini の InternalPort を 9000 以外の値に変更してください。&lt;br /&gt;
&lt;br /&gt;
= 参考情報 =&lt;br /&gt;
&lt;br /&gt;
* [http://dist.opensimulator.org/wiki/opensim-standalone.odg OpenOffice draw file for OpenSimulator standalone diagram]&lt;br /&gt;
* [http://dist.opensimulator.org/wiki/opensim-grid-simple.odg OpenOffice draw file for OpenSimulator grid diagram]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:せってい}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3(GridCommon.ini.example)</id>
		<title>日本語訳(GridCommon.ini.example)</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3(GridCommon.ini.example)"/>
				<updated>2012-03-04T07:08:39Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;このページには、config-include/GridCommon.ini.example の翻訳を載せています。&lt;br /&gt;
OpenSimulator 0.7.1 時点のものです。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[DatabaseService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ### DB を選択してください。&lt;br /&gt;
    ;&lt;br /&gt;
&lt;br /&gt;
    ; SQLite&lt;br /&gt;
    Include-Storage = &amp;quot;config-include/storage/SQLiteStandalone.ini&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    ; MySql&lt;br /&gt;
    ; ストレージに MySQL 使いたい場合は、以下のコメントを外してください。&lt;br /&gt;
    ; DB の設定情報に合わせて、接続文字列を変更してください。&lt;br /&gt;
    ;StorageProvider = &amp;quot;OpenSim.Data.MySQL.dll&amp;quot;&lt;br /&gt;
    ;ConnectionString = &amp;quot;Data Source=localhost;Database=opensim;User ID=opensim;Password=***;&amp;quot;&lt;br /&gt;
    ; MySQL を使っていて、エステートに異なるデータベースを使用したい&lt;br /&gt;
    ; 場合は、以下のコメントを外してください。&lt;br /&gt;
    ;EstateConnectionString = &amp;quot;Data Source=localhost;Database=opensim;User ID=opensim;Password=***;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[AssetService]&lt;br /&gt;
&lt;br /&gt;
    DefaultAssetLoader = &amp;quot;OpenSim.Framework.AssetLoader.Filesystem.dll&amp;quot;&lt;br /&gt;
    AssetLoaderArgs = &amp;quot;assets/AssetSets.xml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドのアセット・サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    AssetServerURI = &amp;quot;http://myassetserver.com:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[InventoryService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドのインベントリ・サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    InventoryServerURI = &amp;quot;http://myinventoryserver.com:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[GridService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドのグリッド・サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    GridServerURI = &amp;quot;http://mygridserver.com:8003&amp;quot;&lt;br /&gt;
    ;AllowHypergridMapSearch = true&lt;br /&gt;
&lt;br /&gt;
    ;; リンクされた地域の MapTile イメージの保管ディレクトリ&lt;br /&gt;
    ; MapTileDirectory = &amp;quot;./maptiles&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ; === ハイパーグリッド専用 ===&lt;br /&gt;
    ;; ここを Gatekeeper サービスのアドレスに変更してください。&lt;br /&gt;
    ;; (普通は特定の ROBUST サーバのポート 8002 に、他のサービスと&lt;br /&gt;
    ;; 同じように存在していますが、必ずしもそうとは限りません)&lt;br /&gt;
    Gatekeeper=&amp;quot;http://mygridserver.com:8002&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[AvatarService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドのグリッド・サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    AvatarServerURI = &amp;quot;http://mygridserver.com:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[PresenceService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドのプレゼンス・サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    PresenceServerURI = &amp;quot;http://mygridserver.com:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[UserAccountService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドのユーザアカウント・サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    UserAccountServerURI = &amp;quot;http://mygridserver.com:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[GridUserService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドのユーザアカウント・サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    GridUserServerURI = &amp;quot;http://mygridserver.com:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[AuthenticationService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドの認証サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    AuthenticationServerURI = &amp;quot;http://mygridserver.com:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[FriendsService]&lt;br /&gt;
    ;&lt;br /&gt;
    ; ここをグリッドのフレンド・サーバの URL に変更してください。&lt;br /&gt;
    ;&lt;br /&gt;
    FriendsServerURI = &amp;quot;http://mygridserver.com:8003&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[HGInventoryAccessModule]&lt;br /&gt;
    ;&lt;br /&gt;
    ; === ハイパーグリッド専用 ===&lt;br /&gt;
    ; ここをプロフィール・サーバの URL に変更してください。&lt;br /&gt;
    ; 他のグリッドからアクセスできる URL を指定する必要があります。&lt;br /&gt;
    ;&lt;br /&gt;
    ProfileServerURI = &amp;quot;http://mygridserver.com:8002/user&amp;quot;&lt;br /&gt;
    ;; アセットを外部から来たビジターにコピーされないようにしたい場合は、&lt;br /&gt;
    ;; 次の行のコメントを外してください。ライセンス管理されているコンテンツ&lt;br /&gt;
    ;; が SIM にある場合は、これをやっておいたほうがよいでしょう。&lt;br /&gt;
    ; OutboundPermission = False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Modules]&lt;br /&gt;
    ;; キャッシュモジュールを 0 個か 1 個選択してください。&lt;br /&gt;
    ;; 関連した設定ファイルがあれば、それも選択してください。&lt;br /&gt;
    ;; 設定の .example ファイルをコピーして .ini ファイルとし、&lt;br /&gt;
    ;; その中にある設定を変更してください。&lt;br /&gt;
&lt;br /&gt;
    AssetCaching = &amp;quot;FlotsamAssetCache&amp;quot;&lt;br /&gt;
    Include-FlotsamCache = &amp;quot;config-include/FlotsamCache.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ;AssetCaching = &amp;quot;CenomeMemoryAssetCache&amp;quot;&lt;br /&gt;
    ;Include-CenomeCache = &amp;quot;config-include/CenomeCache.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ;AssetCaching = &amp;quot;GlynnTuckerAssetCache&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ;; 必要に応じて、LLProxyLoginModule のポート番号を変更する&lt;br /&gt;
    ;; ことができます。&lt;br /&gt;
    ;Setup_LLProxyLoginModule = &amp;quot;9090/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ;; 認証は外部の PHP で行われるため、デフォルトでは有効になっていません。&lt;br /&gt;
    ;AuthorizationServices = &amp;quot;RemoteAuthorizationServicesConnector&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:にほんごやくGridCommon}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3(FlotsamAssetCache.ini.example)</id>
		<title>日本語訳(FlotsamAssetCache.ini.example)</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3(FlotsamAssetCache.ini.example)"/>
				<updated>2012-03-04T07:08:29Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;このページには、config-include/FlotsamAssetCache.ini.example の翻訳を載せています。&lt;br /&gt;
OpenSimulator 0.7.1 時点のものです。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[AssetCache]&lt;br /&gt;
    ;;&lt;br /&gt;
    ;; FlotsamAssetCache の設定&lt;br /&gt;
    ;;&lt;br /&gt;
&lt;br /&gt;
    ; キャッシュ格納ディレクトリは複数のインスタンス間で共有されます。&lt;br /&gt;
    CacheDirectory = ./assetcache&lt;br /&gt;
    ; 他の例:&lt;br /&gt;
    ;CacheDirectory = /directory/writable/by/OpenSim/instance&lt;br /&gt;
&lt;br /&gt;
    ; ログレベル&lt;br /&gt;
    ; 0 - (Error) エラーのみ&lt;br /&gt;
    ; 1 - (Info)  ヒット率統計 + レベル 0&lt;br /&gt;
    ; 2 - (Debug) キャッシュ処理 (読み書き) + レベル 1&lt;br /&gt;
    ;&lt;br /&gt;
    LogLevel = 0&lt;br /&gt;
&lt;br /&gt;
    ; ヒット率の表示頻度 (AssetRequests の X 回発行ごと)&lt;br /&gt;
    ; 0 にすると表示しません。&lt;br /&gt;
    HitRateDisplay = 100&lt;br /&gt;
&lt;br /&gt;
    ; ディスクキャッシュだけにしたい場合は、false にしてください。&lt;br /&gt;
    MemoryCacheEnabled = false&lt;br /&gt;
&lt;br /&gt;
    ; メモリにキャッシュされるアセットの保持期間 {時間} 。.5 = 30 分&lt;br /&gt;
    ; 最適化: VPS やメモリの制約が厳しいシステムでは、タイムアウトを&lt;br /&gt;
    ; .016 (1 分) に設定して導入すると、メモリにさほど影響を与えずに&lt;br /&gt;
    ; パフォーマンスを向上させることができます。&lt;br /&gt;
    MemoryCacheTimeout = 2&lt;br /&gt;
&lt;br /&gt;
    ; ディスクにキャッシュされるアセットの保持期間 {時間} 。.5 = 30 分&lt;br /&gt;
    ; 0 を指定すると、ディスクに永遠にキャッシュが残ります。&lt;br /&gt;
    FileCacheTimeout = 0&lt;br /&gt;
&lt;br /&gt;
    ; ディスク内の期限切れファイルのチェック間隔 {時間}&lt;br /&gt;
    ; 0 を指定すると、期限切れチェックを行いません。&lt;br /&gt;
    FileCleanupTimer = .166  ; だいたい 10 分ごと&lt;br /&gt;
&lt;br /&gt;
    ; WAIT_ON_INPROGRESS_REQUESTS が指定されている場合は、&lt;br /&gt;
    ; ディスクへの書き込みが完了するまでの間、リクエストスレッドを&lt;br /&gt;
    ; ブロックし続ける時間 (ミリ秒) となります。&lt;br /&gt;
    ; WaitOnInprogressTimeout = 3000&lt;br /&gt;
&lt;br /&gt;
    ; キャッシュディレクトリに作成する階層の数&lt;br /&gt;
    ; (現在指定可能な値は 1 から 3)&lt;br /&gt;
    ;CacheDirectoryTiers = 1&lt;br /&gt;
&lt;br /&gt;
    ; 1 つのパス階層に含まれる文字数。1 を指定すると 16 個の、&lt;br /&gt;
    ; 2 は 256 個の、3 は 4096 個の、4 は 65K 個のディレクトリが&lt;br /&gt;
    ; 各階層に作成されます。&lt;br /&gt;
    ;CacheDirectoryTierLength = 3&lt;br /&gt;
&lt;br /&gt;
    ; 警告レベルとするキャッシュディレクトリサイズ&lt;br /&gt;
    ;CacheWarnAt = 30000&lt;br /&gt;
&lt;br /&gt;
    ; 全ての地域に含まれる全てのアセットにディープスキャンをかけ、&lt;br /&gt;
    ; 存在するものや参照されているものを検索します。既にキャッシュに&lt;br /&gt;
    ; 存在するアセットをマーキングし、まだキャッシュされていない&lt;br /&gt;
    ; アセットをリクエストします (これらのアセットはキャッシュ&lt;br /&gt;
    ; されることになります) 。&lt;br /&gt;
    ;&lt;br /&gt;
    ; DeepScanBeforePurge = false&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:にほんごやくFlotsamAssetCache}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3(CenmoeAssetCache.ini.example)</id>
		<title>日本語訳(CenmoeAssetCache.ini.example)</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3(CenmoeAssetCache.ini.example)"/>
				<updated>2012-03-04T07:08:19Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;このページには、config-include/CenmoeAssetCache.ini.example の翻訳を載せています。&lt;br /&gt;
OpenSimulator 0.7.1 時点のものです。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[AssetCache]&lt;br /&gt;
    ;;&lt;br /&gt;
    ;; CenmoeAssetCache の設定&lt;br /&gt;
    ;;&lt;br /&gt;
&lt;br /&gt;
    ; 以下の例では 256 MB (デフォルト: 134217728)&lt;br /&gt;
    MaxSize =  268435456&lt;br /&gt;
&lt;br /&gt;
    ; キャッシュに格納できる最大アセット数 (デフォルト: 4096)&lt;br /&gt;
    MaxCount = 16384&lt;br /&gt;
&lt;br /&gt;
    ; 保持期間 - 以下の例では 1 時間 (デフォルト: 30 分)&lt;br /&gt;
    ExpirationTime = 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:にほんごやくCenmoeAssetCache}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3(BUILDING.txt)</id>
		<title>日本語訳(BUILDING.txt)</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3(BUILDING.txt)"/>
				<updated>2012-03-04T07:08:10Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|BUILDING.txt}}&lt;br /&gt;
&lt;br /&gt;
以下は、OpenSimulator を解凍したディレクトリにある BUILDING.txt を翻訳したものです。(OpenSimulator 0.7.1 現在) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
=== OpenSimulator のビルド ===&lt;br /&gt;
&lt;br /&gt;
=== Windows でビルド ===&lt;br /&gt;
&lt;br /&gt;
手順:&lt;br /&gt;
 * runprebuild.bat を実行します。&lt;br /&gt;
 * OpenSim.sln を Visual Studio .NET でロードして、ソリューションをビルドします。&lt;br /&gt;
 * bin フォルダに移動します。(&amp;quot;chdir bin&amp;quot;)&lt;br /&gt;
 * OpenSim.ini.example を OpenSim.ini にコピーして、 bin/config-include 配下にある&lt;br /&gt;
   他のファイルで必要なファイルも同様にコピーします。&lt;br /&gt;
 * OpenSim.exe を実行します。&lt;br /&gt;
&lt;br /&gt;
=== Linux でビルド ===&lt;br /&gt;
&lt;br /&gt;
要件:&lt;br /&gt;
 * Mono 2.4.2 以降&lt;br /&gt;
 * Nant 0.85 以降&lt;br /&gt;
 * Linux ディストリビューションによっては、他にパッケージをインストールしなければならないこと&lt;br /&gt;
   もあります。&lt;br /&gt;
   詳細は http://opensimulator.org/wiki/Dependencies を参照してください。&lt;br /&gt;
&lt;br /&gt;
配布物を展開した状態から:&lt;br /&gt;
 * ./runprebuild.sh&lt;br /&gt;
 * nant&lt;br /&gt;
 * cd bin &lt;br /&gt;
 * OpenSim.ini.example を OpenSim.ini にコピーして、 bin/config-include 配下にある&lt;br /&gt;
   他のファイルで必要なファイルも同様にコピーします。&lt;br /&gt;
 * mono OpenSim.exe&lt;br /&gt;
&lt;br /&gt;
=== 参考情報 ===&lt;br /&gt;
 &lt;br /&gt;
以下の情報が役に立ちます:&lt;br /&gt;
* http://opensimulator.org/wiki/Build_Instructions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:にほんごやくBUILDING}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E5%9C%B0%E5%9F%9F%E3%81%AE%E8%A8%AD%E5%AE%9A</id>
		<title>地域の設定</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E5%9C%B0%E5%9F%9F%E3%81%AE%E8%A8%AD%E5%AE%9A"/>
				<updated>2012-03-04T07:08:00Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Configuring_Regions}}&lt;br /&gt;
= OpenSimulator 0.7 以降 =&lt;br /&gt;
デフォルトでは、地域は bin/Regions ディレクトリにある Regions.ini ファイルで設定されます。&lt;br /&gt;
OpenSimulator を白紙の状態からインストールすると、一通りの質問をして、最初の地域を設定してくれます。&lt;br /&gt;
&lt;br /&gt;
以下に、Regions.ini ファイルのサンプルを掲載します。&lt;br /&gt;
&lt;br /&gt;
 [Big Fat Region]&lt;br /&gt;
 RegionUUID = 5ce85740-6460-43d3-ba4c-29207b010072&lt;br /&gt;
 Location = 1000,1000&lt;br /&gt;
 InternalAddress = 0.0.0.0&lt;br /&gt;
 InternalPort = 9000&lt;br /&gt;
 AllowAlternatePorts = False&lt;br /&gt;
 ExternalHostName = 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
これは、地域を動作させるために設定しなければならない設定項目のリストです。&lt;br /&gt;
Regions.ini ファイルがない状態で OpenSimulator を最初に起動すると、最初の地域を&lt;br /&gt;
設定するために、それぞれの設定項目に対応した質問がなされます。詳しくは、&lt;br /&gt;
[[設定#OpenSimulator を最初に起動する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; class=&amp;quot;sortable&amp;quot; width=&amp;quot;90%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 項目名&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
|[Big Fat Region]&lt;br /&gt;
|地域の名前。&lt;br /&gt;
|-&lt;br /&gt;
|RegionUUID&lt;br /&gt;
|地域の一意ＩＤ。&lt;br /&gt;
|-&lt;br /&gt;
|Location&lt;br /&gt;
|グリッドの中での地域の (x, y) 位置。&lt;br /&gt;
|-&lt;br /&gt;
|InternalAddress&lt;br /&gt;
|サーバに複数の NIC があり、OpenSimulator がリッスンする IP アドレスがどれになっても構わないのであれば、0.0.0.0 を指定します（通常の設定）。そうでなければ、IP アドレスを指定しましょう。&lt;br /&gt;
|-&lt;br /&gt;
|InternalPort&lt;br /&gt;
|クライアントの接続を受け付けるポート番号。&lt;br /&gt;
|-&lt;br /&gt;
|AllowAlternatePorts&lt;br /&gt;
|未使用。常に False にしてください。&lt;br /&gt;
|-&lt;br /&gt;
|ExternalHostName&lt;br /&gt;
|ルータの外部 IP アドレスまたは FQDN。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
他の地域を追加したい場合は、次のようにするとよいでしょう。&lt;br /&gt;
&lt;br /&gt;
* Regions.ini にセクションをもう１個追加します。&lt;br /&gt;
* bin/Regions に別の .ini ファイルを作成します。&lt;br /&gt;
* 古い形式の OpenSim.xml ファイルを作成します（現在の OpenSimulator でもまだ動作します）。&lt;br /&gt;
* もしくは、地域コマンドを地域コンソールで発行します (0.6.7 では少しバグがあるようですので、推奨しません)。&lt;br /&gt;
&lt;br /&gt;
Region.ini に２個目の地域を追加する例です。&lt;br /&gt;
&lt;br /&gt;
 [Big Fat Region]&lt;br /&gt;
 RegionUUID = 5ce85740-6460-43d3-ba4c-29207b010072&lt;br /&gt;
 Location = 1000,1000&lt;br /&gt;
 InternalAddress = 0.0.0.0&lt;br /&gt;
 InternalPort = 9000&lt;br /&gt;
 AllowAlternatePorts = False&lt;br /&gt;
 ExternalHostName = 192.168.1.2&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 [Greek Wedding]&lt;br /&gt;
 RegionUUID = 5c445740-6460-43d3-ba4c-444444445555&lt;br /&gt;
 Location = 1000,1001&lt;br /&gt;
 InternalAddress = 0.0.0.0&lt;br /&gt;
 InternalPort = 9001&lt;br /&gt;
 AllowAlternatePorts = False&lt;br /&gt;
 ExternalHostName = 192.168.1.2&lt;br /&gt;
&lt;br /&gt;
見ての通り、２番目の地域は Greek Wedding という名前で、違う UUID になっています。違う位置 (1000,1001) で違う InternalPort (9001) になっています。その他はまったく一緒です。&lt;br /&gt;
&lt;br /&gt;
新しい UUID を作成するには、手作業でひねりだすか（例えば、[0-9][A-F] の範囲で文字を１個変える）、[http://www.famkruithof.net/uuid/uuidgen uuidgen webpage] にあるジェネレータを使用するかします。Unix では、 &amp;lt;tt&amp;gt;uuidgen&amp;lt;/tt&amp;gt; コマンドを使用してもよいでしょう。&lt;br /&gt;
&lt;br /&gt;
以上の基本項目の他に、地域のプロパティを変更できる追加の設定項目があります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; class=&amp;quot;sortable&amp;quot; width=&amp;quot;90%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 項目名&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
|MaxAgents&lt;br /&gt;
|同時に地域に存在できるエージェントの最大数。デフォルトは 100 です。2011/4/21現在、git master にのみ存在します。&lt;br /&gt;
|-&lt;br /&gt;
|MaxPrims&lt;br /&gt;
|地域へ関連づけることのできるプリムの最大数。しかし、現在 OpenSimulator ではこの制限を強制的に適用しているわけではありません。Linden Lab プロトコルの制約により、表示される最大数は 45000 となっています。&lt;br /&gt;
|-&lt;br /&gt;
|PhysicalPrimMax&lt;br /&gt;
|物理プリムの最大寸法。１つの数値で、XYZ 座標に適用されます。既存プリムの大きさを変更する際にこれが影響します。デフォルトは 10 です。この設定は OpenSim.ini の [Startup] セクションに書くこともできます。地域の設定が存在すれば、それは OpenSim.ini の設定を上書きします。&lt;br /&gt;
|-&lt;br /&gt;
|NonphysicalPrimMax&lt;br /&gt;
|非物理プリムの最大寸法。１つの数値で、XYZ 座標に適用されます。既存プリムの大きさを変更する際にこれが影響します。デフォルトは 10 です。この設定は OpenSim.ini の [Startup] セクションに書くこともできます。地域の設定が存在すれば、それは OpenSim.ini の設定を上書きします。&lt;br /&gt;
|-&lt;br /&gt;
|ClampPrimSize&lt;br /&gt;
|true の場合、NonphysicalPrimMax 以上の大きさでプリムを作ろうとすると、NonphysicalPrimMax の大きさにまで縮められます。デフォルトは false です。この設定は OpenSim.ini の [Startup] セクションに書くこともできます。地域の設定が存在すれば、それは OpenSim.ini の設定を上書きします。&lt;br /&gt;
|-&lt;br /&gt;
|RegionType&lt;br /&gt;
|標準の Second Life ビューアで、地域/不動産 (Region/Estate) ダイアログの約款 (Covenant) に出てくる地域の種類 (Type) 。何に使うのかはよくわかりません。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OpenSimulator 0.6.7 から OpenSimulator 0.6.9 まで =&lt;br /&gt;
デフォルトでは、地域は bin/Regions ディレクトリ内の Regions.ini に設定値が格納されます。OpenSimulator のインストールをはじめて行うと、一通りの質問をして、最初の地域を設定してくれます。&lt;br /&gt;
&lt;br /&gt;
Regions.ini の例です。&lt;br /&gt;
&lt;br /&gt;
 [Big Fat Region]&lt;br /&gt;
 RegionUUID = 5ce85740-6460-43d3-ba4c-29207b010072&lt;br /&gt;
 Location = 1000,1000&lt;br /&gt;
 InternalAddress = 0.0.0.0&lt;br /&gt;
 InternalPort = 9000&lt;br /&gt;
 AllowAlternatePorts = False&lt;br /&gt;
 ExternalHostName = 192.168.1.2&lt;br /&gt;
 MasterAvatarFirstName = Justin&lt;br /&gt;
 MasterAvatarLastName = Clark-Casey&lt;br /&gt;
 MasterAvatarSandboxPassword = yeahokay&lt;br /&gt;
&lt;br /&gt;
この表は、Regions.ini の項目とセットアップ時の質問の関係を示しています。それぞれの質問に関する詳細は、[[設定#OpenSimulator を最初に起動する]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; class=&amp;quot;sortable&amp;quot; width=&amp;quot;90%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 項目&lt;br /&gt;
! セットアップ時の質問&lt;br /&gt;
! 説明&lt;br /&gt;
|-&lt;br /&gt;
|[Big Fat Region]&lt;br /&gt;
|New region name&lt;br /&gt;
|地域の名前。&lt;br /&gt;
|-&lt;br /&gt;
|RegionUUID&lt;br /&gt;
|Region UUID&lt;br /&gt;
|地域の一意ＩＤ。&lt;br /&gt;
|-&lt;br /&gt;
|Location&lt;br /&gt;
|Region Location&lt;br /&gt;
|グリッドの中での地域の位置。&lt;br /&gt;
|-&lt;br /&gt;
|InternalAddress&lt;br /&gt;
|Internal IP address&lt;br /&gt;
|0.0.0.0 または固定 IP アドレス。&lt;br /&gt;
|-&lt;br /&gt;
|InternalPort&lt;br /&gt;
|Internal port&lt;br /&gt;
|クライアントの接続を受け付けるポート番号。&lt;br /&gt;
|-&lt;br /&gt;
|AllowAlternatePorts&lt;br /&gt;
|Allow alternate ports&lt;br /&gt;
|未使用。常に False 。&lt;br /&gt;
|-&lt;br /&gt;
|ExternalHostName&lt;br /&gt;
|External host name&lt;br /&gt;
|ルータの外部 IP アドレスまたは FQDN 。&lt;br /&gt;
|-&lt;br /&gt;
|MasterAvatarFirstName&lt;br /&gt;
|Master Avatar first name&lt;br /&gt;
|(0.6.9 以前) マスターアバターのファーストネーム。&lt;br /&gt;
|-&lt;br /&gt;
|MasterAvatarLastName&lt;br /&gt;
|Master Avatar last name&lt;br /&gt;
|(0.6.9 以前) マスターアバターのラストネーム。&lt;br /&gt;
|-&lt;br /&gt;
|MasterAvatarSandboxPassword&lt;br /&gt;
|Master Avatar sandbox password&lt;br /&gt;
|(0.6.9 以前) マスターアバターのパスワード。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
他の地域を追加したい場合は、&lt;br /&gt;
&lt;br /&gt;
* Regions.ini にセクションをもう１個追加します。&lt;br /&gt;
* bin/Regions に .ini ファイルを別途作成します。&lt;br /&gt;
* 古い形式の OpenSim.xml ファイルを作成します（OpenSimulator 0.6.7 でもまだ動作します）。&lt;br /&gt;
* もしくは、地域コマンドを地域コンソールで発行します（0.6.7 では少しバグがあるようですので、推奨しません）。&lt;br /&gt;
&lt;br /&gt;
Region.ini に２個目の地域を追加する例です。&lt;br /&gt;
&lt;br /&gt;
 [Big Fat Region]&lt;br /&gt;
 RegionUUID = 5ce85740-6460-43d3-ba4c-29207b010072&lt;br /&gt;
 Location = 1000,1000&lt;br /&gt;
 InternalAddress = 0.0.0.0&lt;br /&gt;
 InternalPort = 9000&lt;br /&gt;
 AllowAlternatePorts = False&lt;br /&gt;
 ExternalHostName = 192.168.1.2&lt;br /&gt;
 MasterAvatarFirstName = Justin&lt;br /&gt;
 MasterAvatarLastName = Clark-Casey&lt;br /&gt;
 MasterAvatarSandboxPassword = yeahokay&lt;br /&gt;
 &amp;amp;nbsp;&lt;br /&gt;
 [Greek Wedding]&lt;br /&gt;
 RegionUUID = 5c445740-6460-43d3-ba4c-444444445555&lt;br /&gt;
 Location = 1000,1001&lt;br /&gt;
 InternalAddress = 0.0.0.0&lt;br /&gt;
 InternalPort = 9001&lt;br /&gt;
 AllowAlternatePorts = False&lt;br /&gt;
 ExternalHostName = 192.168.1.2&lt;br /&gt;
 MasterAvatarFirstName = Justin&lt;br /&gt;
 MasterAvatarLastName = Clark-Casey&lt;br /&gt;
 MasterAvatarSandboxPassword = yeahokay&lt;br /&gt;
&lt;br /&gt;
見ての通り、２番目の地域は Greek Wedding という名前で、違う UUID になっています。違う位置 (1000,1001) で違う InternalPort (9001) になっています。その他はまったく一緒です。&lt;br /&gt;
&lt;br /&gt;
新しい UUID を作成するには、手作業でひねりだすか（例えば、[0-9][A-F] の範囲で文字を１個変える）、[http://www.famkruithof.net/uuid/uuidgen uuidgen webpage] にあるジェネレータを使用するかします。Unix では、 &amp;lt;tt&amp;gt;uuidgen&amp;lt;/tt&amp;gt; コマンドを使用することもできます。&lt;br /&gt;
&lt;br /&gt;
= OpenSimulator 0.6.6 以前 =&lt;br /&gt;
強力なジェネレータがここにあります: [[RegionGenerator]]&lt;br /&gt;
&lt;br /&gt;
同じマシンで複数の地域を稼働させるには、'default.xml' ファイルのコピーを &amp;lt;tt&amp;gt;bin/Regions/&amp;lt;/tt&amp;gt; ディレクトリに複数作成するだけでよいです。OpenSimulator コマンドプロンプトで &amp;lt;tt&amp;gt;create region&amp;lt;/tt&amp;gt; と入力したり、&amp;lt;tt&amp;gt;share/regions&amp;lt;/tt&amp;gt; にある &amp;lt;tt&amp;gt;make.php&amp;lt;/tt&amp;gt; を使ったり、手作業でファイルを作成したりもできます。&lt;br /&gt;
&lt;br /&gt;
手作業でファイルを作成したい場合は、&lt;br /&gt;
&lt;br /&gt;
:default.xml ファイルのコピーを &amp;lt;tt&amp;gt;bin/Regions&amp;lt;/tt&amp;gt; ディレクトリに作成し、なんでもいいので名前をつけます（私は自分のファイルに region.x.y.xml とつけます。region が地域の名前で、x と y がグリッド座標です。）&lt;br /&gt;
:それぞれの xml ファイルを開き、UUID （ジェネレータが [http://www.famkruithof.net/uuid/uuidgen uuidgen webpage] にあります。または Unix では、uuidgen コマンドを使います）、地域の名前、XY 座標、内部 IP ポート番号を編集します。&lt;br /&gt;
&lt;br /&gt;
'''重要！'''  地域の作成方法にかかわらず、地域の UUID 、名前、グリッド座標はグリッドの中で一意でなければなりません。ポート番号はマシンの中で一意でなければなりません。内部 IP ''アドレス'' や外部ホスト名は全ての地域で同じでなければなりません。&lt;br /&gt;
&lt;br /&gt;
ちなみに、地域を連結させたいときは、&amp;lt;tt&amp;gt;sim_location_x&amp;lt;/tt&amp;gt; や &amp;lt;tt&amp;gt;sim_location_y&amp;lt;/tt&amp;gt; は隣りあった番号にしなければなりません。そうすれば地域の間を行ったり来たりできます。 '''重要: これらのグリッド座標はメートルではありません。SIM の位置です。'''  (1000, 1000) は (1001,1000) 、(1000, 1001) などと隣りあわせになります。1256, 2000, 2048 を指定すると 1000 とは隣りあわせとならず、かなり遠く離れたところになり、お互いの SIM から見えることはありません。&lt;br /&gt;
&lt;br /&gt;
２個以上の xml ファイルが bin/Regions フォルダにあれば、&amp;lt;tt&amp;gt;OpenSim.exe&amp;lt;/tt&amp;gt; を１個起動させれば全ての SIM が起動するようになります！エラーが発生したら、 xml ファイルの記述が間違っている可能性が高いです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:ちいきのせってい}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E5%8B%95%E4%BD%9C%E7%92%B0%E5%A2%83</id>
		<title>動作環境</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E5%8B%95%E4%BD%9C%E7%92%B0%E5%A2%83"/>
				<updated>2012-03-04T07:07:50Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Dependencies}}&lt;br /&gt;
&lt;br /&gt;
OpenSimulator バイナリを動かすためには、OpenSimulator コードだけでなく、他のパッケージをいくつかインストールする必要があります。&lt;br /&gt;
依存関係（動作環境）に関するより詳細な情報は、このページにだけでなく（ここの情報は将来拡充されるはずです）、[[ビルド手順]] にも掲載されていますが、そのページにはビルドにだけ関連する依存関係も載っています。[[トラブルシューティング]] にもヒントが載っています。&lt;br /&gt;
&lt;br /&gt;
依存関係を解決してもさらに、ファイアウォールの外側にあるビューアから内側の OpenSimulator にアクセスできるようにするために、システムにデフォルトでインストールされているファイアウォールの設定も直さなければならないかもしれません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
OpenSimulator は現在 Windows 環境でさせる場合は、'''.NET Framework 3.5''' が必須となっています。'''Windows 7''' や '''Windows Server 2008 R2''' で OpenSimulator を動作させる場合は、既に入っていますので OpenSimulator 0.7.1 はそのまま動かせます。'''Windows Vista''', '''Windows Server 2008''', '''Windows Server 2003''', '''Windows XP''' で動作させる場合は、3.5 (以降、ただし、.NET Framework 4.0 はまだ OpenSimulator で正式にはサポートされていません) にアップデートする必要があります。[http://msdn.microsoft.com/ja-jp/netframework/cc378097 Microsoft .NET Framework 3.5 ダウンロード@.NET Framework デベロッパーセンター] からダウンロードできます。ちなみに、古いバージョンの Windows (NT や 2000 など) はサポートされていません。&lt;br /&gt;
&lt;br /&gt;
Windows XP で動作させる場合は、必ず Service Pack 2 (SP2) 以上に更新してください。&lt;br /&gt;
&lt;br /&gt;
以下のアプリケーションをダブルクリックするか、コマンドプロンプトで実行してください。&lt;br /&gt;
*32 ビット版 Windows: '''OpenSim.exe'''&lt;br /&gt;
*64 ビット版 Windows: '''OpenSim.32BitLaunch.exe'''&lt;br /&gt;
インストール時の状態によっては、管理者としてプログラムを実行しなければならないかもしれません(右クリック -&amp;gt;「管理者として実行」)。実行を許可するかどうかを問い合わせるダイアログが表示されますので、「続行」を選択します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
OpenSimulator は Mono 2.4.3 以降が必須です。'''注意:''' OpenSimulator は Mono 2.8.x, 2.10.0, 2.10.1 で、パフォーマンスとスケーラビリティに関する致命的な問題を抱えていることが明らかになっています。Mono 2.10.2 現在では、スケーラビリティに関する問題は修正されたようです。このため、2.6.x か 2.10.2 以降を使用すべきでしょう。2.4.3 でもいいですが、今となっては超古いです。&lt;br /&gt;
&lt;br /&gt;
== Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install mono-complete&lt;br /&gt;
&lt;br /&gt;
{{anchor|CentOS}}{{anchor|RedHat}}{{anchor|RHEL}}{{anchor|Fedora}}&lt;br /&gt;
== RHEL, Fedora, CentOS その他 RedHat 系のディストリビューション ==&lt;br /&gt;
&lt;br /&gt;
まず、&amp;quot;yum info mono-core&amp;quot; を実行して、自分のディストリビューションのコアリポジトリに入っている Mono パッケージのバージョンを調べてみましょう。もし '''2.4.3''' 以降なら、[[#コアリポジトリからインストールする]] に進みましょう。そうでないなら、[[#Mono のリポジトリからインストールする]] にスキップしましょう。ディストリビューションによっては、yum リポジトリから現在取得可能なバージョンは要求されるバージョンより低いことがあります(例：CentOS は '''1.2.4''')。Ubuntu とは違い、RedHat 系のディストリビューションは常に保守的でなければならないため、リポジトリがなかなか更新されなくても不思議ではありません。この問題を解決するには、Mono のために別のリポジトリを追加します。&lt;br /&gt;
&lt;br /&gt;
=== コアリポジトリからインストールする ===&lt;br /&gt;
&lt;br /&gt;
以下のように入力してください。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum install  mono-core mono-data-sqlite mono-extras libgdiplus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
関連モジュールも一緒にインストールされます。これが済めば、mono で OpenSim.exe を普通に起動することができます。&lt;br /&gt;
&lt;br /&gt;
=== Mono のリポジトリからインストールする ===&lt;br /&gt;
&lt;br /&gt;
この手順は、CentOS 5.5, 5.6 と OpenSimulator 0.7.1 の組み合わせで検証しました。&lt;br /&gt;
&lt;br /&gt;
yum の config ファイルフォルダに移動して、mono 用に新しいファイルを作成します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/yum.repos.d&lt;br /&gt;
sudo vi mono.repo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
それから、mono.repo に次のように記述します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[mono]&lt;br /&gt;
name = novell-mono&lt;br /&gt;
baseurl=http://ftp.novell.com/pub/mono/download-stable/RHEL_5/&lt;br /&gt;
enabled=1&lt;br /&gt;
gpgcheck=0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これで、このリポジトリから mono の新しめのバージョンを yum でインストールすることができるようになりました。ちなみに、全ての mono パッケージが (IA64 ではなくて) i386 になっているか確認してからインストールしてください。32 ビットマシンでは、この点を気にする必要はありません。またこの場合、&amp;quot;.i386&amp;quot; が後ろになくても正しくインストールできます。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum install mono-addon-core.i386 mono-addon-data.i386 mono-addon-data-sqlite.i386  \&lt;br /&gt;
      mono-addon-extras.i386 mono-addon-web.i386 mono-addon-winforms.i386 mono-addon-libgdiplus0.i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mono は /opt/novell/mono にインストールされます。なので、/usr/bin にシンボリックリンクを貼っておくといいでしょう。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ln -s /opt/novell/mono/bin/mono /usr/bin/mono&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これで、OpenSim.exe をエラー無しで起動することができるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
== Debian ==&lt;br /&gt;
&lt;br /&gt;
Debian 4 (Etch) の debian.org でのサポートは終了しました。5 (Lenny) 以降にアップデートしてから OpenSimulator を起動しましょう。詳細は、[http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.html Upgrades from previous release@debian.org] を参照してください。&lt;br /&gt;
&lt;br /&gt;
Debian 5 (Lenny) 以降では、次のように入力します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo aptitude install mono-gmcs libmono-microsoft8.0-cil \&lt;br /&gt;
    libmono-system-runtime2.0-cil libmono-i18n2.0-cil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aptitude でなく、apt-get を使用しても構いません。どちらのコマンドも、関連パッケージも一緒にインストールします。&lt;br /&gt;
&lt;br /&gt;
Debian 5(Lenny), Debian 6(Squeeze), Debian 7(Wheezy) で検証しました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== openSuSE ==&lt;br /&gt;
&lt;br /&gt;
次のように入力します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo zypper install  mono-core mono-data-sqlite mono-extras libgdiplus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
関連モジュールも一緒にインストールされます。これで、mono で OpenSim.exe を普通に起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
= Mac OS X =&lt;br /&gt;
&lt;br /&gt;
Mono の '''Runtime''' パッケージを [http://www.go-mono.com/mono-downloads/download.html Mono ダウンロードサイト] から取得して、インストールするだけです。&lt;br /&gt;
&lt;br /&gt;
OS X 10.4 を使用している場合は、X11 を 0S X インストール CD からインストールしなければなりません。OS X 10.5 以降では必要ありません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ロケールや地域に関する設定 =&lt;br /&gt;
OpenSimulator は英語のロケール・地域設定にて正しく動作します。英語以外の設定では、スクリプトの動作不良からクラッシュに至るまで、さまざまな問題が発生する可能性があります。&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
Linux では、OpenSim.exe は、標準の &amp;quot;C&amp;quot; ロケールで起動するのが簡単です。[[トラブルシューティング#スクリプトエンジンの問題]] に説明があります:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
env LANG=C mono OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ロケールを変更する一般的なやり方についての詳細情報は、[[トラブルシューティング#ロケールの問題]] に掲載されています。&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
Windows 標準のロケールが英語圏以外の場合、残念ながら、Linux のような簡単な対処方法はありません。OpenSimulator 用にユーザアカウントを新しく作って、言語設定を &amp;quot;English (US)&amp;quot; にして、&lt;br /&gt;
通常のユーザアカウントから、OpenSim.exe を runas コマンドで（もしくは、Shift キーを押しながらエクスプローラのアイコンを右クリックし、「別のユーザーとして実行」を選択）、先に作った OpenSimulator 用アカウントを選択します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 参考情報 =&lt;br /&gt;
&lt;br /&gt;
OSGrid テクニカルサポートフォーラム。たくさんのインストールチュートリアルが載っています:&amp;amp;nbsp; [http://osgrid.org/forums/viewforum.php?f=14 osgrid.org/forums/viewforum.php] &lt;br /&gt;
&lt;br /&gt;
MONO&amp;amp;nbsp;プロジェクト:&amp;amp;nbsp; [http://www.mono-project.com/Main_Page www.mono-project.com/Main_Page]&lt;br /&gt;
{{DEFAULTSORT:どうさかんきょう}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85%E5%90%91%E3%81%91%E8%AA%AC%E6%98%8E%E6%9B%B8</id>
		<title>利用者向け説明書</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85%E5%90%91%E3%81%91%E8%AA%AC%E6%98%8E%E6%9B%B8"/>
				<updated>2012-03-04T07:07:40Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|User Documentation}}&lt;br /&gt;
&lt;br /&gt;
{{ambox&lt;br /&gt;
| type = content&lt;br /&gt;
| text = リンク先は日本語で記載されていない限り英語です。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 日本語訳だけに存在するリンク ここから --&amp;gt;&lt;br /&gt;
== パッケージ内容の日本語訳 ==&lt;br /&gt;
* [[日本語訳(README.txt)|README.txt]]&lt;br /&gt;
* [[日本語訳(BUILDING.txt)|BUILDING.txt]]&lt;br /&gt;
* [[日本語訳(OpenSim.ini.example)|bin/OpenSim.ini.example]]&lt;br /&gt;
* [[日本語訳(Robust.ini.example)|bin/Robust.ini.example]]&lt;br /&gt;
* [[日本語訳(StandaloneCommon.ini.example)|bin/config-include/StandaloneCommon.ini.example]]&lt;br /&gt;
* [[日本語訳(GridCommon.ini.example)|bin/config-include/GridCommon.ini.example]]&lt;br /&gt;
* [[日本語訳(FlotsamAssetCache.ini.example)|bin/config-include/FlotsamAssetCache.ini.example]]&lt;br /&gt;
* [[日本語訳(CenmoeAssetCache.ini.example)|bin/config-include/CenmoeAssetCache.ini.example]]&lt;br /&gt;
&amp;lt;!-- 日本語訳だけに存在するリンク ここまで --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 初期設定 ==&lt;br /&gt;
* [[ダウンロード]] - ダウンロードの方法&lt;br /&gt;
* [[動作環境]] - 言語（ロケール）設定、OpenSimulator に関連してインストールする必要のあるパッケージ&lt;br /&gt;
* [[ファイアウォール設定]] - ファイアウォールの内側にある OpenSimulator にビューアでアクセスできるようにする方法&lt;br /&gt;
* [[ビルド手順]] - ソースから OpenSimulator をビルド／コンパイルする方法&lt;br /&gt;
* [[設定]] - OpenSimulator サーバを稼働させるための設定方法&lt;br /&gt;
* [[地域の設定]] - Regions.ini で地域を設定する方法の詳細&lt;br /&gt;
* [[シミュレータ・パラメタの設定]] - シミュレータ・パラメタの構造と、初期セットアップが完了した後に設定を変更する方法の詳細&lt;br /&gt;
* [[Database Settings]] - データベースの接続に必要な設定の詳細&lt;br /&gt;
* [[Upgrading]] - データを残したまま OpenSimulator のバージョンを上げる方法&lt;br /&gt;
* [[トラブルシューティング]] - OpenSimulator インストールでつまずいたときの対処方法&lt;br /&gt;
* [[Tips]] - 虎の巻&lt;br /&gt;
* [[OpenSim Graphics]] - OpenSimulator ウェブサイトで使用されているグラフィック、ログインページ、作成物&lt;br /&gt;
* [[FAQ/ja]] - よくある質問&lt;br /&gt;
&lt;br /&gt;
== 利用者向けガイド ==&lt;br /&gt;
* [[Connecting]] - 対応ビューアを使って OpenSimulator に接続する方法&lt;br /&gt;
&lt;br /&gt;
== 管理者向けガイド ==&lt;br /&gt;
* [[サーバコマンド]] - OpenSimulator の運用コマンド&lt;br /&gt;
* [[Useful Queries]] - OpenSimulator データベースを操作する便利なクエリ&lt;br /&gt;
* [[Logging]] - OpenSimulator のログ機構&lt;br /&gt;
* [[Automating Tasks]] - 管理者が楽する方法（タスクの自動化）&lt;br /&gt;
* [[Network Settings]] - NAT、ポート、サービスなどなど&lt;br /&gt;
* [[RemoteAdmin]] - XMLRPC 管理インターフェースを使ったコマンドのリモート発行&lt;br /&gt;
* [[RestConsole/ja|REST コンソール]] - リモートコンソールの使用&lt;br /&gt;
* [[Performance]] - OpenSimulator のパフォーマンスチューニング&lt;br /&gt;
* [[Console-less OpenSim]] - OpenSimulator をコンソールを使わずに運用する方法&lt;br /&gt;
* [[Backups]] - OpenSimulator のデータをバックアップする方法&lt;br /&gt;
&lt;br /&gt;
== 基本機能 ==&lt;br /&gt;
* [[Feature Matrix]] - OpenSimulator で現在実装されている機能の早見表&lt;br /&gt;
* [[LSL Status]] - LSL 関数の実装状況&lt;br /&gt;
* [[OpenSim Archives]] - OpenSimulator での地域データの保存／ロード&lt;br /&gt;
* [[Inventory Archives|OpenSimulator Inventory Archives]] - OpenSimulator でのユーザインベントリアイテム／フォルダの保存／ロード&lt;br /&gt;
* [[Custom Libraries]] - OpenSimulator サーバにカスタムコンテンツを追加する方法&lt;br /&gt;
* [[IRCBridgeModule]] - IRC とシミュレータを連携する OpenSimulator の基本モジュール&lt;br /&gt;
* [[ハイパーグリッド]] - 試験段階のハイパーグリッド・アーキテクチャを設定する方法&lt;br /&gt;
* [[GridInfo/ja]] - スマートクライアントにグリッド情報を提供する方法&lt;br /&gt;
* [[PhysicsEngines]]   — OpenSimulator の物理エンジンのオプション&lt;br /&gt;
* [[Scripting Documentation]] - OpenSimulator のスクリプト大全とサンプルスクリプト一覧&lt;br /&gt;
* [[:Category:Tech Reference|Technical Reference]] - 技術用語集&lt;br /&gt;
&lt;br /&gt;
== Optional Features ==&lt;br /&gt;
* [[Feature Proposals/AutoBackup|AutoBackup]] - 地域の OAR への定期バックアップを、ファイル名を変えながら自動的に行うモジュール&lt;br /&gt;
* [[Freeswitch Module]] - OpenSimulator でボイスチャットに FreeSWITCH を使う方法&lt;br /&gt;
&lt;br /&gt;
== 試験段階の機能 ==&lt;br /&gt;
*[[メガ・リージョンの設定]]&lt;br /&gt;
&lt;br /&gt;
== RealXtend ==&lt;br /&gt;
* [[ModRex]] - RealXtend サーバモジュールのセットアップ方法&lt;br /&gt;
* [[RealXtend Viewer Linux]] - RealXtend ビューアを Wine(Linux) 環境で使用する方法&lt;br /&gt;
* [[Naali Viewer Linux]] - Naali ビューアを Kubuntu 環境でコンパイルする方法&lt;br /&gt;
&lt;br /&gt;
== チュートリアル ==&lt;br /&gt;
=== プラットフォーム依存 ===&lt;br /&gt;
* [[Linux Gridserver, the ubuntu way]] OpenSimulator を Ubuntu(Linux) 環境にとりあえずインストールする方法&lt;br /&gt;
* [[Wiiコントローラ]] - Wii リモコン／ヌンチャクを OpenSimulator ビューアで使用する方法 (Linux)&lt;br /&gt;
* [[Cacti]] - サーバの状態表示の生成に Cacti ツールと SNMP を使う方法 (Linux)&lt;br /&gt;
* [http://sunredbeach.com/dokuwiki/doku.php?id=opensim:minimal-server Installing an openSUSE 11.1 Minimal server setup for an OpenSimulator server] - openSUSE 11.1 サーバにとりあえずセットアップする方法&lt;br /&gt;
&lt;br /&gt;
* [http://chapter-and-metaverse.blogspot.com Chapter &amp;amp; Metaverse] - チュートリアル、ヒント集。Windows ユーザ向けですが、Linux ユーザでも使えます！&lt;br /&gt;
&lt;br /&gt;
=== プラットフォーム共通 ===&lt;br /&gt;
* [[OSGrid Region Registration]] - OS-Grid に地域をリンクさせる方法&lt;br /&gt;
* [[Getting Started with Region Modules]] - OpenSimulator アプリケーション開発の初歩&lt;br /&gt;
* [[Building a bot]] - クライアント側で libomv を使ったボット設計の初歩&lt;br /&gt;
* [[pCampBot]] - 物理属性をもつ OpenSimulator ボット&lt;br /&gt;
* [[Using L3DT]] - カスタム地形を作成する方法&lt;br /&gt;
* [[Detailed cross-region terrain making]] - 地域をまたがった大きなカスタム地形を作成する手順&lt;br /&gt;
* [http://update.multiverse.net/wiki/index.php/About_Terrain 良い地形を作成する方法（4 つのプログラムつき）] (英語)&lt;br /&gt;
* [http://www.nsl.tuis.ac.jp/xoops/modules/d3downloads/index.php?page=singlefile&amp;amp;cid=8&amp;amp;lid=22 OpenSimulator サーバシステムを Linux 環境で構築する方法についての日本語マニュアル] （東京情報大学 ネットワークシステム研究室）&lt;br /&gt;
&lt;br /&gt;
== Gforge プロジェクト ==&lt;br /&gt;
* [[OpenSimSearch]] - Search for your OpenSimulator&lt;br /&gt;
* [[ServerStats]] - RRD/Proc serverstats using the OpenSimulator module for Berlios Serverstats (Linux)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cleanpage title=hide cats=hide /&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:りようしゃむけ}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%83%A1%E3%82%AC%E3%83%BB%E3%83%AA%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E8%A8%AD%E5%AE%9A</id>
		<title>メガ・リージョンの設定</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%83%A1%E3%82%AC%E3%83%BB%E3%83%AA%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E8%A8%AD%E5%AE%9A"/>
				<updated>2012-03-04T07:07:30Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Setting Up Mega-Regions}}&lt;br /&gt;
{{ambox&lt;br /&gt;
| type = content&lt;br /&gt;
| text = 開発チームから挙がっている顕著な問題点がまだまだ残っています。既にある地域をメガ・リージョンに統合したい場合は、OARS ファイルを作成し、現時点で地域にあるコンテンツのフル・バックアップを取ってください。OAR ファイルから復元すると、リストアされた地域は南西の端だけにしか配置できません。これを執筆している現在、原因究明中です。最終更新日 2010 年 10 月 26 日}}&lt;br /&gt;
&lt;br /&gt;
= レイアウト配置図 =&lt;br /&gt;
&lt;br /&gt;
これは典型的な設定を図示したものです。これが全部ではないですが、地域のレイアウトを作成する際のよい見本になるでしょう。&lt;br /&gt;
&lt;br /&gt;
'''注意事項''': ほとんどのビューアは、4096 のテレポートバグ、つまり、4096 を超える先の地域にはテレポートできないというバグを抱えています。OSGrid の中心点は 10000 10000 にあります。ビューアによっては、MeerKat や Imprudence など、最近になって修正されているものもあります。他のビューアも同様に修正してくる見込みです。このバグはハイパーグリッドでない地域だけでなく、ハイパーグリッドの地域にもあてはまります。&lt;br /&gt;
&lt;br /&gt;
[[Image:MegaReg Layout.png|center|512x512px|Mega region Layout Example]]&lt;br /&gt;
&lt;br /&gt;
= 手順 =&lt;br /&gt;
&lt;br /&gt;
=== ステップ 0: 地域をバックアップしよう ===&lt;br /&gt;
&lt;br /&gt;
OpenSimulator インスタンスにコンテンツがない場合は、この手順をスキップして [[#ステップ 1: &amp;quot;OpenSim.ini&amp;quot; ファイルを編集しよう]] に進みましょう。&lt;br /&gt;
&lt;br /&gt;
地域にコンテンツがある場合は、統合するのは危険な行為となります。コンテンツを無くすことになるかもしれません。念のために、以下のことをやっておきましょう。&lt;br /&gt;
&lt;br /&gt;
# データベースのバックアップを取りましょう。手順は [[Backups]] を参照してください。&lt;br /&gt;
# メガ・リージョンに統合する各地域の OAR ファイルを作成しましょう。手順は [[OpenSim Archives]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ステップ 1: &amp;quot;OpenSim.ini&amp;quot; ファイルを編集しよう ===&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini を編集します。&amp;lt;nowiki&amp;gt;[Startup]&amp;lt;/nowiki&amp;gt; セクションで、&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
    ; CombineContiguousRegions = false&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
を&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
    CombineContiguousRegions = true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
に変更してください。&lt;br /&gt;
&lt;br /&gt;
=== ステップ 2: &amp;quot;Regions.ini&amp;quot; ファイルを編集しよう ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;bin/Regions&amp;quot; にある Region.ini ファイルを編集します。&lt;br /&gt;
&lt;br /&gt;
以下の [[#Regions.ini ファイルのサンプル]] にあるサンプルは、3x3 の 9 SIM からなるメガ・リージョンのものです。適宜埋めていきましょう。必ず Regions.ini の中で地域が'''南西から北東へ'''並ぶように書いていってください。&lt;br /&gt;
&lt;br /&gt;
=== ステップ 3 : OpenSimulator を起動しよう ===&lt;br /&gt;
&lt;br /&gt;
OpenSimulator を起動します。地域にコンテンツがない場合は、ここで完了です！ある場合は、&lt;br /&gt;
&lt;br /&gt;
# エラーメッセージが大量に出ます。無視してください。&lt;br /&gt;
# コンソールの動きが止まるまで待ちます。それから、'''fix-phantoms''' と入力します。&lt;br /&gt;
# プロセスが完了するまで待ちます。バックアップスレッドが全てのバックアップを取得するのに数分かかることがあります。&lt;br /&gt;
# コンソールの動きが止まったら、'''backup''' と入力します。(念のため、データベースにデータを不揮発化します)&lt;br /&gt;
# OpenSimulator を再起動して、全てのオブジェクトが元通りの場所にあるか確認します。&lt;br /&gt;
&lt;br /&gt;
参考情報: [http://www.metaverseink.com/blog/?p=28 Importing OARs into megaregions (Diva のブログ記事)]&lt;br /&gt;
&lt;br /&gt;
= Regions.ini ファイルのサンプル =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
; 9SIM 3x3 メガ・リージョンの例&lt;br /&gt;
; 各地域に一意の UUID を振ってください。&lt;br /&gt;
; 各地域に一意の InternalPort を割り当ててください。&lt;br /&gt;
; &lt;br /&gt;
;************************************************&lt;br /&gt;
[RegionName_SW]&lt;br /&gt;
RegionUUID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
Location = 5000,5000&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9001&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
;&lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
;&lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;************************************************&lt;br /&gt;
[RegionName_W]&lt;br /&gt;
RegionUUID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
Location = 5000,5001&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9002&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
;&lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
; &lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;************************************************&lt;br /&gt;
[RegionName_NW]&lt;br /&gt;
RegionUUID = 84b41485-6884-412d-b4a2-2f6941559924&lt;br /&gt;
Location = 5000,5002&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9003&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
; &lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
; &lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;&lt;br /&gt;
;************************************************&lt;br /&gt;
[RegionName_S]&lt;br /&gt;
RegionUUID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
Location = 5001,5000&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9004&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
; &lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
; &lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;&lt;br /&gt;
;************************************************&lt;br /&gt;
[RegionName_Centre]&lt;br /&gt;
RegionUUID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
Location = 5001,5001&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9005&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
; &lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
; &lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;************************************************&lt;br /&gt;
[RegionName_N]&lt;br /&gt;
RegionUUID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
Location = 5001,5002&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9006&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
; &lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;&lt;br /&gt;
;************************************************&lt;br /&gt;
;&lt;br /&gt;
[RegionName_SE]&lt;br /&gt;
RegionUUID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
Location = 5002,5000&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9007&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
; &lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
; &lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;&lt;br /&gt;
;************************************************&lt;br /&gt;
[RegionName_E]&lt;br /&gt;
RegionUUID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
Location = 5002,5001&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9008&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
;&lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
; &lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;&lt;br /&gt;
;************************************************&lt;br /&gt;
[RegionName_NE]&lt;br /&gt;
RegionUUID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
Location = 5002,5002&lt;br /&gt;
InternalAddress = 0.0.0.0&lt;br /&gt;
InternalPort = 9009&lt;br /&gt;
AllowAlternatePorts = False&lt;br /&gt;
ExternalHostName = YourIP_DNSname&lt;br /&gt;
; &lt;br /&gt;
;NonphysicalPrimMax = 0&lt;br /&gt;
;PhysicalPrimMax = 0&lt;br /&gt;
ClampPrimSize = False&lt;br /&gt;
;MaxPrims = 15000&lt;br /&gt;
; &lt;br /&gt;
;ScopeID = 00000000-0000-0000-0000-000000000000&lt;br /&gt;
;&lt;br /&gt;
;************************************************&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:めがりーじょん}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8</id>
		<title>メインページ</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8"/>
				<updated>2012-03-04T07:07:20Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{MainPageQuicklinks/ja|Main Page}}&lt;br /&gt;
&lt;br /&gt;
{{Information}}&lt;br /&gt;
&lt;br /&gt;
=== OpenSimulator とは何ですか？ ===&lt;br /&gt;
{{FrontPageSidebar}}&lt;br /&gt;
&lt;br /&gt;
OpenSimulator は 3D のアプリケーションサーバです。これを使って仮想環境（仮想世界）を作成し、様々なクライアントや、複数のプロトコルからそれにアクセスすることができるようになります。 OpenSimulator で、適材適所のテクノロジーを使って独自の環境を構築することができます。 - 私たちは[[Getting Started with Region Modules|ロードモジュール]]を通じて建造物のあらゆる設定をカスタマイズできるように、ソフトウェアを設計しました。OpenSimulator は [[BSD License|BSD ライセンス]]の下でリリースされており、オープンソースでありながら、商用利用可能となっています。&lt;br /&gt;
&lt;br /&gt;
難しい設定などは一切なしで、OpenSimulator を使って Second Life™ に似た仮想環境をシミュレートすることができます（クライアントも互換性があります）。他の環境、プロトコル、機能はアドオンモジュールを導入すると利用できます。利用可能なモジュールの一覧は、[http://forge.opensimulator.org/gf/ Forge サイト] にあります。&lt;br /&gt;
&lt;br /&gt;
OpenSimulator はまだ'''アルファ版ソフトウェア'''とされていますが、たくさんの人々が[http://planet.opensim.us これを使ってわくわくするようなことをしています]。&lt;br /&gt;
&lt;br /&gt;
=== 機能 ===&lt;br /&gt;
OpenSimulator は比較的新しいソフトウェアですが、既にたくさんの便利な機能が備わっています。&lt;br /&gt;
* １つのアプリケーションインスタンスの中に、複数の「世界」を作成できます。&lt;br /&gt;
* 複数のクライアントやプロトコルを使うことができます - 同じ世界に同じ時間に複数のプロトコルでアクセスできます。&lt;br /&gt;
* 自分のアバターを、カスタムメイドの服、スキン、装着オブジェクトで、めいいっぱいカスタマイズできます。&lt;br /&gt;
* ODE などの複数のエンジンの中から選択して、物理シミュレーションをリアルタイムで行うことができます。&lt;br /&gt;
* インワールドの建造ツールを使って、環境の中にコンテンツをリアルタイムで作成できます。&amp;quot;What you see is what you get&amp;quot;（見たものが、手に入るもの）です。&lt;br /&gt;
* LSL/OSSL, C#, VB.NET など数多くの言語で、インワールドアプリケーションを作成できます。&lt;br /&gt;
&lt;br /&gt;
=== OpenSimulator を使う ===&lt;br /&gt;
OpenSimulator を使いはじめるのに一番手っ取り早い方法は、[http://osgrid.org OSGrid] にアカウントを作って、[http://opensim-viewer.sourceforge.net/ Hippo Viewer] か [http://secondlife.com/support/downloads.php Linden Lab の Second Life Viewer] （やその他のクライアント）をダウンロードして OSGrid に接続することです。このプロセスは 10 分もかからないうちに終わり、OpenSimulator がどのようなものか感じ取ることができるでしょう。&lt;br /&gt;
&lt;br /&gt;
インターネット上に数多くある [[グリッドリスト|公共グリッド]] に簡単に接続することもできます。&lt;br /&gt;
&lt;br /&gt;
また、スタンドアロンの OpenSimulator を Windows, Linux, Mac デスクトップ端末に[[ダウンロード]]して動かし、コンテンツを作成したり、見たりすることもできます。&lt;br /&gt;
&lt;br /&gt;
=== 自分の OpenSimulator を動かす ===&lt;br /&gt;
&lt;br /&gt;
自分の OpenSimulator サーバを動かして、独自の 3D 環境を運用してみたいと思ったら、以下のリンクのリンク先を見てみるとよいでしょう: &lt;br /&gt;
&lt;br /&gt;
*[[ダウンロード|OpenSimulator の入手]] - [[日本語訳(README.txt)]]&lt;br /&gt;
*[[ビルド手順|OpenSimulator のビルド]] - [[日本語訳(BUILDING.txt)]]&lt;br /&gt;
*[[設定|OpenSimulator の設定と起動]] &lt;br /&gt;
*[[メガ・リージョンの設定]]&lt;br /&gt;
*[[サーバコマンド]] &lt;br /&gt;
*[[FAQ/ja|OpenSimulator の運用に関するよくある質問]] &lt;br /&gt;
*[[:Category:Tech Reference|技術用語集]]&lt;br /&gt;
&lt;br /&gt;
=== OpenSimulator コミュニティに参加する ===&lt;br /&gt;
OpenSimulator は[http://en.wikipedia.org/wiki/Open_source オープンソース]プロジェクトで、コミュニティメンバーが時間と心血を注ぐことで成り立っています。色々な方法でコミュニティに参加・貢献できます:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Internet_Relay_Chat IRC] に参加する - [irc://irc.freenode.net/opensim #opensim]（ユーザ）, [irc://irc.freenode.net/opensim-dev #opensim-dev]（開発者）, [irc://irc.freenode.net/opensim-scripts #opensim-scripts] &lt;br /&gt;
* メーリングリストに参加する - [https://lists.berlios.de/mailman/listinfo/opensim-users opensim-users]（ユーザ）, [https://lists.berlios.de/mailman/listinfo/opensim-dev opensim-dev]（開発者）.&lt;br /&gt;
* [[WikiStructure|この Wiki に寄稿し]]、OpenSimulator ドキュメントをより良いものにする。&lt;br /&gt;
* [[bugs|バグ]]を報告したり、[[Submitting code to OpenSim|パッチ]]を提供したり、[http://opensimulator.org/mantis/ Mantis バグトラッカー] にコンテンツを提供したりする。&lt;br /&gt;
* [http://forge.opensimulator.org Forge] や Web の[[Related Software|どこか]]で OpenSimulator に関連するプロジェクトを立ち上げる。 Forge にはたくさんのプロジェクトが登録されていますし、それは OpenSimulator コミュニティーをさらに発展させる素晴らしいやり方です。&lt;br /&gt;
* OpenSimulator の公開コンテンツの作成に参加する。詳細は [[Artist Home]] にあります。&lt;br /&gt;
* OpenSimulator についてブログを書く。そのブログを [irc://irc.freenode.net/opensim #opensim] でお知らせしてくれれば、[http://planet.opensim.us Planet OpenSim] に追加します。&lt;br /&gt;
* 毎週開催される OpenSimulator の[[Office Hours|オフィスアワー]]のどれかに参加する。現在、開発、Wiki 執筆、テストに関するオフィスアワーを毎週開催しています。&lt;br /&gt;
&lt;br /&gt;
{{Layout_box2|1=&lt;br /&gt;
=== カテゴリ別のページ: ===&lt;br /&gt;
&amp;lt;b&amp;gt;&lt;br /&gt;
[[:Category:Japanese Translations|日本語に翻訳されているページ]], [[:Category:Getting_Started | さあはじめよう]] , [[:Category:Support | サポート]] , [[:Category:Tech Reference|技術用語集]] , [[:Category:Help|ヘルプ]] , [[:Category:Configuration|設定ページ]] , [[:Category:Users|ユーザページ]] , [[:Category:Development |開発ページ]] , [[:Category:Scripts|スクリプト]] , [[:Special:Recentchanges|最近の Wiki の変更]]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cleanpage title=hide cats=hide /&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:めいんぺーじ}}&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A</id>
		<title>ファイアウォール設定</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A"/>
				<updated>2012-03-04T07:07:10Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Firewall Settings}}&lt;br /&gt;
&lt;br /&gt;
このページでは、各ＯＳ・ディストリビューションのファイアウォール設定について説明します。&lt;br /&gt;
&lt;br /&gt;
= Widows =&lt;br /&gt;
&lt;br /&gt;
== Windows Firewall ==&lt;br /&gt;
&lt;br /&gt;
Server 2008, Vista, Windows 7 では、「セキュリティが強化されたWindowsファイアウォール」の設定を変更して、他のマシンのビューアからアクセスできるようにする必要があります。以下に手順を示します。&lt;br /&gt;
&lt;br /&gt;
#[スタート]をクリックし、[コントロールパネル]をクリックします。コントロールパネルでは、[システムとセキュリティ]をクリックして[管理ツール]をクリックします。管理ツールでは、[セキュリティが強化 されたWindowsファイアウォール]をダブルクリックします。また、スタートメニューの「ファイル名を指定して実行」のテキストボックスに WF.msc と入力して直接アクセスすることもできます。&lt;br /&gt;
#左の枠にある[受信の規則]を選択して、[操作]の枠の[受信の規則]の下にある[新規の規則]をクリックします。新規の受信の規則ウィザードが起動します。&lt;br /&gt;
#最初の'''規則の種類'''画面では、'''ポート'''を選択します。[次へ]をクリックして進みます。&lt;br /&gt;
#'''プロトコルおよびポート'''画面では、'''TCP''' を選択し、'''特定のローカルポート'''を選択して、'''9000''' と入力します(スタンドアロンの場合。グリッドモードの場合 '''8002''' になります)。[次へ]をクリックして進みます。&lt;br /&gt;
#'''操作'''画面では、'''接続を許可する'''を選択します。[次へ]をクリックして進みます。&lt;br /&gt;
#'''プロファイル'''画面では、何もいじらずに[次へ]をクリックして進みます。&lt;br /&gt;
#'''名前'''画面では、規則の名前と説明を入力します。[完了]をクリックしてルールを作成します。&lt;br /&gt;
#2 から 7 の手順を繰り返して '''UDP''' の規則も作成します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== マカフィー・インターネットセキュリティ ==&lt;br /&gt;
&lt;br /&gt;
マカフィー・インターネットセキュリティは特別に指定されない限り、アプリケーションがポートを監視することを許可していません。２つの対策があります。1) ファイアウォール・プロテクションを全部無効にしてしまう、または、2) &amp;lt;tt&amp;gt;OpenSim.exe&amp;lt;/tt&amp;gt; がポートを開けるようにする、のいずれかです。&lt;br /&gt;
&lt;br /&gt;
ファイアウォールを無効にする - McAfee SecurityCenter を開きます。「インターネットとネットワーク」を選択します。左下に「設定」という小さなリンクが表示されています。これをクリックします。ウィンドウの右側に、「ファイアウォールによる保護が有効です」と表示された項目があります。ここで「オフ」を選択します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;OpenSim.exe&amp;lt;/tt&amp;gt; がポートを開けるようにする - McAfee SecurityCenter を開きます。「インターネットとネットワーク」を選択します。左下に「設定」という小さなリンクが表示されています。これをクリックします。ウィンドウの右側に、「ファイアウォールによる保護が有効です」と表示された項目があります。「詳細設定...」ボタンをクリックします。新しいウィンドウが出てきます。&lt;br /&gt;
&lt;br /&gt;
新しいウィンドウの左側で、「プログラム許可機能」を選択します。ウィンドウの右側の真ん中あたりに、「許可されたプログラムを追加」ボタンがあります。開いたダイアログで OpenSimulator の実行ファイルを探して選択します。&lt;br /&gt;
&lt;br /&gt;
最後に「OK」ボタンを押して McAfee SecurityCenter ウィンドウを閉じます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
== Ipconfig ==&lt;br /&gt;
&lt;br /&gt;
root ユーザで 'iptables -L' を実行し、結果に何か規則らしきものが表示されたら、この手のファイアウォールがシステムで稼働しているということになります。リモートアクセスができるように変更するには、次のようにします。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -A INPUT -p tcp --dport 9000 -j ACCEPT&lt;br /&gt;
iptables -A INPUT -p udp --dport 9000 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
もしくは、ファイアウォールが chain を使用している場合(CentOS など)、次のようにします。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -I RH-Firewall-1-INPUT -p tcp --dport 9000 -j ACCEPT&lt;br /&gt;
iptables -I RH-Firewall-1-INPUT -p udp --dport 9000 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
それから、以下のコマンドを実行して変更を反映します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables-save&lt;br /&gt;
iptables-save &amp;gt; /etc/sysconfig/iptables&lt;br /&gt;
service iptables restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SuSE Firewall2 ==&lt;br /&gt;
&lt;br /&gt;
openSuSE の新規インストールを行うと、デフォルトでこの手のファイアウォールが稼働します。外部のビューアが OpenSimulator にアクセスできるようにするには、設定ファイルを編集します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo vi /etc/sysconfig/SuSEfirewall2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
このファイルの中に、&amp;quot;FW_SERVICES_EXT_TCP&amp;quot; と &amp;quot;FW_SERVICES_EXT_UDP&amp;quot; という行があります。次のように変更します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FW_SERVICES_EXT_UDP=&amp;quot;9000&amp;quot; # スタンドアロンの場合 / グリッドモードの場合 &amp;quot;8002&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
FW_SERVICES_EXT_TCP=&amp;quot;9000&amp;quot; # 同上&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
保存します。&lt;br /&gt;
&lt;br /&gt;
最後に、設定再読み込みコマンドを実行します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /sbin/SuSEfirewall2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:ふぁいあうぉーる}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%83%93%E3%83%AB%E3%83%89%E6%89%8B%E9%A0%86</id>
		<title>ビルド手順</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%83%93%E3%83%AB%E3%83%89%E6%89%8B%E9%A0%86"/>
				<updated>2012-03-04T07:07:00Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Build Instructions}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
このページでは OpenSimulator ソースコードを様々なプラットフォームでビルドする方法について説明しています。&amp;lt;!-- Please help us keep this page up to date as the project progresses. --&amp;gt;単に OpenSimulator を起動させたいだけなら、バイナリディストリビューションを [[ダウンロード]] して [[設定|起動]] しましょう。ほとんどの場合、バイナリディストリビューションで充分なはずです。&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator のダウンロード ==&lt;br /&gt;
&lt;br /&gt;
OpenSimulator のソースリリースを入手する方法は、[[ダウンロード]] ページに記載されています。Git Master にある不安定なソースにどうしても興味のある方は、[[Using Git]] で取得方法を確認してください。ソースを取得したら、以下の手順でビルドしてください。&lt;br /&gt;
&lt;br /&gt;
== 一般的な注意事項 ==&lt;br /&gt;
&lt;br /&gt;
このページに長々と記載されてはいますが、ビルドは本来極めてシンプルなものです。配布物の中にある BUILDING.txt([[日本語訳(BUILDING.txt)|日本語訳]]) ファイルに、単純化した手順が記載されていますので見てください。このページではビルドの前にしないといけないことを説明しています。&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイルについて ===&lt;br /&gt;
&lt;br /&gt;
バイナリディストリビューションと違い、OpenSimulator のソースディストリビューションにはデフォルトの設定ファイル、例えば、'''OpenSim.ini''' や '''StandaloneCommon.ini''' が入っていません。このため、自分で作成する必要があります。[[設定]] ページをよく確認して、''&amp;quot;APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs Exception: System.Exception: Configuration file is missing the [SimulationDataStore] section&amp;quot;''(= OpenSim.ini ファイルがない) や ''&amp;quot;Error loading plugin from OpenSim.Services.FriendsService.dll, exception System.Exception: No StorageProvider configured&amp;quot;''(= *Common.ini ファイルがない) で悩むようなことがないようにしましょう。&lt;br /&gt;
&lt;br /&gt;
=== Linux での近道 ===&lt;br /&gt;
&lt;br /&gt;
Linux で一番簡単に動作させることのできるプラットフォームは 32 ビット版 Ubuntu です。Linux を使っている開発者が一番使っているのがこれです。手っ取り早く動かす方法をお探しなら、[[#Ubuntu|こちら]] へどうぞ。&lt;br /&gt;
&lt;br /&gt;
'''(Ubuntu を含む) 多くのディストリビューションでは、&amp;quot;mono-runtime&amp;quot; パッケージだけがインストールされた状態になっていますが、LSL スクリプトコマンドなど、OpenSimulator の一部の機能を動作させるためには、&amp;quot;mono-complete&amp;quot; をインストールする必要があります。'''&lt;br /&gt;
&lt;br /&gt;
== MS Windows ==&lt;br /&gt;
&lt;br /&gt;
OpenSimulator の動作には [http://msdn.microsoft.com/ja-jp/netframework/cc378097 .Net Framework version 3.5] または [http://www.go-mono.com/mono-downloads/download.html Mono 2.4.3 以降] が必要です。 &lt;br /&gt;
&lt;br /&gt;
=== サポートされているコンパイラ ===&lt;br /&gt;
* Visual Studio 2010&lt;br /&gt;
* Visual Studio 2008&lt;br /&gt;
:どのエディションでも動作するはずです。無料の [http://www.microsoft.com/japan/msdn/vstudio/express/ Microsoft Visual C# Express Edition] も使えます。OpenSimulator は C++ でなく、C# で書かれていますのでご注意ください。&lt;br /&gt;
:Visual Studio 2005 以前はもうサポートされていません([http://www.mail-archive.com/opensim-dev@lists.berlios.de/msg02674.html opensim-dev で提案されたときのメール], [http://www.mail-archive.com/opensim-dev@lists.berlios.de/msg02673.html opensim-dev で承認されたときのメール])。&lt;br /&gt;
*[http://www.go-mono.com/mono-downloads/download.html Mono for Windows]&lt;br /&gt;
&lt;br /&gt;
=== IDE でのコンパイル ===&lt;br /&gt;
# &amp;quot;runprebuild.bat&amp;quot; (2008 の場合) か &amp;quot;runprebuild2010.bat&amp;quot; (2010 の場合) を実行してください。&lt;br /&gt;
# 生成された &amp;quot;OpenSim.sln&amp;quot; を Visual Studio で開きます。&lt;br /&gt;
# [ビルド] (または [デバッグ]) -&amp;gt; [ソリューションのビルド] を選択します。&lt;br /&gt;
&lt;br /&gt;
=== コマンドプロンプトでのコンパイル ===&lt;br /&gt;
# &amp;quot;runprebuild.bat&amp;quot; を実行します。&lt;br /&gt;
# 生成された &amp;quot;compile.bat&amp;quot; を実行するか &amp;quot;nant&amp;quot; を実行します。MSBuild(前者)かnant(後者)を使ってビルドが行われます。&lt;br /&gt;
&lt;br /&gt;
=== 補足 ===&lt;br /&gt;
&lt;br /&gt;
* 64 ビット版 Windows(Vista, Windows 7 ...) でも OpenSimulator を起動できますが、Visual Studio でデバッグする場合は、OpenSim.32BitLaunch をソリューションに追加して、スタートアッププロジェクトに設定しなければなりません。詳細は [http://blog.tedd.no/2008/12/05/opensim-in-visual-studio-on-win64/ OpenSimulator in Visual Studio on Win64@Tedds blog] を確認してください。&lt;br /&gt;
&lt;br /&gt;
*Cygwin シェルを使っている場合、&amp;quot;&amp;lt;tt&amp;gt;chmod 755 *.dll *.exe&amp;lt;/tt&amp;gt;&amp;quot; を &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; ディレクトリで実行して DLL のパーミッションに関する問題を解決しなければならないことがあるかもしれません。&lt;br /&gt;
&lt;br /&gt;
== Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X 10.5 以降, Intel ===&lt;br /&gt;
&lt;br /&gt;
以下をダウンロードして、インストールするだけです。&lt;br /&gt;
* Mono SDK from [http://www.go-mono.com/mono-downloads/download.html Mono Download Page]&lt;br /&gt;
* MonoDevelop package from [http://monodevelop.com/Download MonoDevelop Download Page] &lt;br /&gt;
XCode や MacPort は今では不要となっています(MacPort で mono の開発ライブラリと nant をインストールしても別に構いませんが)。&lt;br /&gt;
&lt;br /&gt;
nano で OpenSimulator をビルドする場合、&amp;quot;Unable to locate 'mono' module using pkg-config. Download the Mono &lt;br /&gt;
development packages&amp;quot; というエラーが表示される場合があります。XCode や MacPort が悪さしているのではないかと疑っています(これらを両方とも削除したらうまくいったので)。まあ原因はどうだっていいのですが、'''/usr/bin/nant''' スクリプトファイルに以下の行を入れて、この問題に対処しましょう。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Libraries/pkgconfig    # これを追加&lt;br /&gt;
exec /Library/Frameworks/Mono.framework/Versions/2.10.2/bin/mono \&lt;br /&gt;
    /Library/Frameworks/Mono.framework/Versions/2.10.2/share/NAnt/bin/NAnt.exe &amp;quot;$@&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;runprebuild.sh&amp;quot; を実行した後、OpenSimulator を MonoDevelop でコンパイルすることができます。ソリューションファイル (*.sln) を MonoDevelop で開き、メニューから Build -&amp;gt; Build All を選択してください。&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X 10.4/10.5 on PowerPC ===&lt;br /&gt;
{{ambox&lt;br /&gt;
| type = content&lt;br /&gt;
| text = 未翻訳です。Intel とほぼ同じような手順でビルドできるはずです。mono のダウンロードページに PowerPC 用のパッケージが用意されているので、そちらのほうを使います。原文は [[Build Instructions#Mac OS X 10.4/10.5 on PowerPC|こちら]] です。&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!-- ビルドのための手順と、普通のOpenSim起動手順がごっちゃになっているので、そのうち原文を見直す予定。ただし、当方に検証環境がないので、ちょっと後回しにしている。それまでは、面倒なのと、解決済みの問題に対する回避策が載っていたりするため、現時点で訳すとかえって面倒なことになりそうだという理由で、訳さない。--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
(7.10, 8.04, 9.10 など) 古いディストリビューションを使っている Ubuntu ユーザは、 mono を 2.4.3 以降にアップグレードする必要があります。Mono をアップグレードする必要がある場合は、[[Update Mono on Ubuntu]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
Ubuntu Karmic (9.10) には mono 2.4.2.3 が入っています。&lt;br /&gt;
&lt;br /&gt;
Ubuntu Lucid (10.04) には mono 2.4.4 が入っています。&lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick (10.10) には mono 2.6.7 が入っています。&lt;br /&gt;
&lt;br /&gt;
Ubuntu Natty (11.04) には mono 2.6.7 が入っています。&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 10.04 以降 ===&lt;br /&gt;
&lt;br /&gt;
このバージョンでは、mono-complete をインストールするだけで大丈夫です。動作に必要な関連パッケージは一緒にインストールされます。まとめると、ビルドの手順はこうなります。&lt;br /&gt;
 sudo apt-get install mono-complete&lt;br /&gt;
 opensim を[[ダウンロード]]&lt;br /&gt;
 cd opensim&lt;br /&gt;
 ./runprebuild.sh&lt;br /&gt;
 xbuild&lt;br /&gt;
&lt;br /&gt;
mono 2.6 系の時点では、xbuild で OpenSimulator を完全にビルドすることができます。xbuild は Ubuntu の '''mono-complete''' に含まれていますので、xbuild より nant を使いたいという特段の理由がなければ、他のパッケージをインストールする必要はありません。この２つは、同じ C# コンパイラをそれぞれ別のビルドスクリプト形式で呼び出す別々のビルドシステムです。&lt;br /&gt;
&lt;br /&gt;
'''オプション (開発者向け):''' レグレッションテストスイートを実行するには、このように nunit-console をインストールします。&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install nunit-console&lt;br /&gt;
 nant test&lt;br /&gt;
&lt;br /&gt;
{{anchor|CentOS}}{{anchor|RedHat}}{{anchor|RHEL}}{{anchor|Fedora}}&lt;br /&gt;
== RHEL, Fedora, CentOS その他 RedHat 系 ==&lt;br /&gt;
&lt;br /&gt;
OpenSimulator のバイナリディストリビューションを動かせるような状態で OpenSimulator をソースからビルドするには、mono の開発ライブラリと nant をインストールする必要があります。以下の両方の項を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Mono ライブラリの取得 ===&lt;br /&gt;
&lt;br /&gt;
[[動作環境#RedHat|OpenSim.exe バイナリディストリビューションを動作させたときに]]、Mono を自分のディトリビューションのコアリポジトリからインストールした場合は、以下のように入力すれば大丈夫です。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum install mono-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
そうでない場合は、次のように入力します([[動作環境#Mono のリポジトリからインストールする|Mono 用の yum リポジトリの設定が済んでいる前提です]])。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum install mono-addon-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
どちらのコマンドも、関連パッケージを一緒にインストールします。&lt;br /&gt;
&lt;br /&gt;
=== NAnt のインストール ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;yum info nant&amp;quot; を実行して、nant のバージョンを確認しましょう。見つかったら、次のように入力すれば大丈夫です。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum install nant&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
これで、nant を普通に実行できます。&lt;br /&gt;
&lt;br /&gt;
yum リポジトリに nant がなかった場合、もしくは、OpenSimulator を動作させるのにはあまりも古すぎると感じた場合は、NAnt を [http://nant.sourceforge.net/ NAnt プロジェクトサイト] から取得してください。そこにある User Manual に詳細な手順が載っています。0.90 時点では、スタートアップスクリプトを以下のように作成します(NAnt を /usr/local/nant に展開したという前提です)。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo vi /usr/bin/nant&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ファイルの中には、このように書きます。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
exec mono /usr/local/nant/bin/NAnt.exe &amp;quot;$@&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
それから、実行権限をつけます。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chmod +x /usr/bin/nant&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これで、runprebuild.sh を実行して OpenSimulator を nant でビルドすることができるようになります。&lt;br /&gt;
&lt;br /&gt;
== openSUSE ==&lt;br /&gt;
&lt;br /&gt;
次のように入力します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo zypper install nant&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
それから、runprebuild.sh と nant を実行します。関連パッケージも一緒にインストールされます。&lt;br /&gt;
&lt;br /&gt;
== FreeBSD ==&lt;br /&gt;
&lt;br /&gt;
FreeBSD 6.2 では、次のようにします。&lt;br /&gt;
&lt;br /&gt;
 su&lt;br /&gt;
 cd /usr/ports/devel/subversion/ &amp;amp;&amp;amp; make install clean (you may also need to rebuild apr-svn if this step fails)&lt;br /&gt;
 cd /usr/ports/lang/mono/ &amp;amp;&amp;amp; make install clean&lt;br /&gt;
 cd /usr/ports/devel/nant/ &amp;amp;&amp;amp; make install clean&lt;br /&gt;
 cd /usr/ports/databases/sqlite3/ &amp;amp;&amp;amp; make install clean&lt;br /&gt;
 cd /usr/ports/x11-toolkits/libgdiplus/ &amp;amp;&amp;amp; make install clean&lt;br /&gt;
 cd /opensim/installation/directory/&lt;br /&gt;
 [[Download]] opensim&lt;br /&gt;
 cd opensim&lt;br /&gt;
 ./runprebuild.sh&lt;br /&gt;
 nant&lt;br /&gt;
&lt;br /&gt;
注) &amp;quot;System.DllNotFoundException: ./libopenjpeg-libsl-2.1.2.0.so&amp;quot; 問題の対応方法は、[[トラブルシューティング#System.DllNotFoundException: ..2Flibopenjpeg-libsl-2.1.2.0.so|トラブルシューティングの手順]] の通りですが、 &amp;quot;make&amp;quot; ではなく &amp;quot;gmake&amp;quot; を使ってください。&lt;br /&gt;
&lt;br /&gt;
ODE 物理エンジンでは、次の手順を実行します:&lt;br /&gt;
 cd /usr/ports/graphics/libGL/ &amp;amp;&amp;amp; make install clean&lt;br /&gt;
 cd /usr/ports/graphics/libGLU/ &amp;amp;&amp;amp; make install clean&lt;br /&gt;
 cd /opensim/installation/directory/&lt;br /&gt;
 svn co http://opensimulator.org/svn/opensim-libs/trunk opensim-libs&lt;br /&gt;
 cd opensim-libs/unmanaged/OpenDynamicsEngine2/&lt;br /&gt;
 sh autogen.sh&lt;br /&gt;
 ./configure --enable-shared --enable-release --disable-demos&lt;br /&gt;
 make&lt;br /&gt;
 mv ./ode/src/.libs/libode.so /opensim/installation/directory/opensim/bin/&lt;br /&gt;
&lt;br /&gt;
== Debian ==&lt;br /&gt;
&lt;br /&gt;
Debian 4 (Etch) の debian.org でのサポートは終了しました。5 (Lenny) 以降にアップデートしてから OpenSimulator を起動しましょう。詳細は、[http://www.debian.org/releases/lenny/i386/release-notes/ch-upgrading.html Upgrades from previous release@debian.org] を参照してください。&lt;br /&gt;
&lt;br /&gt;
Debian 5 (Lenny) 以降では、次のように入力します。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo aptitude install nant&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
それから、runprebuild.sh と nant を実行します。aptitude でなく、apt-get を使用しても構いません。どちらのコマンドも、関連パッケージも一緒にインストールします。&lt;br /&gt;
&lt;br /&gt;
Debian 5(Lenny, 以前の安定版), Debian 6(Squeeze, 安定版), Debian 7(Wheezy, テスト版) で検証しました。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:びるど}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E9%81%8B%E7%94%A8</id>
		<title>ハイパーグリッドのインストールと運用</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E9%81%8B%E7%94%A8"/>
				<updated>2012-03-04T07:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Installing and Running Hypergrid}}&lt;br /&gt;
&lt;br /&gt;
== ハイパーグリッドモードでの OpenSimulator のインストールと運用 ==&lt;br /&gt;
ハイパーグリッドのセットアップは OpenSimulator をスタンドアロンモードで動かしているかグリッドモードで動かしているかによって違います。バージョン 0.7 でもかなり変わっています。0.6.x の古いバージョンの OpenSimulator シミュレータを使っている場合は、このページの下のほうにある [[#OpenSimulator 0.6.x での設定]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
OpenSimulator シミュレータをハイパーグリッドからアクセスできるようにするには、外部から参照できる IP アドレスかドメイン名を使う必要があります。また、OpenSimulator シミュレータや地域が使う全てのポート (TCP と UDP) にポートフォワーディングを設定しないといけないかもしれません。通常は、グリッドモードでインストールすると 8002, スタンドアロンでは 9000 となります。地域は通常 9000 以降のポートを使います。詳細は、[[Network Settings]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== スタンドアロン ===&lt;br /&gt;
ハイパーグリッドの設定は OpenSim.ini の [Architecture] セクションで行われます。Include-HGStandalone の行のコメントだけを解除するようにしてください。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Architecture]&lt;br /&gt;
    ;Include-Standalone    = &amp;quot;config-include/Standalone.ini&amp;quot;&lt;br /&gt;
    Include-HGStandalone = &amp;quot;config-include/StandaloneHypergrid.ini&amp;quot;&lt;br /&gt;
    ;Include-Grid         = &amp;quot;config-include/Grid.ini&amp;quot;&lt;br /&gt;
    ;Include-HGGrid       = &amp;quot;config-include/GridHypergrid.ini&amp;quot;&lt;br /&gt;
    ;Include-SimianGrid   = &amp;quot;config-include/SimianGrid.ini&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
StandaloneCommon.ini では、[LoginService] と [GatekeeperService] セクションのネットワークアドレスを外部ネットワークアドレスに変更してください。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[LoginService]&lt;br /&gt;
    ; ... (このセクションの他の設定) ...&lt;br /&gt;
    HomeURI = &amp;quot;http://example.com:9000&amp;quot;&lt;br /&gt;
    GatekeeperURI = &amp;quot;http://example.com:9000&amp;quot;&lt;br /&gt;
    InventoryServerURI = &amp;quot;http://example.com:9000&amp;quot;&lt;br /&gt;
    AssetServerURI = &amp;quot;http://example.com:9000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [GatekeeperService]&lt;br /&gt;
    ; ... (このセクションの他の設定) ...&lt;br /&gt;
    ExternalName = &amp;quot;http://example.com:9000&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
これらのアドレスに違うポートを使いたいときは、OpenSim.ini の [Network] セクションにある HTTP リスナーポートの設定も修正してください。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Network]&lt;br /&gt;
    ; ... (このセクションの他の設定) ...&lt;br /&gt;
    http_listener_port = 9000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
最後に、今までに変更した設定に応じて地域設定を修正してください。[[#グリッド・スタンドアロン共通の地域設定]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== グリッドモード ===&lt;br /&gt;
グリッドモードでハイパーグリッドを使えるようにするには、Robust サーバと地域サーバ（シミュレータ）の設定を修正する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== Robust サーバ ====&lt;br /&gt;
Robust サーバは Robust.ini の代わりに Robust.HG.ini ファイルを使って起動します。このファイルがインストールパッケージに含まれていない場合は、Robust.HG.ini.example をコピーして作成してください。動作環境に合わせて適切な変更を行ってください（例：データベースの接続文字列の修正）。ハイパーグリッドには、次の設定項目が関連します。&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[LoginService]&lt;br /&gt;
    ; ... (このセクションの他の設定) ...&lt;br /&gt;
    HomeURI = &amp;quot;http://example.com:8002&amp;quot;&lt;br /&gt;
    GatekeeperURI = &amp;quot;http://example.com:8002&amp;quot;&lt;br /&gt;
    InventoryServerURI = &amp;quot;http://example.com:8002&amp;quot;&lt;br /&gt;
    AssetServerURI = &amp;quot;http://example.com:8002&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[GatekeeperService]&lt;br /&gt;
    ; ... (このセクションの他の設定) ...&lt;br /&gt;
    ExternalName = &amp;quot;http://example.com:8002&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これらのアドレスに違うポートを使いたいときは、[Startup] セクションの ''''ServiceConnectors'''' パラメタにあるポート番号を修正する必要があります。また、[Network] セクションにあるポート番号も修正しなければならないでしょう。&lt;br /&gt;
&lt;br /&gt;
これらの修正が終わったら、Robust サーバを起動できます。Windows/.NET では、次のようにします。&lt;br /&gt;
 Robust -inifile=Robust.HG.ini&lt;br /&gt;
Mono (例：Linux や OSX) では、次のようにします。&lt;br /&gt;
 mono Robust.exe -inifile=Robust.HG.ini&lt;br /&gt;
&lt;br /&gt;
==== シミュレータ ====&lt;br /&gt;
Robust サーバに接続する地域サーバ（シミュレータ）は OpenSim.ini ファイルから設定を読み込みます。ハイパーグリッドを有効にするには、[Architecture] セクションの Include-HGGrid の行のコメントを外してください。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Architecture]&lt;br /&gt;
    ;Include-Standalone    = &amp;quot;config-include/Standalone.ini&amp;quot;&lt;br /&gt;
    ;Include-HGStandalone = &amp;quot;config-include/StandaloneHypergrid.ini&amp;quot;&lt;br /&gt;
    ;Include-Grid         = &amp;quot;config-include/Grid.ini&amp;quot;&lt;br /&gt;
    Include-HGGrid       = &amp;quot;config-include/GridHypergrid.ini&amp;quot;&lt;br /&gt;
    ;Include-SimianGrid   = &amp;quot;config-include/SimianGrid.ini&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
=== グリッド・スタンドアロン共通の地域設定 ===&lt;br /&gt;
最後に、全ての地域が同じ外部ネットワークアドレスを使う必要があります。これは GatekeeperService に設定します。例えば、次のようにします。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Region One]&lt;br /&gt;
    ; ... (このセクションの他の設定) ...&lt;br /&gt;
    ExternalHostName = &amp;quot;example.com&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
地域が使うポートに到達できるように、ネットワークを保護するファイアウォールは TCP と UDP のリクエストを通さなければなりません。&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator 0.6.x での設定 ==&lt;br /&gt;
&lt;br /&gt;
=== インストール ===&lt;br /&gt;
&lt;br /&gt;
OpenSimulator をチェックアウトし、プレビルド・ビルドを通常通り行うか、バイナリパッケージを [[メインページ]] からダウンロードします。OpenSimulator を他のマシンと一緒にグリッドモードで運用している場合、OpenSim.ini を修正してハイパーグリッドを有効にするだけでいいです。&lt;br /&gt;
&lt;br /&gt;
スタンドアロンで運用していてネットワーク接続ができるようにしたい場合、またはループバックアドレス (127.0.0.1) でグリッドを運用している場合、[Network] セクションの全てのサーバアドレスを変更しなければなりません。以下を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Network セクションの例 ===&lt;br /&gt;
&lt;br /&gt;
==== スタンドアロンのネットワーク設定の標準的な例 ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Network]&lt;br /&gt;
http_listener_port = 9000&lt;br /&gt;
&lt;br /&gt;
grid_server_url = &amp;quot;http://example.com:9000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
grid_send_key = null&lt;br /&gt;
grid_recv_key = null&lt;br /&gt;
&lt;br /&gt;
user_server_url = &amp;quot;http://example.com:9000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
user_send_key = null&lt;br /&gt;
user_recv_key = null&lt;br /&gt;
&lt;br /&gt;
asset_server_url = &amp;quot;http://example.com:9000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inventory_server_url = &amp;quot;http://example.com:9000&amp;quot;&lt;br /&gt;
messaging_server_url = &amp;quot;http://example.com:9000&amp;quot;&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== グリッドサーバのネットワーク設定の標準的な例 ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Network]&lt;br /&gt;
http_listener_port = 9000&lt;br /&gt;
&lt;br /&gt;
grid_server_url = &amp;quot;http://example.com:8001&amp;quot;&lt;br /&gt;
grid_send_key = null&lt;br /&gt;
grid_recv_key = null&lt;br /&gt;
&lt;br /&gt;
user_server_url = &amp;quot;http://example.com:8002&amp;quot;&lt;br /&gt;
user_send_key = null&lt;br /&gt;
user_recv_key = null&lt;br /&gt;
&lt;br /&gt;
asset_server_url = &amp;quot;http://example.com:8003&amp;quot;&lt;br /&gt;
inventory_server_url = &amp;quot;http://example.com:8003&amp;quot;&lt;br /&gt;
messaging_server_url = &amp;quot;http://example.com:8006&amp;quot;&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== OSGrid に接続しているサーバのネットワーク設定 ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Network]&lt;br /&gt;
http_listener_port = 9000&lt;br /&gt;
grid_server_url = &amp;quot;http://osgrid.org:8001&amp;quot; ;デフォルト 8003&lt;br /&gt;
grid_send_key = &amp;quot;1234&amp;quot;&lt;br /&gt;
grid_recv_key = &amp;quot;1234&amp;quot;&lt;br /&gt;
&lt;br /&gt;
user_server_url = &amp;quot;http://osgrid.org:8002&amp;quot; &lt;br /&gt;
user_send_key = &amp;quot;1234&amp;quot;&lt;br /&gt;
user_recv_key = &amp;quot;1234&amp;quot;&lt;br /&gt;
&lt;br /&gt;
asset_server_url = &amp;quot;http://assets.osgrid.org:8003&amp;quot; &lt;br /&gt;
inventory_server_url = &amp;quot;http://osgrid.org:8004&amp;quot; ;デフォルト 8003&lt;br /&gt;
messaging_server_url = &amp;quot;http://osgrid.org:8006&amp;quot;&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== ハイパーグリッドを有効にするには、OpenSim.ini の修正が必要です ====&lt;br /&gt;
&lt;br /&gt;
- OpenSim.ini の上のほうにある以下の行を変更します。&lt;br /&gt;
&amp;lt;pre&amp;gt;hypergrid = false → true&amp;lt;/pre&amp;gt;&lt;br /&gt;
- ### それから、WORLD MAP セクションを追加修正して次のようにします。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;; ##&lt;br /&gt;
; ## WORLD MAP&lt;br /&gt;
; ##&lt;br /&gt;
&lt;br /&gt;
WorldMapModule = &amp;quot;WorldMap&amp;quot;&lt;br /&gt;
MapImageModule = &amp;quot;MapImageModule&amp;quot;&lt;br /&gt;
WorldMapModule = &amp;quot;HGWorldMapModule&amp;quot; ;この行は OpenSim.ini.example にはありません&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
''※ HGWorldMapModule は、他のグリッドにテレポートした後、元いたグリッドから残っている地図のタイルを除去します。'' &lt;br /&gt;
&lt;br /&gt;
- それから、下の方の [Archictecture] セクションを修正します。 &lt;br /&gt;
&lt;br /&gt;
対応する Include-HG* = の行のコメントを外し、コメントが外れている行が１個だけになるようにします。（下の例は、スタンドアロンでハイパーグリッド対応する場合）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Architecture]&lt;br /&gt;
;Include-Standalone = &amp;quot;config-include/Standalone.ini&amp;quot; ; デフォルトではコメントアウトされていません&lt;br /&gt;
Include-HGStandalone = &amp;quot;config-include/StandaloneHypergrid.ini&amp;quot;&lt;br /&gt;
;Include-Grid = &amp;quot;config-include/Grid.ini&amp;quot;&lt;br /&gt;
;Include-HGGrid = &amp;quot;config-include/GridHypergrid.ini&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
これで OpenSimulator シミュレータは内向き・外向きともにハイパーグリッドが使えるようになります。&lt;br /&gt;
&lt;br /&gt;
== 4096 の地域制限 ==&lt;br /&gt;
ビューアの制約により、4096 個以上の地域をまたがったテレポートはうまくいきません。ほとんどのビューアがテレポートを実行しますが、テレポート先の地域が表示されないため、いつまで経っても見ることができません。具体的な例を出すと、(1000, 1000) の地域にいる場合、(5095, 5095) よりも離れた地域にテレポートすることができません。遠くの地域にテレポートするには、自分の地域をテレポート先の近くに置くか、テレポート元・先両方の地域からテレポートできるような中継地域を使う必要があります。&lt;br /&gt;
&lt;br /&gt;
[[Public Hypergrid Nodes]] で有名なグリッドやスタンドアロンを参照し、これらがどこにあるかを調べてみましょう。&lt;br /&gt;
&lt;br /&gt;
== 重要事項 ==&lt;br /&gt;
必ず「ホーム」を設定しておいてください。ホームの地域がない場合、ハイパーリンクのテレポートは動作しないことがあります。ホームを設定するには、ローカルの地域のどれかに行き、ビューアで「ホームをここに設定」を選択します。&lt;br /&gt;
&lt;br /&gt;
地域、スタンドアロン、ハイパーグリッド間などのテレポートをスクリプトで行うには、osTeleportAgent 関数を使います。例は右のリンク先にあります：[[OsTeleportAgent]]&lt;br /&gt;
&lt;br /&gt;
== 地域同士をリンクする (オプション) ==&lt;br /&gt;
&lt;br /&gt;
=== 方法その１ ===&lt;br /&gt;
&lt;br /&gt;
コンソールで、次のように入力します。&lt;br /&gt;
&amp;lt;pre&amp;gt;link-region &amp;amp;lt;Xloc&amp;amp;gt; &amp;amp;lt;Yloc&amp;amp;gt; osl2.nac.uci.edu:9006&amp;lt;/pre&amp;gt;&lt;br /&gt;
Xloc と Yloc は遠すぎず、近すぎず、自分の空間に適した値にしてください。&amp;lt;br /&amp;gt;&lt;br /&gt;
osl2.nac.uci.edu と 9006 には、リンクしたい地域のあるシミュレータのドメイン名／IP アドレスと http_listener_port が入ります。１つのインスタンス上で動作する地域を指定してリンクすることもできます。下の例のように、地域の名前を最後に付け加えます。&lt;br /&gt;
&amp;lt;pre&amp;gt;link-region 997 997 osl2.nac.uci.edu:9006:UCI Welcome&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 方法その２ ===&lt;br /&gt;
&lt;br /&gt;
XML ファイルからのリンクの読み込みもサポートするようになりました。&lt;br /&gt;
&lt;br /&gt;
コンソールコマンドを使います: link-region &amp;amp;lt;URI&amp;amp;gt; [&amp;amp;lt;excludeList&amp;amp;gt;] &lt;br /&gt;
&lt;br /&gt;
URI にはローカルにある XML ファイルか HTTP サーバにある XML 文書のパスが入ります。&lt;br /&gt;
&lt;br /&gt;
XML ファイルの書式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Nini&amp;gt;&lt;br /&gt;
&amp;lt;Section Name=&amp;quot;Region1&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;Key Name=&amp;quot;xloc&amp;quot; Value=&amp;quot;1002&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;yloc&amp;quot; Value=&amp;quot;1006&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;externalPort&amp;quot; Value=&amp;quot;9006&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;externalHostName&amp;quot; Value=&amp;quot;osl2.nac.uci.edu&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;localName&amp;quot; Value=&amp;quot;OSGrid-Gateway&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;real-xloc&amp;quot; Value=&amp;quot;10222&amp;quot;/&amp;gt; //元のグリッドにおける実際のロケーション（任意）&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;real-yloc&amp;quot; Value=&amp;quot;10265&amp;quot; /&amp;gt; //元のグリッドにおける実際のロケーション（任意）&lt;br /&gt;
&amp;lt;/Section&amp;gt;&lt;br /&gt;
&amp;lt;Section Name=&amp;quot;Region2&amp;quot;&amp;gt; &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Section&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Nini&amp;gt;&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[注意] セクションの名前 (Section Name) は何でもよいですが、一意でなければならず、名前の中に空白があってはいけません。&lt;br /&gt;
&lt;br /&gt;
==== ExcludeList:(除外リスト) ====&lt;br /&gt;
&lt;br /&gt;
除外リスト(Exclude List)は１つの文字列引数で、次のような書式となります。&lt;br /&gt;
excludeList:&amp;amp;lt;SectionName&amp;amp;gt;[;&amp;amp;lt;SectionName&amp;amp;gt;] &lt;br /&gt;
&lt;br /&gt;
XML ファイルから読み込む際、リストに記載されたセクションは全て無視され、ハイパーグリッドへのリンクは生成されなくなります。&lt;br /&gt;
&lt;br /&gt;
この仕組みにより、Web サーバにリンクリストを作って、誰でも自分の地域を追加できるようになります。その際は、必ず自分自身のセクション名を自分の地域の除外リストに追加しなければなりません。&lt;br /&gt;
&lt;br /&gt;
例えば、OpenSimulator の２回目の誕生日に向けて、誰かがオンラインで編集可能なリストを作ったとします。このような感じでしょうか。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;Nini&amp;gt;&lt;br /&gt;
&amp;lt;Section Name=&amp;quot;OSGrid-Party&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;Key Name=&amp;quot;xloc&amp;quot; Value=&amp;quot;1002&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;yloc&amp;quot; Value=&amp;quot;1006&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;externalPort&amp;quot; Value=&amp;quot;9006&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;externalHostName&amp;quot; Value=&amp;quot;osl2.nac.uci.edu&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Key Name=&amp;quot;localName&amp;quot; Value=&amp;quot;OSGrid-Gateway&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Section&amp;gt;&lt;br /&gt;
&amp;lt;Section Name=&amp;quot;UCIGrid-Party&amp;quot;&amp;gt; &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/Section&amp;gt;&lt;br /&gt;
&amp;lt;/Nini&amp;gt;&amp;lt;/source&amp;gt; &lt;br /&gt;
こうすると、自分の地域を &amp;quot;MW-Party&amp;quot; というセクション名で登録できます。その後、ハイパーグリッドへの参加を希望する当該地域を起動するときに、次のコマンドを使います。&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;quot;link-region &amp;amp;lt;XML ファイルの URI&amp;amp;gt; excludeList:MW-Party&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
これで、自分の地域は自分自身へのハイパーリンクを作成しようとしなくなります。&lt;br /&gt;
&lt;br /&gt;
=== 方法その３ (動的リンク) ===&lt;br /&gt;
&lt;br /&gt;
r8193 から、ハイパーグリッド対応地域にいると、下に書いた方法のどれかで（もっとありそうですが）、SIM に動的にリンクを貼ってテレポートすることができるようになります。下のほうにあるリストで調べるなどして、目的地のアドレスさえわかれば大丈夫です。&lt;br /&gt;
&lt;br /&gt;
1) チャット画面から secondlife://ucigrid04.nacs.uci.edu:9007/ などと入力して、チャット履歴を表示してリンクをクリックします。&lt;br /&gt;
&lt;br /&gt;
2) 世界地図を開いて検索窓に ucigrid04.nacs.uci.edu:9007 のように入力します。&lt;br /&gt;
&lt;br /&gt;
3) 内蔵ブラウザを使って '''secondlife://ucigrid04.nacs.uci.edu:9007'''/ のようなリンクがあるページ（http://www.ics.uci.edu/~lopes/hypergrid/test.html など）にアクセスします。&lt;br /&gt;
&lt;br /&gt;
ここでも、右のような感じで、１つのインスタンス上で動作する地域を指定してリンクすることができます。 '''secondlife://ucigrid04.nacs.uci.edu:9007:Gateway 7000/''' &lt;br /&gt;
&lt;br /&gt;
=== 4096 の地域制限をチェックする ===&lt;br /&gt;
[[#4096 の地域制限|4096 の地域制限]]により、0.7.0.1 からは、作成しようとしているリンクが１つ以上の自分の地域からアクセスできるか OpenSimulator シミュレータで検証されるようになりました。リンクしようとしている地域から 4096 以内の距離に、自分のグリッドやスタンドアロンの地域が１つもないと、リンクは却下されます。StandaloneCommon.ini（スタンドアロンの場合）や Robust.HG.ini（グリッドの場合）で、このチェックを行わないようにすることができます。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[GridService]&lt;br /&gt;
      Check4096 = false&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 地域の永久リンク ===&lt;br /&gt;
グリッドモードでは、方法その１とその２は Robust コンソールでも地域コンソールでも動作します。地域コンソールでは、リンクされた地域はデータベースに格納されず、地域がシャットダウンされると設定が消えます。Robust コンソールでリンクされた地域は unlink-region コマンドで明示的に解除されない限り再起動しても残ります。&lt;br /&gt;
&lt;br /&gt;
== リンクされている地域を一覧で表示する ==&lt;br /&gt;
&lt;br /&gt;
リンクされている全ての地域の一覧を表示するには、コンソールで次のコマンドを実行してください（0.7.1 r/13457 以降で利用可能。0.7-post-fixes でも可）。&lt;br /&gt;
&amp;lt;pre&amp;gt;show hyperlinks&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 地域のリンクを解除する ==&lt;br /&gt;
&lt;br /&gt;
コンソールで次のように入力してください。&lt;br /&gt;
&amp;lt;pre&amp;gt;unlink-region osl2.nac.uci.edu:9006&amp;lt;/pre&amp;gt;&lt;br /&gt;
または&lt;br /&gt;
&amp;lt;pre&amp;gt;unlink-region &amp;amp;lt;local region name&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
データベースに MySQL を使っている場合、地域の名前は 32 文字までしか入りません。リンクされている地域の名前がそれよりも長い場合は、丸められます。名前が 32 文字に丸められると、リンク解除コマンドは１つの地域しか検索しません。&lt;br /&gt;
&lt;br /&gt;
== 参考情報 ==&lt;br /&gt;
&lt;br /&gt;
実装された OSSL 関数: [[OSSL Implemented]] &lt;br /&gt;
&lt;br /&gt;
利用可能な OSSL 関数: [[OSSL Enabling Functions]] &lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドのセキュリティ: [[Hypergrid Security]] &lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドでの外部ユーザの BAN: [[Banning Foreign Users in Hypergrid]] &lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドの公共ノード一覧: [[Public Hypergrid Nodes]] &lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドのインベントリアクセス: [[Hypergrid Inventory Access|Hypergrid Inventory Access (proposal)]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:はいぱーぐりっどのいんすとーる}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89</id>
		<title>ハイパーグリッド</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89"/>
				<updated>2012-03-04T07:06:41Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks/ja|Hypergrid}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator のハイパーグリッド(HyperGrid) ==&lt;br /&gt;
&lt;br /&gt;
こちらもご覧ください [[Grider]]; [[Virtual World Model]]; [[HyperGrid Team]]&lt;br /&gt;
&lt;br /&gt;
=== ハイパーグリッドとは何ですか？ ===&lt;br /&gt;
&amp;lt;!-- [[image:VWV.jpg|250px|thumb|Web of Virtual Worlds]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドは OpenSimulator の拡張機能で、これを使うことでインターネット上の他の OpenSimulator へリンクし、エージェント (Agent) をシームレスにこれらの OpenSimulator へ移動させることができるようになります。この機能はスタンドアロンモードでもグリッドモードでも使用できます。ハイパーグリッドは仮想空間がウェブへ登場するために大きく貢献しています。&lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドの基本的な概念は、地域／グリッドの管理者が他人が運営するハイパーグリッド地域のハイパーリンクを自分のマップ上に作成する、というものです。ハイパーリンクが作成されると、ユーザは自分の地域と同じようにリンク先の地域とも交流できます。具体的にいうと、ユーザはその地域へテレポートすることができます。ユーザがハイパーリンク先の地域に到着すると、元々いた空間からログアウトせずにそのまま他の仮想空間に触れることになります。また、自分のインベントリには今まで通りアクセスできます。&lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドは GForge プロジェクトとして始まりましたが、今では OpenSimulator の標準パッケージに組み込まれています。OpenSimulator をハイパーグリッドモードで運用したい場合は、[[Installing and Running Hypergrid|Installing and Running]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 仮想空間のハイパーリンク ===&lt;br /&gt;
[[Image:hghyperlink.jpg|250px|thumb|A Virtual World Hyperlink]]&lt;br /&gt;
&lt;br /&gt;
ウェブのハイパーリンクはみなさんおなじみです。しかし、仮想空間のハイパーリンクとは何でしょうか？&lt;br /&gt;
&lt;br /&gt;
ハイパーグリッド・モデルでは、仮想空間の 2D マップをウェブページと同じように考えます。仮想空間のハイパーリンク自体は、マップ上の１つの地域を指します。&lt;br /&gt;
&lt;br /&gt;
OpenSimulator をベースとした仮想空間の基本モデルでは、既にハイパーグリッドの概念をいくらか取り入れています。マップを使って別の地域にテレポートすると、自分のエージェントが他の OpenSimulator サーバに移動する可能性があります。この移動は「エージェント転送 (Agent Transfer)」という立派な名前で、既に稚拙ながらウェブに存在しているものです。ハイパーリンクが参照されたときに発生します。ただし、基本モデルでは、ハイパーリンクには２つの厳しい制約が課せられています。&lt;br /&gt;
# 地域のマップ全体をグリッドサービス(Grid Service)として知られるセントラルサービス(Central Service)で管理すること。このサービスで、空間の全体像を全ての地域に提供すること。&lt;br /&gt;
# 転送可能なエージェントは、ユーザサービス(User Service)と呼ばれる他のセントラルサービスが知っているユーザのものであること。入ってくるユーザの情報がユーザサービスのデータベースに存在しなければ、エージェントの転送を行わない。&lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドは、単にこれらの２つの制約を取り払ったものです。&lt;br /&gt;
&lt;br /&gt;
最初に、マップのコントロール機能をグリッドサーバからそれぞれの OpenSimulator インスタンスに移すことで、それぞれの OpenSimulator のローカルマップに「隣の地域 (Neightbers)」を追加できるようになっています（ただし、グリッド管理者が希望すれば、ハイパーリンクはグリッドサーバから提供するようにもできます）。こうすると、仮想空間はもっと面白く変化に富んだものになります。ある OpenSimulator で見ることのできるマップは、ハイパーリンクでテレポートすると、全く違うものになってしまいます。OpenSimulator の管理者として、マップに表示したい他の OpenSimulator を自由に設定することができます。&lt;br /&gt;
&lt;br /&gt;
次に、知らないユーザ、例えば、他の仮想空間で登録したユーザなどのエージェントを転送できるようになっています。ハイパーグリッドでは、１つの中央集権的なユーザサービスを前提としたものではなく、世界中に無数に散らばったサービスで動作するようになっています。ハイパーグリッドに対応した OpenSimulator 間でエージェントが転送されると、ユーザに関する多くの詳細情報が渡ります。この情報の中には、転送を行うユーザが必要とする、サーバの一覧が含まれています。&lt;br /&gt;
&lt;br /&gt;
=== 利用シナリオ ===&lt;br /&gt;
&lt;br /&gt;
ここに利用シナリオを一部紹介します。これらのシナリオの間に明確な区別はなく、だいぶ重なっています。これは排他的なリストではありません。この説明がハイパーグリッドを使ってみる際のヒントになればと思います。うまいシナリオがありましたら、どうぞこのリストに追加していってください。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:topoA.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Personal Worlds (個人空間)'''&lt;br /&gt;
&lt;br /&gt;
最初のシナリオは、スタンドアロンの OpenSimulator でのものです。通常、スタンドアロンはインターネットからは完全に切り離されています。しかし、ハイパーグリッドモードで動作させると、スタンドアロンはネットワークに接続することができます。こうすると、仮想空間を自分のマシンで動かしながら、好きなところにリンクすることができます。例えば、友達のハイパーグリッド対応 OpenSimulator にリンクしたり、OSGrid のような公共グリッドのハイパーグリッド・ゲートウェイにリンクしたりすることができます。&lt;br /&gt;
&lt;br /&gt;
このシナリオのいいところは、自分のアセットは全て自分のマシンに格納され、他のサーバーに格納されないことです。どこにでもあるようなバックエンド・ツールをつかってバックアップをとることができます。そんなによくないところは、自分のアセットが全部自分のマシンにあることです！ハードディスクがやられると吹っ飛びます（このため、常日頃からこまめにバックアップをとるようにしましょう）。&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:topoB.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Communities (コミュニティ)'''&lt;br /&gt;
&lt;br /&gt;
２番目のシナリオは、広義のコミュニティに関するものです。人々が集まって、グループで小さなコミュニティ・グリッド（例: 集団活動を行う共通の仮想空間）を運営するといったものです。しかし同時に、コミュニティのメンバーが自分のスタンドアロンの仮想空間をメンテナンスすることになります。スタンドアロン OpenSimulator はコミュニティ・グリッドにリンクし、コミュニティ・グリッドは各メンバーの仮想空間に逆リンクを貼り、他の興味のある場所へリンクします。&lt;br /&gt;
&lt;br /&gt;
メンバーの個人情報は各自のスタンドアロン OpenSimulator 上にあり、各自のアセットもそこに格納されるでしょう。ただし、コミュニティ地域で表示されるアセットは、グリッドのアセットサーバに格納されます。&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:topoC.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Grid Public Regions (グリッド公共地域)'''&lt;br /&gt;
&lt;br /&gt;
箱庭（Walled-Garden、閉鎖グリッド）は広く普及し、役に立つさまざまな機能を提供しています。箱庭グリッドの管理者が運営に興味を示しそうな、ハイパーグリッドのハイブリッド・モード(Hybrid Mode)があります。ハイブリッド・モードでは、グリッド上のほとんどの OpenSimulator インスタンスは箱庭モードとして今まで通り動作するため、外部からの訪問は受け付けません - 物理的にアクセス不可能です。しかし、グリッド上の一部の OpenSimulator はハイパーグリッド・モードで動作することができるため、外部からの訪問を受け付けることができます。このやり方では、当該グリッドのローカルユーザと登録されていないユーザが出会うゲートウェイ(Gateway)が存在します。事前にアカウント登録することなく誰でもゲートウェイ地域を訪れることができることから、グリッドに新しいユーザを呼び込む良い戦略ともなります。&lt;br /&gt;
&lt;br /&gt;
ハイブリッドモードはウェブで起きることとよく似ています。例えば、Facebook の公開ページは誰でもアクセスできますが、Facebook のユーザだけが内部のページにアクセスできます。&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:topoD.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Level Games（レベルゲーム）'''&lt;br /&gt;
&lt;br /&gt;
OpenSimulator の通常のバージョンでは、グリッドの全ての地域が必ず世界地図に掲載されます。ハイパーグリッドではその制約がなくなります。このため、プレイヤーの居場所によって、仮想空間の様子が異なるバーチャルゲームを簡単に制作できるようになります。&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ハイパーグリッドの実装 ==&lt;br /&gt;
&lt;br /&gt;
=== ハイパーリンクとエージェント転送 ===&lt;br /&gt;
&lt;br /&gt;
OpenSimulator から他へリンクを作成すると、情報のリクエスト先であるリンク先の OpenSimulator にメッセージが送信されます。取得する情報には、OpenSimulator をホストしているネットワークの情報、ローカルグリッドでの最初の地域の座標がリージョン・ハンドル形式で含まれます。例えば、ノード x.com:9000 をリンクして、それを自分のローカルマップの 900, 900 に置こうとしているとします。向こうの OpenSimulator では１つ以上の地域が稼働していて、それらの座標は向こうのローカルマップでは 900, 900 ではなく、最初の地域が 1100, 1100 にあるとします。こちらからすると、向こうの座標がどうなっていようと関係なく、知る必要もありません -- これに気づけば、2D マップで提供された「空間」の中心はどうでもいいということがわかります。自分は 900, 900 に置きたいのですから。向こうのシミュレータの「実際の」位置というのは、自分の空間から他の OpenSimulator へテレポートするときに、LindenLab ビューアが使用するだけです。この異なる座標間のマッピングが OpenSimulator のハイパーリンクの要となります。ハイパーグリッドの実装において、簡単だけど重要なことです。このマッピングは TeleportFinish イベントで発生します。ビューアにローカル座標を送信する代わりに、ハイパーグリッド・テレポート・ラッパーはリモート座標を送信します。&lt;br /&gt;
&lt;br /&gt;
エージェントがハイパーリンクを使ってテレポートすると、次のようなことが起こります。まず、 InformRegionOfChildAgent の前に、&amp;quot;expect_hg_user&amp;quot; メソッドで、ローカルの OpenSimulator が当該ユーザが外部からやってくる旨をリモートの OpenSimulator に通知します。このメッセージは、ユーザサーバ、インベントリサーバ、アセットサーバなど、このユーザが使用する全てのサーバに行き渡ります。リモートの OpenSimulator はローカルのユーザ・プロフィール・キャッシュにそのユーザのエントリを作成しますが、ユーザ・データベースには作成しません。外部ユーザの情報は永続させません。これが終わったら、通常のテレポートと全く同じようにテレポート処理されます。唯一の違いは、リージョン・ハンドルが、リモート地域のローカルグリッドでのハイパーリンク座標を指すか、ローカルグリッドでの実際の座標を指すかが切り替わるぐらいです。&lt;br /&gt;
&lt;br /&gt;
要約すると、ハイパーグリッドは新しい概念を２つ導入しました。ハイパーリンクという概念と、「ローカルユーザ(Local User)」「[[Banning Foreign Users in Hypergrid|外部ユーザ(Foreign User)]]」という概念です。&lt;br /&gt;
&lt;br /&gt;
=== インベントリへのアクセス ===&lt;br /&gt;
&lt;br /&gt;
外部からのインベントリへのアクセスは従来のシーン・インベントリ会話処理 (Scene-Inventory Interactions) にコードを追加して、ユーザのアセットサーバからインベントリ・アセットを出し入れするようにラップすることで実現しています。インベントリにアクセスすると、ハイパーグリッド・ラッパーはユーザが外部ユーザかを判定し、そうであれば、ラッパーはユーザのアセットサーバから必要なアセットを取得して、ローカルのアセットキャッシュやサーバに格納します。その後、ラッパーは従来のインベントリアクセス関数に制御を引き継ぎます。インベントリに何か追加されると、ハイパーグリッド・ラッパーはイベントを起こして通知し、アセットをユーザのアセットサーバに入れます。やりとりされたアイテムの識別情報はキャッシュで管理されるため、アイテムの転送が繰り返し発生することはありません。&lt;br /&gt;
&lt;br /&gt;
ハイパーグリッドに対応した OpenSimulator は結果として複数のアセットサーバとやりとりすることとなります。このやりとりは、複数の GridAssetClient インスタンスを作成することでわかりやすく実装されています。&lt;br /&gt;
&lt;br /&gt;
=== ハイパーグリッドのクラス ===&lt;br /&gt;
&lt;br /&gt;
現在、ハイパーグリッドは OpenSimulator 名前空間の外で実装されています。このため、従来の挙動と新しい挙動の間に明確な区別がついています。HyperGrid という独自の名前空間で実装されています。この中には、OpenSimulator のソフトウェア構成にならって、４つのサブの名前空間があります。これから、具体的に説明します。&lt;br /&gt;
&lt;br /&gt;
* '''OpenSim.Framework''':&lt;br /&gt;
** ForeignUserProfileData が UserProfileData を拡張し、ユーザの「ホーム」の情報を追加しています。具体的には、ホームのアドレス、ポート、リモートのポートです。ユーザのホームはユーザのユーザサービスにおけるホームではありません。ユーザが自分でホームと決めた OpenSimulator になります。ホームへ戻る (Ctrl-Shift-H) を実現するために必要な処理です。&lt;br /&gt;
** HGNetworkServersInfo は NetworkServersInfo の考え方を受け継ぎますが、継承や包含の関係ではありません。今のところ、これはユーティリティクラスです。主要な２つの機能で、サーバのドメイン名から IP アドレスを解決し、整形したものを bool IsLocalUser(...) に回答しています。&lt;br /&gt;
&lt;br /&gt;
* '''OpenSim.Region.Framework.Scenes.Hypergrid''':&lt;br /&gt;
** HGSceneCommunicationService は SceneCommunicationService を拡張し、RequestTeleportToLocation をオーバーライドしています。基底メソッドに対して２つの非常に小さな、しかし重要な変更を行っています。(a) TeleportFinish イベントで、テレポート先地域がハイパーリンクの場合に、リージョン・ハンドルを切り替えています。(b) ハイパーリンクのテレポートに備え、終了時に必ずコネクションをクローズしています。&lt;br /&gt;
** HGScene は Scene を拡張し、TeleportClientHome(...) をオーバーライドしています。基底メソッドに対する唯一の変更は、ユーザサービスはまだ完全に外部ユーザのためにラップされていないため、暫定的にユーザサーバとの関係を切ったことです。ユーザサービスが適切にラップされれば、このクラスは不要となります。&lt;br /&gt;
** HGScene.Inventory は HGScene の内部クラスです。このような実装は OpenSimulator フレームワークでよく見かけます。この HGScene の内部クラスでは、一部のインベントリ・シーン会話処理メソッドをオーバーライドし、ユーザのアセットサーバからの出し入れができるようになっています。出し入れが完了したら、このメソッドは基底メソッドに制御を引き継ぎます。&lt;br /&gt;
** HGAssetMapper: このクラスはハイパーグリッド専用で、ユーザがいる外部の地域とユーザのアセットサーバの間でアセットの出し入れの管理をします。&lt;br /&gt;
&lt;br /&gt;
* '''OpenSim.Region.Communications.HyperGrid''' は OpenSim.Region.Communications.* の寄せ集めです。ここにほとんどのハイパーグリッドの拡張機能が入っています。ハイパーグリッドのコミュニケーション処理で１つ余分な処理をしているのがその理由の１つです。その処理で、スタンドアロンをネットワーク接続可能にしています。&lt;br /&gt;
** HGCommunicationsStandalone は CommuniationsLocal を拡張しています。基底クラスと同じように、複数のネットワークを収容するハブとなっており、これはスタンドアロンモードで利用できます。主な違いは、これらのサービスは OpenSimulator にあるサービスの拡張であることです。&lt;br /&gt;
** HGCommunicationsGridMode は直接 CommunicationsManager を継承しています。これはグリッドモードで使用できるネットワークサービスのハブです。OpenSimulator の拡張となっています。&lt;br /&gt;
** HGGridServices (基底クラス), HGGridServicesStandalone, HGGridServicesGridMode (サブクラス) は OpenSimulator のインターフェースである IGridServices と IInterRegionCommunications を実装しています。サブクラスの２つはそれぞれ LocalBackEndServices と OGS1GridServices のラッパーとなっています。３つのクラスを通して、共通のパターンで実装されています。これから会話をする地域がハイパーリンクかを判定し、そうでなければ処理を LocalBackEndServices/OGS1GridServices に引き継ぎます。ハイパーリンクであれば、HGGridServices に処理を押し上げます。HGGridServices では、代わりに、ハイパーリンク地域の管理を行い、地域間連携プロトコルの２つの追加項目を指定します。&lt;br /&gt;
*** region_uuid: 地域をリンクする際に必要&lt;br /&gt;
*** expect_hg_user: expect_user インターフェースに似ていますが、転送するユーザに関するより詳細な情報が含まれます。 具体的には、ユーザの全てのサーバです（インベントリ、アセット、ユーザ、ホームなど）。&lt;br /&gt;
** HGInventoryService は LocalInventoryService を拡張し、ISecureInventoryService を実装ています。このクラスはまさに野良処理の寄せ集めのようなクラスで、スタンドアロンユーザ向けのローカルのサービスアクセスと、外に出て行ったときのためのリモートのインベントリアクセスが混ざっています。今のところは、OGS1InventoryService と OGS1SecureInventoryService を巻き込んで見苦しくなるのを避けるために、コピペを乱発しています。HGInventoryService はいつでも ISecureInventoryService です。全てのメソッドは同じパターンになっています。ユーザがローカルのスタンドアロンユーザであるかを判定し、もしそうなら、（LocalInventoryService の）基底メソッドに処理を引き継ぎます。そうでないなら、セキュアなリモートアクセスを実施します。&lt;br /&gt;
** HGUserServices は OSG1UserServices をラップしていますが、まだ動作しません。&lt;br /&gt;
&lt;br /&gt;
* '''OpenSim.Region.CoreModules.HyperGrid''' は３つの地域モジュールの集合です。&lt;br /&gt;
** HGWorldMapModule は WorldMapModule を拡張しています。基底クラスのものをほとんど再利用しています。唯一の小さな変更は RequestMapBlocks で、オフラインのマップ閉塞信号をクライアントに送信しようとします。&lt;br /&gt;
** HGStandaloneInventoryService と HGStandaloneAssetService は名前通りの処理を行います。これらはスタンドアロンのインベントリとアセットにアクセスする地域モジュールで、スタンドアロンユーザが出かけるときに動作します。考え方としては、これらのモジュールと REST のインベントリ／アセットプラグインには多くの共通点があります。残念ながら、プラグインは使えませんでした。プラグインは従来のインベントリ／アセットサーバで使用されていたインターフェースと完全に異なっていたからです。ハイパーグリッドへのアクセスは一貫したインターフェースでなければなりません。&lt;br /&gt;
&lt;br /&gt;
== インストールと実行 ==&lt;br /&gt;
&lt;br /&gt;
[[ハイパーグリッドのインストールと運用]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ハイパーグリッドとセキュリティ ==&lt;br /&gt;
&lt;br /&gt;
[[Hypergrid Security]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 外部ユーザの BAN ==&lt;br /&gt;
&lt;br /&gt;
[[Banning Foreign Users in Hypergrid]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ハイパーグリッドの公開ノード ==&lt;br /&gt;
&lt;br /&gt;
[[Public Hypergrid Nodes]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ハイパーグリッドのリスト ==&lt;br /&gt;
[[Hypergrid Lists]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== 開発者ミーティング ==&lt;br /&gt;
&lt;br /&gt;
[[Hypergrid Meetings]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:はいぱーぐりっど}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0</id>
		<title>トラブルシューティング</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0"/>
				<updated>2012-03-04T07:06:31Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Troubleshooting}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
このページには、システム固有の有用な設定や、遭遇する可能性のある問題を解決するためのアドバイスを掲載しています。&lt;br /&gt;
__TOC__&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 一般的なヒント ==&lt;br /&gt;
&lt;br /&gt;
OpenSimulator の起動が完了して、地域コンソールでコマンドが入力できる状態となっていれば、&amp;quot;config get&amp;quot; や &amp;quot;config save&amp;quot; コマンドを使って、現在の設定を調べることができます。[[サーバコマンド]] (または、コンソールで help と入力) に詳しい説明があります。これは、トラブルの原因を究明する際に、誤った設定を修正するのに役に立ちます。&lt;br /&gt;
&lt;br /&gt;
また、.NET のランタイムとデータベースのバージョンが適切か確認してください。データベースのバージョンについては、[[設定#データベース]] を参照してください。また、.NET 3.5 以降を使用しなければなりません。.NET 2.0 には System.Core がありません。Windows の .NET を使っているのであれば、3.5 か 4 の更新モジュールをダウンロードしてきましょう。Mono を使っているのであれば、Mono のバージョンを上げる必要があります。&lt;br /&gt;
&lt;br /&gt;
== システム固有の設定 ==&lt;br /&gt;
=== CentOS 5 (64 ビット) ===&lt;br /&gt;
&lt;br /&gt;
CentOS 5.2 64bit で Mono 2.2 をソースからコンパイルして使っている場合 (他のケースでもそうなるかは分かりませんが)、以下のステップを実行する必要があります。&lt;br /&gt;
 sudo yum install libgdiplus&lt;br /&gt;
 sudo yum install libexif&lt;br /&gt;
 sudo ln -s /usr/lib64/libgdiplus.so.0 /usr/lib64/libgdiplus.so&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
これで私の場合は OpenSimulator をエラーなしで起動することができ、他のグリッドに接続することもできるようになりました。&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
Mono の依存パッケージや Mono 自体で、&amp;quot;~x86&amp;quot; にマスクされたパッケージを使うことがあります (プラットフォームが x86 の場合。使用しているプラットフォームに応じて読み替えてください。例: 64 ビットの場合、&amp;quot;~amd64&amp;quot;)。次のようにして USE フラグを確認してみましょう。&lt;br /&gt;
&lt;br /&gt;
 ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -vp subversion nant mono libgdiplus&lt;br /&gt;
&lt;br /&gt;
それから、次のようにしてインストールしましょう。&lt;br /&gt;
&lt;br /&gt;
 ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge subversion nant mono libgdiplus&lt;br /&gt;
&lt;br /&gt;
注: ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; は Gentoo の /etc/make.conf ファイルでも設定できますが、testing/unstable の全てのパッケージが表示されることになってしまいます。emerge コマンドの先頭でこれを使えば、この変数はこの emerge プロセスにだけ適用されます。&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
&lt;br /&gt;
2.0 Framework がサポートされていない旨のエラーが発生したら、&amp;lt;tt&amp;gt;pkg-config&amp;lt;/tt&amp;gt; パスを修正するとよいでしょう。例えばこれを &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt; に書くことができます。&lt;br /&gt;
 export PKG_CONFIG_PATH=&amp;quot;/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/:${PKG_CONFIG_PATH}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== エラーとその対処方法 ==&lt;br /&gt;
&lt;br /&gt;
=== 仕様不備かバグによる問題の回避策 ===&lt;br /&gt;
&lt;br /&gt;
==== UID 重複によるプリム消失 ====&lt;br /&gt;
&lt;br /&gt;
通常、この問題は save-xml/load-xml ファイルが、-newUID スイッチを使ってオブジェクトの UUID を新しく採番することなく、同じ SIM にロードされた場合に発生します。詳細な情報は [[サーバコマンド]] を参照してください (&amp;lt;nowiki&amp;gt;load-xml &amp;lt;filename&amp;gt; -newUID&amp;lt;/nowiki&amp;gt;) 。それでもうまくいかなければ、オブジェクトを Shift コピーして空中に持っていき、空中にあるほう(実はこれがコピー) を削除するとうまくいくかもしれません。これで全てのプリムの UID が新しく割り振られます。このオブジェクトはそのままにして、元の load-xml ファイルを他の地域にロードしましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ODE Physics で例外が発生して落ちる (System.EntryPointNotFoundException: dSpaceLockQuery) ===&lt;br /&gt;
&lt;br /&gt;
次のエラーは、たいてい &amp;quot;libode&amp;quot; のバージョンが合っていないために発生します。&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: none repeat scroll 0% 0% LavenderBlush; color: black;&amp;quot; |&lt;br /&gt;
[SCENE] [02-01 22:20:40] System.EntryPointNotFoundException: dSpaceLockQuery&lt;br /&gt;
&lt;br /&gt;
:at (wrapper managed-to-native) Ode.NET.d:SpaceLockQuery (intptr)&lt;br /&gt;
:at OpenSim.Region.Physics.OdePlugin.OdeScene.waitForSpaceUnlock (IntPtr space) [0x00000]&lt;br /&gt;
:at OpenSim.Region.Physics.OdePlugin.OdeCharacter.AvatarGeomAndBodyCreation (Single npositionX, Single npositionY, Single npositionZ, Single tensor) [0x00000]&lt;br /&gt;
:at OpenSim.Region.Physics.OdePlugin.OdeCharacter..ctor (System.String avName, OpenSim.Region.Physics.OdePlugin.OdeScene parent_scene, OpenSim.Region.Physics.Manager.PhysicsVector pos) [0x00000]&lt;br /&gt;
:at OpenSim.Region.Physics.OdePlugin.OdeScene.AddAvatar (System.String avName, OpenSim.Region.Physics.Manager.PhysicsVector position) [0x00000]&lt;br /&gt;
:at OpenSim.Region.Environment.Scenes.ScenePresence.AddToPhysicalScene () [0x00000]&lt;br /&gt;
:at OpenSim.Region.Environment.Scenes.ScenePresence.MakeRootAgent (LLVector3 pos, Boolean isFlying) [0x00000]&lt;br /&gt;
:at OpenSim.Region.Environment.Scenes.Scene.AgentCrossing (UInt64 regionHandle, LLUUID agentID, LLVector3 position, Boolean isFlying) [0x00000]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
まず、ファイルシステムを検索して、他の ODE Physics エンジンがないか探してみましょう。&lt;br /&gt;
&lt;br /&gt;
 find / -name &amp;quot;libode.so&amp;quot;&lt;br /&gt;
&lt;br /&gt;
それから、最新のバージョンかどうか確認しましょう。&lt;br /&gt;
&lt;br /&gt;
=== 6-8 時間経ってから、MySQL のコネクションでエラーが発生する ===&lt;br /&gt;
&lt;br /&gt;
MySQL にはタイムアウトがあり、28,800 秒 (8 時間) アクティブでないとコネクションを切断します。たぶんこれが原因で、ユーザサーバが長時間アイドル状態にあるとログインできなくなるのだと思います。この問題が発生したら、タイムアウトを大きな値、例えば 604800 (1 週間) や 31536000 (1 年) に増やしましょう。MySQL コンソールで、次のように入力しましょう。&lt;br /&gt;
&lt;br /&gt;
 set global wait_timeout=604800;&lt;br /&gt;
&lt;br /&gt;
=== System.DllNotFoundException: gdiplus.dll ===&lt;br /&gt;
&lt;br /&gt;
最初に、&amp;lt;tt&amp;gt;libgdiplus.so&amp;lt;/tt&amp;gt; がダイナミック・リンカが参照できる場所にあるか調べましょう。&lt;br /&gt;
&lt;br /&gt;
 /sbin/ldconfig -p | grep libgdiplus&lt;br /&gt;
&lt;br /&gt;
見つからなかったら、libgdiplus.so のあるディレクトリが &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; 環境変数や、 /etc/ld.so.conf.d/ の *.conf ファイル (例: gdiplus.conf) にあるか確認しましょう。それから &amp;lt;tt&amp;gt;ldconfig&amp;lt;/tt&amp;gt; でキャッシュを更新しましょう。そうすると、ライブラリを見つけられるようになっているはずです。&lt;br /&gt;
&lt;br /&gt;
それでもまだエラーが出る場合、libgdiplus は他のダイナミック・ライブラリにも依存しているため、それらがロードできなければ、libgdiplus もロードできません。これを確かめるには、OpenSimulator をデバッグ情報を表示させる設定にして起動します。&lt;br /&gt;
&lt;br /&gt;
 MONO_LOG_LEVEL=debug mono OpenSim.exe&lt;br /&gt;
&lt;br /&gt;
Mac OS X では、/opt/local/lib/libgdiplus.dylib があるか確認しましょう。存在していたら、root ユーザで /opt/local/etc/mono/config ファイルを編集して、次の行を追加しましょう。&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;dllmap dll=&amp;quot;gdiplus.dll&amp;quot; target=&amp;quot;/opt/local/lib/libgdiplus.dylib&amp;quot; os=&amp;quot;!windows&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSimulator の MySQL データベースを WIndows から Linux に移行する ===&lt;br /&gt;
&lt;br /&gt;
==== MySql.Data.MySqlClient.MySqlException: Table 'opensim.UserAccounts' doesn't exist ====&lt;br /&gt;
&lt;br /&gt;
'''環境:''' Opensim Server 0.7.0.2, Linux Ubuntu 8.0.4 環境。Mono 2.8, MySQL 5.0 がインストールされた状態。&lt;br /&gt;
&lt;br /&gt;
MySQL 5.0 で稼働している OpenSimulator 0.7 データベースを Window から Linux に移行した場合、OpenSimulator サーバにユーザがログインすると、OpenSimulator サーバコンソールに次のような例外が表示されることがあります。&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: none repeat scroll 0% 0% LavenderBlush; color: black;&amp;quot; |&lt;br /&gt;
03:11:10 - [LLOGIN SERVICE]: Exception processing login for (user_name): MySql.Data.MySqlClient.MySqlException: Table 'opensim.UserAccounts' doesn't exist&lt;br /&gt;
at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64&amp;amp;amp; affectedRows, System.Int64&amp;amp;amp; lastInsertId) [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000] in &amp;lt;filename unknown&amp;gt;:0    at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64&amp;amp;amp; affectedRows, System.Int64&amp;amp;amp; lastInsertId) [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
クライアントでは、次のようなエラーが表示されます。&lt;br /&gt;
&lt;br /&gt;
 Login Failed&lt;br /&gt;
 Error generating Login Response&lt;br /&gt;
&lt;br /&gt;
この例外は MySQL がテーブル名を格納する仕組みが原因となって発生します。Windows の MySQL サーバでは、テーブル名は大文字小文字を区別しませんが、'''Linux の MySQL のテーブルはデフォルトで大文字小文字を区別します'''。このため、OpenSimulator が大文字で始まる名前でデータベースを検索すると、見つかりません。&lt;br /&gt;
&lt;br /&gt;
一つの解決策は、OpenSimulator が必要とするテーブルのテーブル名を (ALTER TABLE で) 変えてしまうことです。しかし、最もきれいなやり方は、MySQL の設定を変え、&amp;quot;'''/etc/mysql/my.cnf'''&amp;quot; ファイルの '''[mysqld]''' セクションで &amp;quot;'''lower_case_sensitive = 1'''&amp;quot; とすることです。&lt;br /&gt;
&lt;br /&gt;
 # sudo nano /etc/mysql/my.cnf&lt;br /&gt;
 &lt;br /&gt;
 ..........................&lt;br /&gt;
 [mysqld]&lt;br /&gt;
 ..........................&lt;br /&gt;
 lower_case_sensitive=1&lt;br /&gt;
 ..........................&lt;br /&gt;
&lt;br /&gt;
これで、MySQL は自動的にテーブル名を小文字に変換して解釈するようになります。MySQL サーバと OpenSimulator を再起動すると、テーブルは問題なくロードされるようになります。&lt;br /&gt;
&lt;br /&gt;
注: '''migration''' テーブルをクリアして OpenSimulator にデータベースを強制的に再移行させようとしないでください。'''データベースが損傷する原因となります'''。&lt;br /&gt;
&lt;br /&gt;
=== 不完全なデータ移行にまつわるエラー ===&lt;br /&gt;
&lt;br /&gt;
OpenSimulator のデータ格納方法が変更となり、アップグレード時になんらかの原因でデータベースの移行に失敗すると、この問題が発生することがあります。&lt;br /&gt;
&lt;br /&gt;
OpenSimulator コンソールにこのようなエラーメッセージが表示されます。&lt;br /&gt;
&lt;br /&gt;
  [LLOGIN SERVICE]: Exception processing login for [username]: MySql.Data.MySqlClient.MySqlException: Table 'opensim.UserAccounts' doesn't exist&lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000]&lt;br /&gt;
  at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64&amp;amp;amp; affectedRows, System.Int64&amp;amp;amp; lastInsertId) [0x00000]&lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000]&lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000]    at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000]&lt;br /&gt;
  at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64&amp;amp;amp; affectedRows, System.Int64&amp;amp;amp; lastInsertId) [0x00000]&lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000]&lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000]&lt;br /&gt;
&lt;br /&gt;
この場合、'users' テーブルの内容が 'UserAccounts' に移行されていないにも関わらず、OpenSimulator は 'UserAccounts' がある前提で動作しようとしていました。また、ビューアにもエラーが表示されます。&lt;br /&gt;
&lt;br /&gt;
 Login Failed&lt;br /&gt;
 Error generating Login Response&lt;br /&gt;
&lt;br /&gt;
移行の失敗の原因となったファイルシステム (私の Linux 場合は、'/var/lib/mysql/...' がぐちゃぐちゃになってました) の権限を変更して、'migration' テーブルを削除し、サーバを再起動させると、私の場合は解決しました 移行時に [non-critical] 警告が発生したので、たぶんもっと適切な方法があったのではと思いますが、私は完全にバックアップをとっていたので、安直な方法でやってしまいました) 。地形データ参照と現在のシェイプ／衣類／アタッチメントデータはなくなってしまいましたが(これは簡単にインワールドで復元できます)、それ以外は私的には大丈夫でした。&lt;br /&gt;
&lt;br /&gt;
== Mono や libgdiplus0 をインストールすると、依存関係にある libexif.so.9 が見つからないエラーが発生する ==&lt;br /&gt;
&lt;br /&gt;
これは Centos5 で現象が確認されましたが、他のオペレーションシステムでも発生することがあります。ftp://rpmfind.net/linux/conectiva/snapshot/i386/RPMS.extra/libexif9-0.5.12-47547cl.i386.rpm をダウンロードしてインストールすれば、解決します。これで、(他に問題がなければ) Mono がインストールできるようになります。&lt;br /&gt;
&lt;br /&gt;
=== mscorlib.dll アセンブリが見つからない、またはロードできない ===&lt;br /&gt;
&lt;br /&gt;
NAnt と一緒にインストールされる mscor ライブラリで見つからないものがあると考えられます。NAnt をインストールすれば簡単に解決します。必要なライブラリの 1.0 や 2.0 のバージョンのものが一緒に入っています。&lt;br /&gt;
&lt;br /&gt;
 apt-get install nant&lt;br /&gt;
&lt;br /&gt;
=== External Program Failed: /usr/lib/pkgconfig/../../lib/mono/2.0/gmcs.exe ===&lt;br /&gt;
&lt;br /&gt;
mono-gmcs を再インストールすると、簡単に直ります。&lt;br /&gt;
&lt;br /&gt;
 apt-get install mono-gmcs&lt;br /&gt;
&lt;br /&gt;
=== The type or namespace name JScript does not exist in the namespace Microsoft ===&lt;br /&gt;
&lt;br /&gt;
JScript と連呼しているのに注目してください。これがヒントになるかな？&lt;br /&gt;
&lt;br /&gt;
 apt-get install mono-mjs libmono-microsoft8.0-cil&lt;br /&gt;
&lt;br /&gt;
Fedora や OpenSUSE では、必要なパッケージは &amp;quot;mono-jscript&amp;quot; になります。&lt;br /&gt;
&lt;br /&gt;
=== The type or namespace name Tcp does not exist in the namespace System.Runtime.Remoting.Channels ===&lt;br /&gt;
&lt;br /&gt;
これはインストール一発で簡単に直る問題です。&lt;br /&gt;
&lt;br /&gt;
 apt-get install libmono-system-runtime2.0-cil&lt;br /&gt;
&lt;br /&gt;
=== Missing: libopenjpeg-libsl-2.1.2.0-x86_64.so ===&lt;br /&gt;
&lt;br /&gt;
おそらく、64 ビットのマシンなのでしょう。以下の手順に沿って作業しましょう。&lt;br /&gt;
&lt;br /&gt;
* [[Installing and running on x86-64]] &lt;br /&gt;
&lt;br /&gt;
=== error while loading shared libraries: libgthread-2.0.so.0: cannot open shared object file ===&lt;br /&gt;
&lt;br /&gt;
Debian ベースのシステムで、このページの一番上のように導入したが、apt バージョンの Mono ではなく、Web サイトからダウンロードしたインストーラを使っている場合、この問題が発生することがあります。&lt;br /&gt;
&lt;br /&gt;
http://www.mono-project.com/Downloads で .bin をダウンロードして、手順に沿って実行し、完了した後で、&amp;quot;mono --version&amp;quot; を実行すると、このメッセージが表示されます。libglib2.0-0 をインストールする必要があるということです。&lt;br /&gt;
&lt;br /&gt;
 apt-get install libglib2.0-0&lt;br /&gt;
&lt;br /&gt;
=== The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file. ===&lt;br /&gt;
&lt;br /&gt;
apt バージョンの NAnt を再インストールすると直るようです。&lt;br /&gt;
&lt;br /&gt;
 apt-get install nant&lt;br /&gt;
&lt;br /&gt;
この現象は &amp;lt;tt&amp;gt;pkg-config&amp;lt;/tt&amp;gt; が &amp;lt;tt&amp;gt;mono.pc&amp;lt;/tt&amp;gt; ファイルにもアクセスできないために発生することもあります。このファイルがあるディレクトリを &amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt; 環境変数に追加すると直ります。&lt;br /&gt;
&lt;br /&gt;
== ネットワークや設定の問題 ==&lt;br /&gt;
&lt;br /&gt;
この Wiki ページを参照してください。&lt;br /&gt;
* [[Network Settings]]&lt;br /&gt;
* [[ファイアウォール設定]]&lt;br /&gt;
* [[設定]]&lt;br /&gt;
&lt;br /&gt;
=== ログインはできるが、リモートクライアントから地域にログインできない ===&lt;br /&gt;
&lt;br /&gt;
OpenSimulator/bin/Regions フォルダを開いてください。&lt;br /&gt;
# Regions.ini ファイルの InternalAddress に '''0.0.0.0''' を指定してみてください。&lt;br /&gt;
# '''ExternalHostName=127.0.0.1''' を、アクセス可能な DNS ネームに変更する必要があります。例えば、&amp;quot;opensim.example-host.com&amp;quot; や &amp;quot;71.6.131.152&amp;quot; (外部からアクセス可能な IP アドレス) のように書きます。&lt;br /&gt;
&lt;br /&gt;
If you still have the same problem, it might be a firewall issue. Check if your firewall is active and configure it. See [[Firewall Settings]] for detailed instructions.&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator のビルド ==&lt;br /&gt;
=== ビルドファイルもソリューションファイルも見つかりません ===&lt;br /&gt;
* Windows では、&lt;br /&gt;
 runprebuild.bat&lt;br /&gt;
* Linux/Mac/FreeBSD では、&lt;br /&gt;
 runprebuild.sh&lt;br /&gt;
を実行してください。&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2005 で .sln ファイルが開けません ===&lt;br /&gt;
* Visual Studio 2005 C# を起動してみてください。恐らく、Visual Studio 2005 C++ を起動しようとしているんじゃないでしょうか。これは C# プロジェクトです。&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator の実行 ==&lt;br /&gt;
=== Cygwin シェルで OpenSim.exe を実行すると、一部の DLL でアクセス拒否が発生します ===&lt;br /&gt;
* '&amp;lt;tt&amp;gt;cd bin&amp;lt;/tt&amp;gt;' の後に '&amp;lt;tt&amp;gt;chmod a+x *&amp;lt;/tt&amp;gt;' を実行して、全ての DLL ファイルを実行可能な状態にしてください。&lt;br /&gt;
&lt;br /&gt;
=== SIM が起動できません ===&lt;br /&gt;
* [[設定]] を見てください。&lt;br /&gt;
&lt;br /&gt;
== なんかおかしくなった！ ==&lt;br /&gt;
=== svn r3254 以降でアップデートした後にグリッドを起動すると、'owner_uuid' がなんたらかんたらというエラーが出ます ===&lt;br /&gt;
r3254 以降の最近のリビジョンに更新すると、owner_uuid をwe are now using the unused owner_uuid. グリッドによっては、リージョンテーブルを初期化する .sql スクリプトからこの項目が誤って消されてしまったタイミングで MySQL テーブルが作られてしまっています。MySQL にログインして、この SQL クエリを実行し、足りない owner_uuid を追加すると、この問題は解決するはずです。&lt;br /&gt;
 alter table `regions` add column `owner_uuid` varchar(36) default '00000000-0000-0000-0000-000000000000' not null, comment 'Rev.2';&lt;br /&gt;
regions と owner_uuid の周りの記号は、「グレイヴ・アクセント(バッククオート)」です。default や comment の値の周りはシングルクオートです。日本語キーボードでは、Shift + @ でバッククオートが、Shift + 7 でシングルクオートが出てきます。&amp;lt;!-- 言語はUSキーボードの場合について言及されている --&amp;gt;これは MySQL で覚えておきたいことです。&lt;br /&gt;
&lt;br /&gt;
=== svn r3786 以降でアップデートした後にグリッドを起動すると、'State' がなんたらかんたらというエラーが出ます ===&lt;br /&gt;
r3786 以降では、SQLite の 'primshapes' テーブルに、新たに 'State' フィールドが追加されました。このフィールドは tree や grass を不揮発化するのに使用されます。起動すると何もない地域ができあがります。OpenSimulator は 'State' フィールドを見つけられないので、何をすればいいのかわからないからです。一番よい解決策は、SQLiteBrowser などの SQLite テーブルのエディタ ([http://sqlitebrowser.sourceforge.net/ http://sqlitebrowser.sourceforge.net/] でダウンロードしてください) を使って、足りないフィールドを作成することです。&lt;br /&gt;
 alter table primshapes add column State integer default 0&lt;br /&gt;
SQLiteBrowser を起動して、File &amp;gt; Open Database と辿り、OpenSim.db ファイルをブラウズして開きます。そして、&amp;quot;Execute SQL&amp;quot; タブを開き、上のコマンドを &amp;quot;SQL String&amp;quot; テキストボックスにコピー＆ペーストします。それから、&amp;quot;Execute Query&amp;quot; ボタンをクリックします。&lt;br /&gt;
&lt;br /&gt;
=== Region Handshake (地域のハンドシェイク) でタイムアウトになります ===&lt;br /&gt;
* Regions フォルダにある設定ファイルに正しい IP アドレスが記載されていますか？&lt;br /&gt;
* OpenSimulator が動作しているサーバにはインターフェースが複数存在しませんか？OpenSimulator は外向きの UDP パケットを特定の IP アドレスに割り当てず、デフォルトでアクセスする IP アドレスが、地域が UDP で応答する際の IP アドレスになります。他の IP アドレスで地域を設定してしまうと、接続時にタイムアウトになります。&lt;br /&gt;
&lt;br /&gt;
=== OpenSimulator に接続できません ===&lt;br /&gt;
* [[Connecting]] か [[ファイアウォール設定]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 接続できますが、移動することができません ===&lt;br /&gt;
クライアントから接続できるのに、アバターがくるくる回って移動しない場合は、SIM が正しく設定されていません。最初のログイン処理は完了しましたが、クライアントと SIM の間でパケット通信が成立していない状態です。おそらく、SIM のネットワーク設定が正しくないと思われます。&lt;br /&gt;
* [[設定]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== しょっちゅうアバターが固まります ===&lt;br /&gt;
ちょうど今はプリムのデータベース同期でボトルネックがあります。このため、短時間 (５〜１０秒) アバターがハングすることがありますが、いったんデータベースと同期がとれれば大丈夫です。これは既知の問題で、データの格納処理の一部にある古い構造が原因となっています。&lt;br /&gt;
&lt;br /&gt;
=== Command error: System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, culture=neutral,PublicKeyToken=b77a5c561934e089' or one of its dependencies.  ===&lt;br /&gt;
&lt;br /&gt;
System.Core がないということは、.NET ランタイムの古いバージョンを使っているということです。&lt;br /&gt;
&lt;br /&gt;
.NET 3.5 以降を使用しなければなりません。.NET 2.0 には System.Core がありません。Windows の .NET を使っているのであれば、3.5 か 4 の更新モジュールをダウンロードしてきましょう。Mono を使っているのであれば、Mono のバージョンを上げる必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 世界地図を見れません ===&lt;br /&gt;
* OpenSimulator を Linux サーバで動作させているときにこの問題が発生することがあります。グリッドモード、スタンドアロンモードに関わらず発生します。&lt;br /&gt;
* 症状：SL ビューアで世界地図を開くと、SIM が世界地図に表示されなかったり、サーバコンソールに OpenJPEG 関連のエラーが表示されたり、現在のセッションがフリーズしたり、などなど。。&lt;br /&gt;
* 原因：SVN の source trunk に正しい &amp;lt;tt&amp;gt;libopenjpeg-libsl&amp;lt;/tt&amp;gt; ライブラリが含まれていません。&lt;br /&gt;
* 原因その２：&amp;quot;defaultstripe.png&amp;quot; が OpenSimulator フォルダにないか、壊れています。&lt;br /&gt;
* 解決策：libsecondlife (&amp;lt;tt&amp;gt;svn co svn://opensecondlife.org/libsl/trunk&amp;lt;/tt&amp;gt;) の最新のソースを取得し、&amp;lt;tt&amp;gt;openjpeg-libsl&amp;lt;/tt&amp;gt; サブディレクトリで '&amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;' し、生成された &amp;lt;tt&amp;gt;libopenjpeg-libsl-2.1.2.0.so&amp;lt;/tt&amp;gt; を OpenSimulator の &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; サブディレクトリにコピーして、既にあるものを上書きします。&lt;br /&gt;
* 再コンパイルして、OpenSimulator を再起動してください。&lt;br /&gt;
&lt;br /&gt;
== コンソールに出力される例外 ==&lt;br /&gt;
以下にコンソールに出力される可能性のある例外を列挙します。意味と、問題であるか否かを説明しています。&lt;br /&gt;
&lt;br /&gt;
=== System.DllNotFoundException: ./libopenjpeg-libsl-2.1.2.0.so ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
Failed generating terrain map: System.DllNotFoundException: ./libopenjpeg-libsl-2.1.2.0.so&lt;br /&gt;
: at (wrapper managed-to-native) OpenJPEGNet.OpenJPEG:LibslAllocDecoded OpenJPEGNet.OpenJPEG/LibslImage&amp;amp;)&lt;br /&gt;
: at OpenJPEGNet.OpenJPEG.Encode (System.Byte[] decoded, Int32 width, Int32 height, Int32 components, Boolean lossless) [0x00000]&lt;br /&gt;
:at OpenJPEGNet.OpenJPEG.EncodeFromImage (System.Drawing.Bitmap bitmap, Boolean lossless) [0x00000]&lt;br /&gt;
:at OpenSim.Region.Terrain.TerrainEngine.ExportJpegImage (System.String gradientmap) [0x00000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Linux で動作させており、ネイティブのライブラリ libopenjpeg-libsl-2.1.2.0.so がシステムと合っていません。以下の原因が考えられます。&lt;br /&gt;
* 古いプロセッサで動作させている (libopenjpeg が最適化オプションつきでコンパイルされている)&lt;br /&gt;
* 64 ビットモードで動作させようとしている (ネイティブライブラリはどれも 64 ビット向けにビルドされていません)&lt;br /&gt;
&lt;br /&gt;
ソースから libopenjpeg を再ビルドしするか、互換環境で動作させてみましょう。&lt;br /&gt;
次のようにします。&lt;br /&gt;
 svn co svn://openmv.org/libsl/libopenmetaverse/trunk libsl&lt;br /&gt;
 cd libsl/openjpeg-libsl/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
それから、 libopenjpeg-libsl-2.1.2.0.so を OpenSimulator の bin フォルダにコピーします。&lt;br /&gt;
&lt;br /&gt;
=== System.NullReferenceException at OpenSim.Region.Communications.Local.LocalLoginService.PrepareLoginToRegion ===&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
[LOGIN END]: XMLRPC Login failed, System.NullReferenceException: Object reference not set to an instance of an object&lt;br /&gt;
:at OpenSim.Region.Communications.Local.LocalLoginService.PrepareLoginToRegion (OpenSim.Framework.RegionInfo regionInfo, OpenSim.Framework.UserProfileData user, OpenSim.Framework.Communications.LoginResponse response) [0x00000] in /home/sim/svn/opensim/OpenSim/Region/Communications/Local/LocalLoginService.cs:293&lt;br /&gt;
:at OpenSim.Region.Communications.Local.LocalLoginService.CustomiseResponse (OpenSim.Framework.Communications.LoginResponse response, OpenSim.Framework.UserProfileData theUser, System.String startLocationRequest) [0x00520] in /home/sim/svn/opensim/OpenSim/Region/Communications/Local/LocalLoginService.cs:253&lt;br /&gt;
:at OpenSim.Framework.Communications.LoginService.XmlRpcLoginMethod (Nwc.XmlRpc.XmlRpcRequest request) [0x00369] in /home/sim/svn/opensim/OpenSim/Framework/Communications/LoginService.cs:252&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
実在しないドメイン名を地域の External Host Name に指定してしまうなどしたため、OpenSimulator の初回起動に失敗しています。このため、初期化は一部だけしか行われていません。この問題を解決するには、bin フォルダを削除して、svn update を行い、再ビルドしてデータベースをパージ (完全消去) する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== Exception: System.NotImplementedException: The requested feature is not implemented. ===&lt;br /&gt;
  &lt;br /&gt;
次のようなメッセージで始まる例外が発生したら、&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
|Exception: System.NotImplementedException: The requested feature is not implemented.&lt;br /&gt;
| at (wrapper managed-to-native) System.Threading.Interlocked:Add (int&amp;amp;,int)&lt;br /&gt;
| at System.Threading.ReaderWriterLockSlim.TryEnterReadLock (Int32 millisecondsTimeout) [0x000e3] in&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mono に誤って '''--optimize=-all''' というオプションを渡してしまったと考えられます。Mono はコンパイルで System.Threading.Interlocked クラスのメソッドの「最適化された」バージョンを作ってしまうのが問題となっています。これらの最適化はコンパイルしている環境にある素のアセンブラを使って行われます (ビルド時に自動的に検出されます) 。'''--optimize=-all''' を渡すと、ランタイムはこれらの関数が最適化されていることを検出し、無効にします。このため、次にクラスがこれらの関数の呼び出しを行うと、ランタイムはメソッドのネイティブな実装がないとみなします！これは、全ての System.Threading 同期プリミティブに影響します。OpenSimulator はスレッドや排他制御に大きく依存していますので、この処理機構がないと何もできません。おそらく、Mono の将来のバージョンには '''--optimize=-all''' を渡すことができるようになり、例外を発生させるのではなく、最適化されていない実装 (例：pthreads) を出してくるようになるのでしょう。&lt;br /&gt;
&lt;br /&gt;
Mono で (ネイティブコードでエラーが発生しているなど) ローレベルで発生している問題をデバッグしようとするとき、'''--optimize=-all''' を渡すのは適切なやり方とは言えません。代わりに、環境変数 MONO_LOG_LEVEL=debug を設定し、'''--debug''' スイッチを Mono に渡してプログラムを起動させましょう。他のプロセスと同じようにして、gdb でも Mono を動かすことができます。&lt;br /&gt;
&lt;br /&gt;
== グリッドモード ==&lt;br /&gt;
&lt;br /&gt;
=== SIM を起動しましたが、どのグリッドにも接続されていません ===&lt;br /&gt;
&lt;br /&gt;
OpneSim を最初に起動するときに、設定が必要です。&lt;br /&gt;
&lt;br /&gt;
* [[設定]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== OpenSim.Grid.UserServer.exe を起動しましたが、エラーが発生します ===&lt;br /&gt;
* [[設定]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 私のグリッドはユーザが１人だけのときはうまくいくのですが、同時に２人のユーザがログインすると２人とも固まります ===&lt;br /&gt;
* 環境変数に MONO_THREADS_PER_CPU=&amp;quot;100&amp;quot; を export してあるか確認しましょう。&lt;br /&gt;
&lt;br /&gt;
=== 20 分以内に私の地域は CPU100% になって、地域がハングします ===&lt;br /&gt;
* Mono が 1.9.1 以前の場合は、2.2 にアップグレードしましょう。&lt;br /&gt;
&lt;br /&gt;
== ハイパーグリッド ==&lt;br /&gt;
=== ハイパーグリッドを有効にして OpenSimulator を起動すると、インベントリがロードされません！ ===&lt;br /&gt;
*グリッドモードで動作させようとしている場合、まず OpenSim.ini を調べて、グリッドサーバの DNS ネームやアドレスが自分からもインターネットからもアクセスできるか確認しましょう。&lt;br /&gt;
*UGAIM サーバの XML 設定ファイルを調べて、全部の項目にインターネットからアクセスできる IP アドレスが記載されているか確認しましょう。&lt;br /&gt;
**心当たりがあり、UGAIM サーバのアドレスを変更しなければならない場合は、UGAIM の変更後の IP アドレスを参照するようにするために、データベースに間に合わせの SQL クエリを発行してグリッドのユーザアカウントを更新する必要があります。&lt;br /&gt;
&lt;br /&gt;
SQL サーバにログインし、データベースをグリッドに合わせて変更しましょう。XML 設定ファイルで UGAIM サービスのアドレスを変更した後、次のコマンドで、ユーザのホームインベントリやアセットの URI が更新されます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     update users set userInventoryURI=&amp;quot;http://new.UGAIM.address:8004&amp;quot; where userInventoryURI = &amp;quot;http://old.UGAIM.address:8004&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     update users set userAssetURI=&amp;quot;http://new.UGAIM.address:8003&amp;quot; where userAssetURI = &amp;quot;http://old.UGAIM.address:8003&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 物理エンジンの問題 ==&lt;br /&gt;
=== OpenDynamicsEngine を *nix で使用する際に発生する問題 ===&lt;br /&gt;
OpenDynamicsEngine を *nix で使用していて問題が発生している場合は、次のコマンドでスタック領域をデフォルトよりも大きく設定してみてください。 ulimit -s 262144 もしくは、 opensim-ode.sh で OpenSimulator を起動してください。&lt;br /&gt;
&lt;br /&gt;
== スクリプトエンジンの問題 ==&lt;br /&gt;
=== スクリプトをコンパイルすると &amp;quot;Primitive: Error compiling script: unknown char: . error&amp;quot; と表示されます ===&lt;br /&gt;
スクリプトを ( [[DotNetEngine|.NET]] や [[XEngine|X]] で) コンパイルしようとすると、このようなエラーが表示される場合があります。&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
Primitive: Error compiling script:&lt;br /&gt;
unknown char: .&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
コンソールでは、次のように表示されます。&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
11:06:37 - [ScriptEngine.DotNetEngine]: Unloading script&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - Exception in MaintenanceLoopThread. Thread will recover after 5 sec throttle. Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.&lt;br /&gt;
:at System.Collections.Generic.Dictionary`2[OpenSim.Region.ScriptEngine.Interfaces.IEventReceiver, OpenSim.Region.ScriptEngine.Shared.Api.Plugins.Dataserver].get_Item (IEventReceiver key) [0x00000]&lt;br /&gt;
:at OpenSim.Region.ScriptEngine.Shared.Api.AsyncCommandManager.RemoveScript (IEventReceiver engine, UInt32 localID, UUID itemID) [0x00000]&lt;br /&gt;
:at OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager._StopScript (UInt32 localID, UUID itemID) [0x00000]&lt;br /&gt;
:at OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager.DoScriptLoadUnload () [0x00000]&lt;br /&gt;
:at OpenSim.Region.ScriptEngine.DotNetEngine.MaintenanceThread.MaintenanceLoop () [0x00000]&lt;br /&gt;
11:06:37 - [ScriptEngine.DotNetEngine]: Loading script&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - [ScriptEngine.DotNetEngine]: ScriptManager StartScript: localID: 720001, itemID: 88c9d28c-6004-4609-a707-717190de044a&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - [Compiler]: Compiled new assembly for fad15951-f9aa-493f-be68-2aaf5ff8a3c9&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - [SCRIPT]: Compiled assetID fad15951-f9aa-493f-be68-2aaf5ff8a3c9: ScriptEngines/a83150da-1ab1-11dd-89fb-0014853ee9da/CommonCompiler_compiled_fad15951-f9aa-493f-be68-2aaf5ff8a3c9.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - [ScriptEngine.DotNetEngine]: AppDomain Loading: OpenSim.Region.ScriptEngine.Shared, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
これは '''Linux''' で、デフォルトロケール ( &amp;quot;C&amp;quot; ) でない場合に発生します。&lt;br /&gt;
* [http://opensimulator.org/mantis/view.php?id=2088 Mantis #2088] and [http://opensimulator.org/mantis/view.php?id=2015 Mantis #2015] に、これを回避して OpenSimulator を起動する方法が掲載されています。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
env LANG=C mono --debug OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* ロケール設定を変更するという手もあります。私が使っている '.bash_profile' はこのような感じになっています。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
export LANG=C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
この方法で Linux でのロケール設定を行うのはあまり良くないというのは私も承知していますが、この方法で'''スクラッチから Linux をインストールした'''環境でうまくいきました。&lt;br /&gt;
&lt;br /&gt;
'''追伸''': Melanie が数週間前にソースコードの一部を修正して、この手の問題が回避されるようになったようです。&lt;br /&gt;
&lt;br /&gt;
=== スクリプトをコンパイルすると &amp;quot;Primitive: Error compiling script: ApplicationName='gmcs', ...&amp;quot; と表示されます ===&lt;br /&gt;
スクリプトを ( [[DotNetEngine|.NET]] や [[XEngine|X]] で) コンパイルしようとすると、このようなエラーが表示される場合があります。&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
Primitive: Error compiling script:&amp;lt;br /&amp;gt;&lt;br /&gt;
ApplicationName='gmcs', CommandLine='/target:library /debug+ /optimize- /out:&lt;br /&gt;
:&amp;quot;ScriptEngines/430c29d0-c5c6-11dd-ad8b-0800200c9a66/CommonCompiler_compiled_fbe5e682-afae-4f1a-805b-0125031101f7.dll&amp;quot;&lt;br /&gt;
:/r:&amp;quot;/usr/lib/opensim/bin/OpenSim.Region.ScriptEngine.Shared.dll&amp;quot;&lt;br /&gt;
:/r:&amp;quot;/usr/lib/opensim/bin/OpenSim.Region.ScriptEngine.Shared.Api.Runtime.dll&amp;quot;  --&lt;br /&gt;
:&amp;quot;/tmp/11b81aac/594d02ce.0.cs&amp;quot; ', CurrentDirectory=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
右クリックメニューで、&amp;quot;Touch&amp;quot; などの他の機能が使えなくなります。&lt;br /&gt;
&lt;br /&gt;
インストールした Mono が壊れている可能性があります (つまり、Mono として認識されているが、Ubuntu 8.10 Intrepid マシンに gmcs がインストールされていない）。&lt;br /&gt;
&lt;br /&gt;
mono-gmcs (sudo apt-get install mono-gmcs) が正しくインストールされているか確認してください。&lt;br /&gt;
&lt;br /&gt;
=== スクリプトをコンパイルすると、&amp;quot;gmcs: Cannot find the specified file&amp;quot; と表示されます ===&lt;br /&gt;
システムに &amp;quot;mono-gmcs&amp;quot; をインストールしてください。詳細は [[動作環境]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ロケールの問題 ==&lt;br /&gt;
一部の OpenSimulator ユーザがグリッドモードで OpenSimulator リージョンサーバのクラッシュに見舞われることがあります。&lt;br /&gt;
&lt;br /&gt;
この問題の解決策を探るため、さまざまなテストを作成しました。&lt;br /&gt;
&lt;br /&gt;
最初にこの問題に見舞われたのは、OpenSimulator SVN.6660 の時です。接続しているユーザがいないのに、OpenSimulator リージョンサーバが不定期にクラッシュしていました (１時間後だったり、５時間後だったり、...) 。&lt;br /&gt;
&lt;br /&gt;
最初に思いついた案は、SVN の最新の版にアップグレードすることですが、うまくいかず、同じ問題が発生しました。このため、他のサーバ (同じOS, 同じパラメタ, 同じ Mono バージョン, ...) で正常に動作している、以前の SVN リリース (SVN.6575) で実験してみました。うまくいかず、同じ問題が発生しました。&lt;br /&gt;
&lt;br /&gt;
それから、ロケールをいろいろいじってみました。サーバを起動させるのに使っている '''screen''' UNIX コマンドライン・ユーティリティをリコンパイルしてみましたが、だめでした。&lt;br /&gt;
&lt;br /&gt;
このため、サーバのメモリの使われ方を調べてみました。すると、最新の SVN リリースでは、OpenSimulator サーバがマルチリージョン／グリッドモードで動作するのに必要なメモリ容量が増加していることに気づきました。なので、MySQL サーバをより少ないメモリで動作するようにチューニングしました。幾分ましになりましたが、それでも OpenSimulator リージョンサーバは不定期にクラッシュし続けました (しかし以前よりは長くもちました) 。&lt;br /&gt;
&lt;br /&gt;
このため、'''screen''' コマンドライン引数をいろいろいじってみました。... 全てのテストで、'''--debug''' 引数がサーバにインパクトを与えているという結果となりました。&lt;br /&gt;
&lt;br /&gt;
最初のころは、以下のようなコマンドで OpenSimulator を起動していました。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/screen -S Region-service -d -m --debug mono OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''--debug''' 引数がなければ、全てがより安定して動作しているように見えました。&lt;br /&gt;
&lt;br /&gt;
ロケールについて言えば、mantis や、opensim-dev や opensim-users のスレッドを読むと分かるように、&amp;quot;en_US&amp;quot; や &amp;quot;C&amp;quot; のロケールに対応していないシステムでの動作には問題があります。&lt;br /&gt;
&lt;br /&gt;
サーバを再セットアップして、全部 &amp;quot;en_US.UTF8&amp;quot; で動作するようにしました。&lt;br /&gt;
&lt;br /&gt;
Ubuntu 8.0.4 server では、&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /etc/default/locale&lt;br /&gt;
LANG=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# cat /var/lib/locales/supported.d/local&lt;br /&gt;
fr_FR.UTF-8 UTF-8&lt;br /&gt;
en_US.UTF-8 UTF-8&lt;br /&gt;
&lt;br /&gt;
# cat /etc/environment&lt;br /&gt;
PATH=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games&amp;quot;&lt;br /&gt;
LANG=&amp;quot;en_US&amp;quot;&lt;br /&gt;
LANGUAGE=&amp;quot;en_US&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
そして、おそらく以下の手順も必要でしょう。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''screen''' コマンドの引数は最終的にこうなります。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
screen -S Region-service -d -m -U mono OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これで、OpenSimulator SVN.6575 がクラッシュせずに 48 時間動作し続けるようになりました。そして SVN.6735 も。&lt;br /&gt;
&lt;br /&gt;
この情報が役に立つと幸いです。&lt;br /&gt;
&lt;br /&gt;
以下参考情報：&lt;br /&gt;
[[Troubleshooting#Locales Issues|スクリプト類のサンプルが、原文に掲載されています。]]&lt;br /&gt;
{{DEFAULTSORT:とらぶるしゅーてぃんぐ}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89</id>
		<title>ダウンロード</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89"/>
				<updated>2012-03-04T07:06:20Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Download}}{{ReleaseInfo}}&lt;br /&gt;
= はじめに =&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;'''注意 1:'''&amp;lt;/font&amp;gt; もしこれを http://www.opensimulator.org のサイト以外で読んでいる場合、実は OpenSimulator.org ソフトウェアをダウンロードしていない可能性があります。先に進む前に、ブラウザに表示されている URL を確認してください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;'''注意 2:'''&amp;lt;/font&amp;gt; OpenSimulator でやりたいことによって、設定するのに技術的知識が必要になることもあります。 OpenSimulator をダウンロードしたら、この Wiki や他にいくつかある導入マニュアルをよく読んでください。OpenSimulator の学習曲線は急勾配ですのでご注意ください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#ff0000&amp;quot;&amp;gt;'''注意 3:'''&amp;lt;/font&amp;gt; Linux ディストリビューションの多くが (Ubuntuも含みます) &amp;quot;mono-runtime&amp;quot; パッケージだけがインストールされた状態で出荷されています。しかし、OpenSimurator の一部の機能、例えば LSL スクリプトコマンドを使用できるようにするには &amp;quot;mono-complete&amp;quot; パッケージもインストールする必要があります。また、Mono 2.4.2 以上を使用しなければなりません (Ubuntu 10.04 には Mono 2.4.4 が入っていますので、大丈夫です）。&lt;br /&gt;
&lt;br /&gt;
OpenSimulator はまだアルファ段階ですので、意図した通りに動作するという保証や、動作が不安定にならないという保証は全くありません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= バイナリパッケージ =&lt;br /&gt;
&lt;br /&gt;
== 現在のリリース版 ==&lt;br /&gt;
最新の OpenSimulator リリースは .zip 形式か .tar.gz 形式で提供されます。&lt;br /&gt;
&lt;br /&gt;
tar.gz には mono のデバッグ用ファイルが含まれています。.zip には Windows の .NET のデバッグ用ファイルが含まれています。それ以外は中身は全く同じで、Mono でも .NET でも動作するようになっています（ただし、.NET のほうは、例外で行番号が出力されません）。&lt;br /&gt;
&lt;br /&gt;
解凍すると、「何の設定もなしに」 OpenSimulator をスタンドアロンモードで動作させることができます - コードをコンパイルしたり、改めてインストールしたりする必要はありません。&lt;br /&gt;
&lt;br /&gt;
現在のリリースは '''{{#var:currentversion}}'''（リリース日：{{#time: Y 年 n 月 j 日| {{#var:releasedate}}}} ）で、以下からダウンロードできます:&lt;br /&gt;
&lt;br /&gt;
*{{#var:url_bingz}} または&lt;br /&gt;
*{{#var:url_binzip}}&lt;br /&gt;
&lt;br /&gt;
解凍したら [[{{#var:currentversion}} Release]] にある注意事項を読んでください。&lt;br /&gt;
手順の詳細は、アーカイブを解凍すると、 README.txt([[README.txt/ja|日本語訳]]) にあります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= インストーラ =&lt;br /&gt;
&lt;br /&gt;
OpenSimulator プロジェクトは現在最新のリリースについてインストーラーを提供していません - バイナリパッケージをダウンロードして解凍するほうが楽でしょう - これはインストールと同じことになります。Debian/Ubuntu のパッケージはあるにはありますが、メンテナンスされていません。&lt;br /&gt;
&lt;br /&gt;
* '''0.6.6 （や他のリリース／版） 非公式な Debian や Ubuntu Linux の .deb パッケージ&lt;br /&gt;
[[UnofficialDebPackages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 他のディストリビューション =&lt;br /&gt;
&lt;br /&gt;
他のプロジェクトで OpenSimulator のパッケージを改造して、独自のモジュールや設定を含めたりしても構いません。既知のディストリビューションは&lt;br /&gt;
&lt;br /&gt;
* Diva ディストリビューション。'''Hypergrid のスタンドアロンとして事前設定済み'''のバイナリディストリビューションです。簡単に設定や最新化を行うことができます。 Windows と Linux/Unix です。 diva-rNNNN.zip というファイルをダウンロードし、解凍して、 README.txt を読み、先に進んでください。&lt;br /&gt;
http://github.com/diva/d2/downloads&lt;br /&gt;
&lt;br /&gt;
* OSGrid ディストリビューション。これはあらかじめ OpenSimulator インスタンスが http://osgrid.org に接続するように設定してあるものです。&lt;br /&gt;
http://www.osgrid.org/elgg/pg/utilities/software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ソースコード =&lt;br /&gt;
&lt;br /&gt;
最新のソースリリースは常に http://dist.opensimulator.org で公開されています。&lt;br /&gt;
&lt;br /&gt;
*{{#var:url_srcgz}} または &lt;br /&gt;
*{{#var:url_srczip}}&lt;br /&gt;
&lt;br /&gt;
tar.gz には mono のデバッグ用ファイルが含まれています。.zip には Windows の .NET のデバッグ用ファイルが含まれています。それ以外は中身は全く同じで、Mono でも .NET でも動作するようになっています（ただし、.NET のほうは、例外で行番号が出力されません）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 以前のリリース =&lt;br /&gt;
OpenSimulator の以前のリリースは http://dist.opensimulator.org にあります。古いリリースはソースコードパッケージのみ置いてあります。&lt;br /&gt;
&lt;br /&gt;
以前のリリースノートは[[Release Notes]]にあります。&lt;br /&gt;
&lt;br /&gt;
= 開発者やテスター =&lt;br /&gt;
開発者やテスターで、人柱となって開発中のコードをダウンロードしたい場合は、[[Developer Documentation#Source Code Repository Access|ここに行ってください]]。&lt;br /&gt;
&lt;br /&gt;
= 関連するソフトウェア =&lt;br /&gt;
* [[Related Software|関連するソフトウェアの章です]]。&lt;br /&gt;
* OpenSimulator モジュールや他のプロジェクトは [http://forge.opensimulator.org/gf/ OpenSimulator Forge] にもあります。&lt;br /&gt;
&lt;br /&gt;
''カテゴリ別のページ:''[[:Category:Users|利用者ページ]],[[:Category:Development|開発者ページ]],[[:Category:Scripts|スクリプト]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:だうんろーど}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BB%E3%83%91%E3%83%A9%E3%83%A1%E3%82%BF%E3%81%AE%E8%A8%AD%E5%AE%9A</id>
		<title>シミュレータ・パラメタの設定</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BB%E3%83%91%E3%83%A9%E3%83%A1%E3%82%BF%E3%81%AE%E8%A8%AD%E5%AE%9A"/>
				<updated>2012-03-04T07:06:10Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Configuring Simulator Parameters}}&lt;br /&gt;
&lt;br /&gt;
= 構成 =&lt;br /&gt;
&lt;br /&gt;
OpenSimulator の設定は、Windows の INI ファイルのような感じで、非常に複雑な構造となっています。いろいろな用途、あらゆるアーキテクチャに対応できるようにするために、このような構造になっています。&lt;br /&gt;
&lt;br /&gt;
設定ファイルに、他の設定ファイルをインクルードすることができます。例えば、標準的なスタンドアロン設定は以下の INI ファイルから読み込まれます(ログやコンソールには、この順番で表示されます)。&lt;br /&gt;
&lt;br /&gt;
 OpenSimDefaults.ini (OpenSimulator 0.7.1 以降)&lt;br /&gt;
 OpenSim.ini&lt;br /&gt;
 config-include/Standalone.ini&lt;br /&gt;
 config-include/StandaloneCommon.ini&lt;br /&gt;
 config-include/CenomeCache.ini (デフォルトの状態では存在しない)&lt;br /&gt;
 config-include/storage/SQLiteStandalone.ini&lt;br /&gt;
&lt;br /&gt;
OpenSimDefaults.ini (OpenSimulator 0.7.1 以降) や OpenSim.ini は、起動時に毎回チェックされます。しかし、他の INI ファイルは上記の INI ファイルに書いてあるインクルード指示を受けてロードされます。&lt;br /&gt;
&lt;br /&gt;
例えば、OpenSim.ini の一番下にある [Architecture] セクションには、設定可能なアーキテクチャのインクルード文が列挙されています。例えば、デフォルトの OpenSimulator 0.7.1 スタンドアロン設定では、次のようになっています。&lt;br /&gt;
&lt;br /&gt;
 [Architecture]&lt;br /&gt;
    Include-Architecture = &amp;quot;config-include/Standalone.ini&amp;quot;&lt;br /&gt;
    ; Include-Architecture = &amp;quot;config-include/StandaloneHypergrid.ini&amp;quot;&lt;br /&gt;
    ; Include-Architecture = &amp;quot;config-include/Grid.ini&amp;quot;&lt;br /&gt;
    ; Include-Architecture = &amp;quot;config-include/GridHypergrid.ini&amp;quot;&lt;br /&gt;
    ; Include-Architecture = &amp;quot;config-include/SimianGrid.ini&amp;quot;&lt;br /&gt;
    ; Include-Architecture = &amp;quot;config-include/HyperSimianGrid.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
１つ以上のセミコロン (;) で始まっている行は、コメントアウトされたものとみなされ、有効な設定とはなりません。この例では、OpenSimulator は OpenSim.ini を読み込んだとき、その後で config-include/Standalone.ini を読みにいき、そこから config-include/StandaloneCommon.ini などを順次インクルードしていきます。&lt;br /&gt;
&lt;br /&gt;
設定ファイルが見つからない場合、無視され、見つからない旨がログに記録されます。&lt;br /&gt;
&lt;br /&gt;
bin/ フォルダの中にある OpenSim.ini や OpenSimDefaults.ini はシミュレータ・パラメタ (チャット距離、物理属性など) を扱います。config-include の中のパラメタはデータサービス (地域データベース、アセット・サービス、インベントリ・サービスなど) のロケーションやパラメタを調整するものです。&lt;br /&gt;
&lt;br /&gt;
= シミュレータの設定変更 =&lt;br /&gt;
&lt;br /&gt;
設定ファイルにはいくつかのセクションがあり、それぞれのセクションは角括弧 ([]) で囲まれた名前で始まります。例えば、OpenSim.ini.example では次のようになっています(説明文は省略)。&lt;br /&gt;
&lt;br /&gt;
 [Startup]&lt;br /&gt;
    ; save_crashes = false&lt;br /&gt;
    ; crash_dir = &amp;quot;crashes&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
 [SMTP]&lt;br /&gt;
    ; enabled = false&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
 [Chat]&lt;br /&gt;
    ; whisper_distance = 10&lt;br /&gt;
&lt;br /&gt;
設定パラメタは各セクションの後に記述されています。それぞれ、&amp;lt;parameter&amp;gt; = &amp;lt;value&amp;gt; の形式となっています (例：whisper_distance = 10)。&lt;br /&gt;
&lt;br /&gt;
OpenSim.ini.example で、パラメタが先頭にセミコロン (;) がついた状態でコメントアウトされていると、OpenSimDefaults.ini の値が代わりに使われるか(OpenSimulator 0.7.1 以降)、OpenSimulator 自体に存在するデフォルト値が使われます。&lt;br /&gt;
&lt;br /&gt;
パラメタを変更するには、コメントを外して値を変更します。例えば、自分の SIM でささやきの範囲を 50 メートルにしたい場合、OpenSim.ini を次のように変更します。&lt;br /&gt;
&lt;br /&gt;
 [Chat]&lt;br /&gt;
    whisper_distance = 50&lt;br /&gt;
&lt;br /&gt;
SIM が次に起動されたタイミングで、OpenSimDefualts.ini があればその値をオーバーライド(=上書き)して、ささやきの範囲は 50m となります。&lt;br /&gt;
&lt;br /&gt;
OpenSimulator 0.7.1 以降では、OpenSimDefaultsini ではなく、OpenSim.ini のパラメタを変更することを推奨しています。これは、以前のリリースから、たくさんのパラメタが新規に追加されたり名前が変更されたりしたためです。変更が必要な一般的なパラメタは、既に OpenSim.ini.example に記載されています。OpenSimDefaults.ini には、これらのパラメタや、よりマニアックなパラメタのデフォルト値が記載されています。OpenSim.ini.example になく、OpenSimDefults.ini にあるパラメタをオーバーライドしたい場合は、当該セクションを OpenSim.ini にコピーして、コピーした先の値を変更することをお勧めします。&lt;br /&gt;
&lt;br /&gt;
= 集約・オーバーライド =&lt;br /&gt;
&lt;br /&gt;
以上のようにして、複数の設定ファイルに同一のセクションが存在する場合、設定は集約されます。後に読み込まれる設定が、先に読み込まれた設定と同じ名前の場合、後に読み込まれる設定が先に読み込まれた設定をオーバーライドします。&lt;br /&gt;
&lt;br /&gt;
= パラメタに関する情報の取得 =&lt;br /&gt;
&lt;br /&gt;
シミュレータのコンソールでは、&amp;quot;config show&amp;quot; コマンドで、実際に使用されているパラメタの情報を取得することができます。意図したパラメタがシミュレータにロードされたかを確認したいときに便利です。&lt;br /&gt;
{{DEFAULTSORT:しみゅれーた}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%82%B5%E3%83%BC%E3%83%90%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89</id>
		<title>サーバコマンド</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%82%B5%E3%83%BC%E3%83%90%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89"/>
				<updated>2012-03-04T07:06:00Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks/ja|Server Commands}}&lt;br /&gt;
&lt;br /&gt;
= サーバコマンドについて =&lt;br /&gt;
&lt;br /&gt;
地域サーバや ROBUST サービスのコンソールでサーバコマンドを発行すると、いろいろなことができます。&lt;br /&gt;
&lt;br /&gt;
'''免責事項''': コマンドによっては期待通りに動作しないものもありますし、全く動かないものもあるかもしれません。また、万に一つ全ての設定・コンテンツを失ってしまうこともあるかもしれません。この早見表はすぐに古くなります - コマンドを探す一番いい方法は、地域コンソールで &amp;quot;help&amp;quot; と入力することです。&lt;br /&gt;
&lt;br /&gt;
特に注記のない限り、この一覧は OpenSimulator 0.7.1 では正しいものになっているはずです。&lt;br /&gt;
&lt;br /&gt;
= コマンド =&lt;br /&gt;
&lt;br /&gt;
== 地域コンソールのコマンド ==&lt;br /&gt;
&lt;br /&gt;
=== 一般 ===&lt;br /&gt;
&lt;br /&gt;
*alert &amp;lt;message&amp;gt; - 全てのユーザにインワールドで警告メッセージを送信します。&lt;br /&gt;
*alert-user &amp;lt;first&amp;gt; &amp;lt;last&amp;gt; &amp;lt;message&amp;gt; - 指定したユーザにインワールドで警告メッセージを送信します。&lt;br /&gt;
*backup - シミュレータのバックアップ処理 (オブジェクトのデータベースへの即時不揮発化) を開始します。シミュレータは一定時間経過後とシャットダウン時に自動的にこれを実行しています。&lt;br /&gt;
*bypass permissions &amp;amp;lt;true / false&amp;amp;gt; - インワールドのパーミッション・チェックをスキップします。&lt;br /&gt;
*change region &amp;lt;region name&amp;gt; - 以降に発行されるコマンドは、指定された地域にのみ適用されます。region name に &amp;quot;root&amp;quot; が指定された場合は、全ての地域が選択されたことになります。&lt;br /&gt;
*clear-assets - アセットキャッシュを強制的にクリアします。おそらくその後 SIM は不安定になります。注意して使ってください。&lt;br /&gt;
*command-script [name of scriptfile] - サーバコマンドを含むコマンドスクリプトを実行します。&lt;br /&gt;
*config get [&amp;lt;section&amp;gt;] [&amp;lt;key&amp;gt;] - 現在の設定を表示します。キー (key) 、セクション (section) で絞り込んだり、全ての設定を表示させたりできます。&lt;br /&gt;
*config save &amp;lt;path&amp;gt; - 現在の設定をファイルに保存します。&lt;br /&gt;
*config set &amp;lt;section&amp;gt; &amp;lt;key&amp;gt; - 指定した設定項目に値を設定します。ぶっちゃけ、OpenSimulator もモジュール類も設定値を動的に再取得しないため、これは無意味です。&lt;br /&gt;
*config show [&amp;lt;section&amp;gt;] [&amp;lt;key&amp;gt;] - 'config get' の代替コマンドです。&lt;br /&gt;
*create region [name] [filename] - 地域を新規作成します。&lt;br /&gt;
*debug packet &amp;lt;level&amp;gt; - パケット・デバッグ機構を稼働させます。level で設定したレベルに応じて、OpenSimulator がビューアに入出力パケットのサマリを表示します。&lt;br /&gt;
*debug permissions - パーミッション・デバッグ機構を稼働させます。&lt;br /&gt;
*debug scene - シーン・デバッグ機構を稼働させます。&lt;br /&gt;
*delete-region &amp;lt;name&amp;gt; - 地域をハードディスクから消去します。&lt;br /&gt;
*edit scale [primitivename] [xvalue] [yvalue] [zvalue] - 指定したプリムのサイズを変更します。&lt;br /&gt;
*emergency-monitoring - 緊急デバッグ・モニタリング・モードのオンオフを切り替えます。&lt;br /&gt;
*export-map [&amp;lt;path&amp;gt;] - 世界地図の画像を保存します (デフォルトの名前は exportmap.jpg です) 。&lt;br /&gt;
*force permissions - パーミッションの強制適用のオンオフを切り替えます。&lt;br /&gt;
*force update - 地域にある全てのプリムの再送信を開始します。&lt;br /&gt;
*help [&amp;lt;command&amp;gt;] - コマンド全般の一覧や、指定したコマンドやコマンド群に関する詳細なヘルプを取得します。&lt;br /&gt;
*kick user &amp;lt;first&amp;gt; &amp;lt;last&amp;gt; [message] - シミュレータからユーザを追い出します。&lt;br /&gt;
*kill uuid &amp;lt;UUID&amp;gt; - UUID 指定でオブジェクトを削除します (プリム数限界状態をコンソールでなんとかするのに役立ちます) 。&lt;br /&gt;
*link-mapping - リモートのハイパーグリッドをローカルのグリッド座標にリンクさせます。&lt;br /&gt;
*link-region - ハイパーグリッド地域にリンクします。link-mapping と何が違うのかよくわかりません。&lt;br /&gt;
*load iar &amp;lt;first&amp;gt; &amp;lt;last&amp;gt; &amp;lt;inventory path&amp;gt; &amp;lt;password&amp;gt; [&amp;lt;archive path&amp;gt;]: - ユーザのインベントリ・アーカイブをロードします。&lt;br /&gt;
*load oar [filename] - OpenSimulator アーカイブをロードします。現在の地域を完全に上書きします。デフォルトのファイル名は '''region.oar''' です。詳細は [[OpenSim Archives]] を参照してください。&lt;br /&gt;
*load xml [-newIDs [&amp;lt;x&amp;gt; &amp;lt;y&amp;gt; &amp;lt;z&amp;gt;]] - 地域データを XML フォーマットからロードします。(0.7.* では非推奨で、すぐに廃止する予定です。代わりに &amp;quot;load xml2&amp;quot; を使ってください)&lt;br /&gt;
:XML は export save や *export save-all で作成されたものです。&lt;br /&gt;
*load xml2 [filename] - オプションの引数は 2008 年 7 月 1 日から XML2 フォーマットのサポート対象外となりました。*modules list - モジュール一覧を表示します。&lt;br /&gt;
*modules load &amp;lt;name&amp;gt; - モジュールをロードします。&lt;br /&gt;
*modules unload &amp;lt;name&amp;gt; - モジュールのロードを解除します。&lt;br /&gt;
* monitor report - 現在の地域やシミュレータのさまざまな統計を表示します。&lt;br /&gt;
* quit - シャットダウンと同義です。&lt;br /&gt;
* region restart abort [&amp;lt;message&amp;gt;] - 地域の再起動の予定をキャンセルします。オプションでメッセージを指定することもできます。&lt;br /&gt;
* region restart bluebox &amp;lt;message&amp;gt; &amp;lt;delta seconds&amp;gt;+ - 地域の再起動をスケジューリングします。引数の数字が１つだけ指定されていれば、指定した秒数後に地域が再起動されます。再起動予定時刻は、地域にいるユーザに、画面上の青いダイアログで通知されます。数字が複数指定された場合は、それぞれの時間が経過するたびに、通知が表示されます。&lt;br /&gt;
* region restart notice &amp;lt;message&amp;gt; &amp;lt;delta seconds&amp;gt;+ - 地域の再起動をスケジューリングします。通知方法が画面下のすぐに引っ込む青いダイアログであること以外、上に同じです。&lt;br /&gt;
* reload estate - 不動産データを再読み込みします。&lt;br /&gt;
* remove-region - シミュレータから地域を削除します。&lt;br /&gt;
* restart - このインスタンスの全ての SIM を再起動します。&lt;br /&gt;
* save iar &amp;lt;first&amp;gt; &amp;lt;last&amp;gt; &amp;lt;inventory path&amp;gt; &amp;lt;password&amp;gt; [&amp;lt;archive path&amp;gt;] - ユーザのインベントリをアーカイブに保存します。 [[Inventory Archives]] を参照してください。&lt;br /&gt;
* save oar [filename] - 現在の地域を OpenSimulator アーカイブに保存します。デフォルトのファイル名は '''region.oar''' です。詳細は [[OpenSim Archives]] を参照してください。&lt;br /&gt;
* save prims xml2 [&amp;lt;prim name&amp;gt; &amp;lt;file name&amp;gt;]: - 指定されたプリムを XML2 に保存します。&lt;br /&gt;
* save xml [filename] - プリムを XML に保存します。&lt;br /&gt;
* save xml2 [filename] - プリムを XML に保存します (フォーマット 2 - 一部のノードが再構成されて、読出・保存が簡単になっています)。&lt;br /&gt;
* set log level [level] - コンソールのログレベルだけを変更します。例えば、off や debug などを指定します。詳細は、 [[Logging]] を参照してください。&lt;br /&gt;
* set region flags &amp;lt;Region name&amp;gt; &amp;lt;flags&amp;gt; - 地域のデータベースフラグを設定します。&lt;br /&gt;
* set terrain heights &amp;lt;corner&amp;gt; &amp;lt;min&amp;gt; &amp;lt;max&amp;gt; [&amp;lt;x&amp;gt;] [&amp;lt;y&amp;gt;] - 指定したコーナー番号 &amp;lt;corner&amp;gt; の地形テクスチャの高さを &amp;lt;min&amp;gt; から &amp;lt;max&amp;gt; の範囲にします。&amp;lt;x&amp;gt; や &amp;lt;y&amp;gt; が指定されていると、指定した座標にある地域にだけ設定します。&amp;lt;x&amp;gt; や &amp;lt;y&amp;gt; に -1 を指定すると、ワイルドカードとなります。コーナー番号は、SW = 0, NW = 1, SE = 2, NE = 3 です。&lt;br /&gt;
* set terrain texture &amp;lt;number&amp;gt; &amp;lt;uuid&amp;gt; [&amp;lt;x&amp;gt;] [&amp;lt;y&amp;gt;] - &amp;lt;number&amp;gt; の地形テクスチャに &amp;lt;uuid&amp;gt; を設定します。&amp;lt;x&amp;gt; や &amp;lt;y&amp;gt; が指定されていると、指定した座標にある地域にだけ設定します。&amp;lt;x&amp;gt; や &amp;lt;y&amp;gt; に -1 を指定すると、ワイルドカードとなります。&lt;br /&gt;
* show capabilities - 登録された全てのケイパビリティ URL を表示します。&lt;br /&gt;
:注意: OpenSimulator 0.7.1 では、help コマンドの結果には &amp;quot;show capabilities&amp;quot; と表示されますが、実際には &amp;quot;show caps&amp;quot; だけが有効なコマンドとなります([http://opensimulator.org/mantis/view.php?id=5467 #5467])。&lt;br /&gt;
* show circuits - エージェントのサーキット情報を表示します。&lt;br /&gt;
* show connections - 接続情報を表示します。&lt;br /&gt;
* show http-handlers - 登録された全ての HTTP ハンドラを表示します。&lt;br /&gt;
* show hyperlinks - ハイパーグリッド地域の一覧を表示します。&lt;br /&gt;
* show info - サーバ情報を表示します (バージョンや起動ディレクトリ)&lt;br /&gt;
* show modules - モジュール情報を表示します。&lt;br /&gt;
* show neighbours - ローカルで隣り合わせとなっている地域を表示します。&lt;br /&gt;
* show pending-objects - キューで待機しているオブジェクトの数を、全てのビューアについて表示します。&lt;br /&gt;
* show pqueues [full] - それぞれのクライアントについて、キュー内でのデータの優先順位を表示します。'full' オプションを指定しない場合は、Root Agent だけが表示されます。'full' オプションを指定する場合は、Child Agent も表示されます。&lt;br /&gt;
* show queues - キューに入っているエージェント接続の内容を表示します。&lt;br /&gt;
* show ratings - レーティング区分を表示します。&lt;br /&gt;
* show regions - 地域の情報を表示します。(地域名称(Region Name)、Ｘ・Y座標(Region XLoc/Region YLoc)、ポート(Region Port)、不動産名称(Estate Name))&lt;br /&gt;
* show stats - サーバに関する役に立つ統計情報を表示します。詳細は、下のほうにある [[#フレーム統計 (Frame Statistics) の値|フレーム統計 (Frame Statistics) の値]] を参照してください。&lt;br /&gt;
* show threads - システムに登録されている不揮発化されたスレッドを一覧表示します。スレッドプール内のスレッドは表示されません。&lt;br /&gt;
* show throttles [full] - 各クライアント接続のスロットル情報を表示します。またサーバが許可する１接続あたりの最大数を表示します。'full' オプションを指定しない場合は、Root Agent だけが表示されます。'full' オプションを指定する場合は、Child Agent も表示されます。&lt;br /&gt;
* show uptime - サーバの起動時間と稼働時間を表示します。&lt;br /&gt;
* show users [full]- 現在地域に接続しているユーザの情報を表示します。'full' オプションを指定しない場合は、実際に地域にいるユーザのみ表示されます。'full' オプションを指定する場合は、隣り合わせの地域にいるユーザの Child Agent も表示されます。&lt;br /&gt;
* show version - サーバのバージョンを表示します。&lt;br /&gt;
* shutdown - 全てのクライアントの接続を解除し、シャットダウンします。&lt;br /&gt;
* unlink-region &amp;lt;local name&amp;gt; - ハイパーグリッド地域のリンクを解除します。&lt;br /&gt;
&lt;br /&gt;
=== アピアランス・モジュール (Appearance Module) のコマンド ===&lt;br /&gt;
* appearance show - アバターの容姿に関する情報を表示します。現在はただ単に、作成されたテクスチャが正しければ &amp;quot;OK&amp;quot;、おかしくなってしまっているなら &amp;quot;corrupt&amp;quot; が表示されるだけになっています。まだ開発中です。現時点では、開発中のコードにだけ存在します。&lt;br /&gt;
&lt;br /&gt;
=== 土地モジュール (Land Module) のコマンド ===&lt;br /&gt;
&lt;br /&gt;
* land show - 現在の地域にある全ての区画を表示します。&lt;br /&gt;
&lt;br /&gt;
=== 地形モジュール (Terrain Module) のコマンド ===&lt;br /&gt;
&lt;br /&gt;
※ SIM の再起動をしないと変更が正しく反映されないものがあります。&lt;br /&gt;
* terrain load - 指定したファイルから地形を読み込みます。&lt;br /&gt;
* terrain load-tile - 大きなファイルの特定のセクションから地形を読み込みます。&lt;br /&gt;
* terrain save - 現在の起伏マップを指定したファイルに保存します。&lt;br /&gt;
* terrain fill - 現在の起伏マップを指定した値で埋めます。&lt;br /&gt;
* terrain elevate - 現在の起伏マップに指定した値を加算してかさ上げします。&lt;br /&gt;
* terrain lower - 現在の起伏マップから指定した値を引いて低くします。&lt;br /&gt;
* terrain multiply - 起伏マップに指定した値を掛けます。&lt;br /&gt;
* terrain bake - 現在の地形データを退避マップ (Revert Map) に保存します。&lt;br /&gt;
* terrain revert - 退避マップの地形データを起伏マップに読み込みます。&lt;br /&gt;
* terrain newbrushes - 標準の地形ブラシから、実験段階のブラシに持ち替えます。警告: これはデバッグ用の設定なので、いつなくなるかはわかりません。&lt;br /&gt;
* terrain stats - デバッグ用に地域の起伏情報を表示します。&lt;br /&gt;
* terrain effect - 指定したプラグイン・エフェクトをかけます。&lt;br /&gt;
&lt;br /&gt;
=== 植物モジュール (Tree Module) のコマンド ===&lt;br /&gt;
&lt;br /&gt;
'''tree active''' - 植物モジュールの稼働状態を切り替えます。&lt;br /&gt;
&lt;br /&gt;
'''tree freeze''' - 指定した雑木林の活動を一時停止／停止解除します。&lt;br /&gt;
&lt;br /&gt;
'''tree load''' - XML ファイルから雑木林の設定情報を読み込みます。&lt;br /&gt;
&lt;br /&gt;
'''tree plant '''- 雑木林の植え込みを開始します。&lt;br /&gt;
&lt;br /&gt;
'''tree rate''' - 木の更新頻度を再設定します。 (ミリ秒)&lt;br /&gt;
&lt;br /&gt;
'''tree reload''' - 見える範囲の木の設定情報を再ロードします。&lt;br /&gt;
&lt;br /&gt;
'''tree remove''' - 木の設定情報を削除して、見える範囲の木を全て除去します。&lt;br /&gt;
&lt;br /&gt;
'''tree statistics''' - 木の統計情報を表示します。 &lt;br /&gt;
&lt;br /&gt;
=== Windlight/[[LightShare]] モジュールのコマンド ===&lt;br /&gt;
&lt;br /&gt;
'''windlight load''' - データベースから Windlight プロファイルをロードして、クライアントに配布します。&lt;br /&gt;
&lt;br /&gt;
'''windlight enable''' - Windlight プラグインをオンにします。&lt;br /&gt;
&lt;br /&gt;
'''windlight disable''' - Windlight プラグインをオフにします。&lt;br /&gt;
&lt;br /&gt;
== アセット・サービス (Asset Service) のコマンド ==&lt;br /&gt;
*delete asset - データベースからアセットを削除します。実装はされていないようです。&lt;br /&gt;
*dump asset &amp;lt;ID&amp;gt; - ファイルシステムにアセットをダンプします。(開発中コードのみ)&lt;br /&gt;
*show digest &amp;lt;ID&amp;gt; - アセットの情報を簡単に表示します。&lt;br /&gt;
&lt;br /&gt;
== ユーザ・サービス (User Service) のコマンド ==&lt;br /&gt;
* create user [first] [last] [passw] [RegionX] [RegionY] - 新しいユーザを作成し、パスワードを設定します。&lt;br /&gt;
:または: create user - 全てのデータを対話式に入力してユーザを作成します。&lt;br /&gt;
:&lt;br /&gt;
:'''スタンドアロンモードでユーザを作成する場合の注意点:''' ユーザのデフォルトの座標 1000,1000 をスタート地域のX・Y座標に指定してください。そうしないと、 &amp;quot;[LOGIN]: Not found region&amp;quot; というエラーメッセージが表示されます。&lt;br /&gt;
* logoff-user &amp;lt;firstname&amp;gt; &amp;lt;lastname&amp;gt; &amp;lt;message&amp;gt; - 指定したユーザをグリッドからログオフさせます。&lt;br /&gt;
* reset user password - ユーザのパスワードをリセットします。&lt;br /&gt;
* login-level &amp;lt;value&amp;gt; - ログインできるユーザのレベルの最低ラインを指定します。&lt;br /&gt;
* login-reset - ログインレベルをリセットします。&lt;br /&gt;
* login-text &amp;lt;ログインの間に表示される文字列&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 地形モジュール (Terrain Module) コマンドの詳細 ==&lt;br /&gt;
&lt;br /&gt;
==== terrain load ====&lt;br /&gt;
指定したファイルから地形データを読み込みます。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* filename (String)&lt;br /&gt;
	ロード元となるファイルを指定します。ファイルの拡張子で、どのローダーが使用するか判断します。サポートされている拡張子:  .r32 (RAW32) .f32 (RAW32) .ter (Terragen) .raw (LL/SL RAW) .jpg (JPEG) .jpeg (JPEG) .bmp (BMP) .png (PNG) .gif (GIF) .tif (TIFF) .tiff (TIFF)&lt;br /&gt;
&lt;br /&gt;
==== terrain load-tile ====&lt;br /&gt;
大きなファイルの特定のセクションから地形データを読み込みます。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* filename (String)&lt;br /&gt;
	ロード元となるファイルを指定します。ファイルの拡張子で、どのローダーが使用するか判断します。サポートされている拡張子:  .r32 (RAW32) .f32 (RAW32) .ter (Terragen) .raw (LL/SL RAW) .jpg (JPEG) .jpeg (JPEG) .bmp (BMP) .png (PNG) .gif (GIF) .tif (TIFF) .tiff (TIFF)&lt;br /&gt;
* file width (Integer)&lt;br /&gt;
	横方向のタイル分割数を指定します。&lt;br /&gt;
* file height (Integer)&lt;br /&gt;
	縦方向のタイル分割数を指定します。&lt;br /&gt;
* minimum X tile (Integer)&lt;br /&gt;
	ファイルの最初のセクションの読み込み先となる地域の X 座標を指定します。&lt;br /&gt;
* minimum Y tile (Integer)&lt;br /&gt;
	ファイルの最初のセクションの読み込み先となる地域の Y 座標を指定します。&lt;br /&gt;
&lt;br /&gt;
==== terrain save ====&lt;br /&gt;
現在の起伏マップを指定したファイルに保存します。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* filename (String)&lt;br /&gt;
	起伏マップの保存先となるファイルの名称を指定します。ファイルの拡張子で、保存するフォーマットを判断します。サポートされている拡張子:  .r32 (RAW32) .f32 (RAW32) .ter (Terragen) .raw (LL/SL RAW) .jpg (JPEG) .jpeg (JPEG) .bmp (BMP) .png (PNG) .gif (GIF) .tif (TIFF) .tiff (TIFF)&lt;br /&gt;
&lt;br /&gt;
==== terrain fill ====&lt;br /&gt;
現在の起伏マップを指定した値で埋めます。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* value (Double)&lt;br /&gt;
	地域に設定する標高を数字で指定します。&lt;br /&gt;
&lt;br /&gt;
==== terrain elevate ====&lt;br /&gt;
現在の起伏マップを指定した分かさ上げします。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* amount (Double)&lt;br /&gt;
&lt;br /&gt;
==== terrain lower ====&lt;br /&gt;
現在の起伏マップを指定した分低くします。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* amount (Double)&lt;br /&gt;
	地形から引く標高をメートルで指定します。&lt;br /&gt;
&lt;br /&gt;
==== terrain multiply ====&lt;br /&gt;
起伏マップに指定した値を掛けます。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* value (Double)&lt;br /&gt;
	起伏マップに掛ける数を指定します。&lt;br /&gt;
&lt;br /&gt;
==== terrain bake ====&lt;br /&gt;
現在の地形データを退避マップ (Revert Map) に保存します。&lt;br /&gt;
&lt;br /&gt;
==== terrain revert ====&lt;br /&gt;
退避マップの地形データを起伏マップに読み込みます。&lt;br /&gt;
&lt;br /&gt;
==== terrain newbrushes ====&lt;br /&gt;
標準の地形ブラシから、実験段階のブラシに持ち替えます。警告: これはデバッグ用の設定なので、いつなくなるかはわかりません。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* Enabled? (Boolean)&lt;br /&gt;
	true / false - 新しいブラシにする&lt;br /&gt;
&lt;br /&gt;
==== terrain stats ====&lt;br /&gt;
デバッグ用に地域の起伏情報を表示します。&lt;br /&gt;
&lt;br /&gt;
==== terrain effect ====&lt;br /&gt;
指定したプラグイン・エフェクトをかけます。&lt;br /&gt;
&lt;br /&gt;
引数&lt;br /&gt;
* name (String)&lt;br /&gt;
	実行するプラグイン・エフェクトを指定します。'list' を指定するとプラグイン一覧を表示します。&lt;br /&gt;
&lt;br /&gt;
== ハイパーグリッド系コマンドの詳細 ==&lt;br /&gt;
&lt;br /&gt;
link-region &amp;lt;Xloc&amp;gt; &amp;lt;Yloc&amp;gt; &amp;lt;host&amp;gt; &amp;lt;port&amp;gt; &amp;lt;location-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Xloc と Yloc にはワールドに応じて妥当な値を指定してください。具体的には、既にある地域に近いが、隣接していない場所を指定してください。&lt;br /&gt;
* osl2.nac.uci.edu と 9006 をリンク先の地域のホスト名・IPアドレスとポート番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
例) link-region 8998 8998 osl2.nac.uci.edu 9006 OSGrid Gateway&lt;br /&gt;
&lt;br /&gt;
'''重要'''&lt;br /&gt;
&lt;br /&gt;
ビューアのバグにより、どの方向でも 4096 セルを超えない範囲の地域にしかテレポートできません。このため、具体的には OSGrid に接続する際、OSGrid の中心となる、マップの (10,000; 10,000) 地点にアクセスできる範囲に地域を設置しなければなりません。8,000 番台か 12,000 番台のどれかに地域を設置してください。&lt;br /&gt;
&lt;br /&gt;
link-mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== フレーム統計 (Frame Statistics) の値 ==&lt;br /&gt;
&lt;br /&gt;
フレーム統計 (Frame Statistics) は、コンソールで &amp;quot;show stats&amp;quot; コマンドを発行すると表示されますが、ちょっと意味わからないかもしれません。以下に、それぞれの値の意味を一覧で掲載します。&lt;br /&gt;
&lt;br /&gt;
*Dilatn  - 時間延伸係数(Time Dilation)&lt;br /&gt;
*SimFPS  - SIM の FPS&lt;br /&gt;
*PhyFPS  - 物理的作用の FPS&lt;br /&gt;
*AgntUp  - エージェントの更新回数&lt;br /&gt;
*RootAg  - Root Agent の数&lt;br /&gt;
*ChldAg  - Child Agent の数&lt;br /&gt;
*Prims   - プリム数の合計&lt;br /&gt;
*AtvPrm  - アクティブなプリムの数&lt;br /&gt;
*AtvScr  - アクティブなスクリプトの数&lt;br /&gt;
*ScrLPS  - １秒間に実行されたスクリプトの行数&lt;br /&gt;
*PktsIn  - １秒間に受信したパケット数&lt;br /&gt;
*PktOut  - １秒間に送信したパケット数&lt;br /&gt;
*PendDl  - 保留中のダウンロードの数&lt;br /&gt;
*PendUl  - 保留中のアップロードの数&lt;br /&gt;
*UnackB  - 送達未確認のバイト数&lt;br /&gt;
*TotlFt  - フレーム時間の合計&lt;br /&gt;
*NetFt   - 通信にかかったフレーム時間&lt;br /&gt;
*PhysFt  - 物理計算にかかったフレーム時間&lt;br /&gt;
*OthrFt  - 他の処理にかかったフレーム時間&lt;br /&gt;
*AgntFt  - エージェントの処理にかかったフレーム時間&lt;br /&gt;
*ImgsFt  - 画像処理にかかったフレーム時間&lt;br /&gt;
{{DEFAULTSORT:さーばこまんど}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88</id>
		<title>サポート</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88"/>
				<updated>2012-03-04T07:05:50Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks/ja|Support}}&lt;br /&gt;
== サポートと貢献のプロセス ==&lt;br /&gt;
=== 助けを求める前に ===&lt;br /&gt;
*  [[ニュース|最新ニュース]]ページで、最近のアップデートを確認しましょう。&lt;br /&gt;
* [[FAQ/ja|FAQ]] と [[トラブルシューティング]] で探しましょう。&lt;br /&gt;
* [[利用者向け説明書]] をくまなく検索してから助けを求めるようにしましょう。&lt;br /&gt;
* [[Definitions]] を読みましょう。&lt;br /&gt;
* [[:Category:Tech Reference|Technical Reference]] を確認しましょう。&lt;br /&gt;
* 設定ファイルを見て、明らかな欠陥がないか確認しましょう。&lt;br /&gt;
* 手順通りに進めていっているか確認しましょう。&lt;br /&gt;
* [http://opensimulator.org/mantis  既知のバグ]を確認しましょう。&lt;br /&gt;
&lt;br /&gt;
=== サポートを受ける ===&lt;br /&gt;
&lt;br /&gt;
これらを全部実施しても、まだ問題がある場合の手順はこちらです。この順に実施します:&lt;br /&gt;
&lt;br /&gt;
#irc.freenode.net の #opensim と #opensim-dev で質問します。この順番であたってください&amp;amp;nbsp;:) 礼儀正しく、開発者や手伝ってくれる他の人はボランティアでそこにいて、あなたを手伝う義務がないということを念頭に置いてください。&lt;br /&gt;
#*質問するように依頼するのではなく、単刀直入に質問してください。&lt;br /&gt;
#*質問を質問の形式で書いてください。&lt;br /&gt;
#*具体的に。&lt;br /&gt;
#*問題を説明してください。&lt;br /&gt;
#*問題の再現方法を説明してください。&lt;br /&gt;
#*設定ファイルやエラーメッセージをコピペする必要がある場合は、 [http://pastebin.ca/ pastebin] に貼り付けて、そのリンクを IRC チャネルに送信してください。&lt;br /&gt;
#IRC でその時点でだれも助けることができない場合、利用者と開発者がコミュニケーションをとるためにあるメーリングリストにあたってみましょう。&lt;br /&gt;
#*[https://lists.berlios.de/mailman/listinfo/opensim-users opensim-users] - OpenSimulator のユーザサポート・フォーラム&lt;br /&gt;
#*[https://lists.berlios.de/mailman/listinfo/opensim-dev opensim-dev] - OpenSimulator の開発者フォーラム&lt;br /&gt;
#問題が OpenSimulator のバグに起因しているという結論に達したら、バグレポートを提出しましょう（やり方は後述）。これを実施する際には、バグレポートに必要な全てのデータがそろっているか確認しましょう。開発者が注目する良いバグレポートを提出するには、あなたのほうで相当努力しなければなりません。もしその努力をしたくないのであれば、わざわざバグレポートを提出しないでください。&lt;br /&gt;
&lt;br /&gt;
オープンソースの開発者と触れ合うことに慣れていなければ、[http://www.catb.org/~esr/faqs/smart-questions.html これ]を読むことをおすすめします。絶対に面白いですよ！&lt;br /&gt;
&lt;br /&gt;
=== 手伝ってもらった後 ===&lt;br /&gt;
* 問題がバグで、だれも助けてくれないとき、 [[Bugs|バグレポート]]を提出してください。やり方は以下を参照してください。&lt;br /&gt;
* 誰かが手伝ってくれたら、問題と解決方法が Wiki に載っていなければ Wiki に文書化しましょう。&lt;br /&gt;
&lt;br /&gt;
=== オフィスアワーに参加する ===&lt;br /&gt;
プロジェクトに貢献したければ、あなたが（プロジェクトについて学んだあとに）やったほうがいいのは、インワールドの [[Office hours|OpenSimulator ディスカッションアワー]]に参加することです。&lt;br /&gt;
&lt;br /&gt;
== バグを報告する ==&lt;br /&gt;
&lt;br /&gt;
[[Bugs|バグを報告する]] を読んでください。&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
[[BuildingIssues]]&lt;br /&gt;
&lt;br /&gt;
== 将来要望 ==&lt;br /&gt;
&lt;br /&gt;
あなたは Opensim をまだ行ったこともない面白い方向に発展させるアイデアをもっているかもしれません。もしそうなら、以下の手順を踏んでください:&lt;br /&gt;
&lt;br /&gt;
* アイデアを電子メールや、できれば、Web のどこかに書きます。そして opensim-dev メーリングリスト上で議論を始め、あなたのアイデアについて開発者がどう考えているかを知り、実装についてのアドバイスを受けます。開発者が興味をもってないなと感じたら、GForge プロジェクトやあなたのプロジェクトでいつでも実装することができます。あなたのアイデアがコアな貢献となる可能性があると感じたら、次に読み進めてください。&lt;br /&gt;
&lt;br /&gt;
* Opensim のあなたが持っているコピーでアイデアを実装し、利用者や開発者が特に努力しなくても試せるようにします。人々が試すのにかける努力が少なければ少ないほど、人々が試し、受け入れる可能性が高くなります。&lt;br /&gt;
&lt;br /&gt;
* あなたがプログラマーでない場合、プログラマーの誰か（コアでも、コアでなくても）を説得してあなたの代わりに実装してもらうことしかできないでしょう。 Opensim の開発者はあなたの代わりに作業してくれませんし、'''彼らが''' 興味のあるものを実装するので手一杯です。アイデアが、裏付けるコードがないただのアイデアなら、それは無視されます。&lt;br /&gt;
&lt;br /&gt;
* 実装が完了したら、パッチで提供して開発者にレビューしてもらいます。&lt;br /&gt;
&lt;br /&gt;
== パッチを提供する ==&lt;br /&gt;
&lt;br /&gt;
[[Submitting code to OpenSim]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cleanpage title=hide cats=hide /&amp;gt;&lt;br /&gt;
{{DEFAULTSORT:さぽーと}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%83%AA%E3%82%B9%E3%83%88</id>
		<title>グリッドリスト</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%83%AA%E3%82%B9%E3%83%88"/>
				<updated>2012-03-04T07:05:40Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks/ja|Grid_List}}&lt;br /&gt;
&lt;br /&gt;
= グリッドリストとは？ =&lt;br /&gt;
&lt;br /&gt;
== グリッドリストについて ==&lt;br /&gt;
現時点で、更新などを行う時間以外は２４時間年中無休で運用しようとしている SIM がたくさんあります。気をつけてください - インベントリやランドスケープなどが復旧されるという保証はどこにもありません。このため、これはせいぜいベータグリッド程度のものだと考えてください。 Opensim リンクでログインするためには、 [http://lab.newworldgrid.com/index.php/OpenSim_Launcher OpenSimulator ランチャー]をインストールするか、ブラウザに[[Browser Protocol Handler|プロトコルハンドラ]]を追加する必要があります。そうでなければ、 Second Life ビューアに[[Connecting|ショートカット]]を作成して適切なパラメタを追加するとよいでしょう。&lt;br /&gt;
&lt;br /&gt;
== 公開グリッド ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;重要事項:&amp;lt;/big&amp;gt;OpenSimulator プロジェクトは誰でも使うことのできるアプリケーションプラットフォームです。このページに掲載されているグリッド、グリッドの内容やグリッドで行われている活動について責任を負うものではありません。&lt;br /&gt;
グリッドリストポリシー: あなたのソフトウェアが OpenSimulator.org SVN ソフトウェアコードをベースにしている場合にだけ、リストにご自分のグリッドを掲載してください。他のグリッドは全て削除されます。また、ご自分のグリッドの Web サイトにこのプロジェクトの Web サイトのリンクを貼って、相互リンクになるようにしてください。&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt; グリッドを持っていて、グリッド連合に加入したい場合は、このページを参照してください: [[Grid Associations]] &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt; 公開グリッドは所有者の Web サイトにアカウントを作成し、それを使ってグリッドにログインするする必要があります。&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;これらのグリッドは出現した順に並んでいます。リストの上のほうに追加されているのを発見次第、誰かに削除されます。リストの最後尾に追加してください。例外はありません。&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;メインリストのグリッドリストの内容にはグリッド名と列ヘッダに定義されている番号だけでなければなりません。[[Grid List/Template|この]]テンプレートを使って、サブページに入る情報が比較できる書式となるようにしてください。よろしくお願いします。&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt; [http://spreadsheets.google.com/pub?key=rHNVZVIc1-GdXzqx2Ac4NDQ&amp;amp;gid=4 ユーザの多い順]、[http://spreadsheets.google.com/pub?key=rHNVZVIc1-GdXzqx2Ac4NDQ&amp;amp;gid=6 ３０日以内にログインしたユーザの多い順]([http://spreadsheets.google.com/pub?key=rHNVZVIc1-GdXzqx2Ac4NDQ&amp;amp;oid=6&amp;amp;output=image チャート])に並んでいます。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!名前&lt;br /&gt;
!Web サイト&lt;br /&gt;
!ログイン URI&lt;br /&gt;
!地域 #&lt;br /&gt;
!ユーザ #&lt;br /&gt;
|-&lt;br /&gt;
|TUIS Open Grid&lt;br /&gt;
|http://www.opensim.tuis.ac.jp/&lt;br /&gt;
|http://opensim.tuis.ac.jp:8002/&lt;br /&gt;
|20&lt;br /&gt;
|50&lt;br /&gt;
|-&lt;br /&gt;
|OPEN NEBURA&lt;br /&gt;
|http://www.opennebula.net/&lt;br /&gt;
|http://60.32.217.116:8002/&lt;br /&gt;
|9&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|NS GRID&lt;br /&gt;
|http://www.nasco-sys.co.jp/opensim01.html&lt;br /&gt;
|http://opensim.nasco-sys.co.jp:8002/&lt;br /&gt;
|8&lt;br /&gt;
|&amp;amp;nbsp; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
海外の公開グリッドは、[[Grid List#Public grids|こちら]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== オフィスアワー ==&lt;br /&gt;
&lt;br /&gt;
毎週火曜日に、OSGrid は公式オフィスアワーを開催しています。そこで、開発者が集まって、その週のソフトウェア開発作業について打ち合わせを行います。ここは OpenSimulator で何が起きようとしているかを知る良い場所です。&lt;br /&gt;
&lt;br /&gt;
オフィスアワーの日程は、[[Grid List#Office Hour|こちら]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== グリッドテストアワー ==&lt;br /&gt;
&lt;br /&gt;
グリッドによっては、プロジェクトに貴重なテスト情報を提供して、それぞれが特別な「テスト」時間を設けて、プラットフォームの性能をテストしているところがあります。これらは毎週同じ時間に実施されています。あなたが抱える疑問に答えられる人と出会うことができる良いきっかけともなります。&lt;br /&gt;
&lt;br /&gt;
テストアワーの日程は、[[Grid List#Grid Test Hours|こちら]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== スタンドアロン SIM ==&lt;br /&gt;
&lt;br /&gt;
スタンドアロン SIM は &amp;quot;Testa User&amp;quot; .. &amp;quot;Testz User&amp;quot; 、パスワード &amp;quot;test&amp;quot; で「匿名」ログインすることができます。&lt;br /&gt;
&lt;br /&gt;
スタンドアロン SIM の一覧は、[[Grid List#Standalone sims|こちら]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
= 参考情報 =&lt;br /&gt;
&lt;br /&gt;
* [http://spreadsheets.google.com/pub?key=rHNVZVIc1-GdXzqx2Ac4NDQ&amp;amp;gid=4 グリッドリスト（ユーザの多い順）]&lt;br /&gt;
* [http://spreadsheets.google.com/pub?key=rHNVZVIc1-GdXzqx2Ac4NDQ&amp;amp;gid=6 グリッドリスト（３０日以内にログインしたユーザの多い順）]&lt;br /&gt;
* [[Grid Associations|グリッド連合]]&lt;br /&gt;
* [[Public Hypergrid Nodes|HyperGrid ノード]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:ぐりっどりすと}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Japanese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Opensim-ru</id>
		<title>Opensim-ru</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Opensim-ru"/>
				<updated>2012-03-04T07:05:31Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{MainPageQuicklinks|Main Page}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Languages}}&lt;br /&gt;
Please use the Information Template to announce new things, the other languages are added as well&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Information}}&lt;br /&gt;
&lt;br /&gt;
=== Что такое OpenSimulator? ===&lt;br /&gt;
{{FrontPageSidebar}}&lt;br /&gt;
&lt;br /&gt;
OpenSimulator это сервер трёхмерного окружения. Он может быть использован для создания виртуальной среды(или вселенной) к которой можно присоединиться используя различные программы-клиенты, на нескольких протоколах. OpenSimulator позволяет создавать свою среду используя технологии, которые вы считаете наилучшими для своих целей - разработанные [[Используйте модули регионов|модули раширения]] позволяют создать полностью индивидуальную конфгуацию сервера. OpenSimulator выпущен под [[Лицензия BSD|лицензией BSD]], делающей его одинаково удобным для внедрения в приложениях с открытым кодом и коммерческих продуктах.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Out of the box, OpenSimulator can be used to simulate a virtual environment similar to Second Life™ (including client compatibility).  Other environments, protocols and features are supported via add on modules.  For a list of available modules check out our [http://forge.opensimulator.org/gf/ forge site].&lt;br /&gt;
&lt;br /&gt;
Although OpenSimulator is still considered '''alpha software''', many people are [http://planet.opensim.us doing exciting things with it].--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Особенности ===&lt;br /&gt;
Хотя OpenSimulator относительно молодое програмное обеспечение, у него всёже есть множество полезных функций:&lt;br /&gt;
* поддерживается создание нескольких &amp;quot;миров&amp;quot; на одном сервере&amp;lt;!--Supports creating multiple 'worlds' in a single application instance--&amp;gt;;&lt;br /&gt;
* поддерживаются несколько клиентв и протоколов - доступ к одному и тому же &amp;quot;миру&amp;quot; одновременно через несколько протоколов;&lt;br /&gt;
* широкие возможности для настройкки вашего аватара, включая одежду, скины и одеваемы предметы;&lt;br /&gt;
* моделирование физики в реальном времени, используя несколько различных движков, включая ODE;&lt;br /&gt;
* возможность создавать контент в реальном времени прямо в среде, используя встроенные инструменты;&amp;lt;!--The ability to create content real time in the environment using in world building tools. What you see is what you get.--&amp;gt;&lt;br /&gt;
* возможность создания внутри среды приложений, используя ряд различных языков программирования, в том числе - LSL/OSSL, C#, JScript и VB.NET.&lt;br /&gt;
&lt;br /&gt;
=== Использование OpenSimulator ===&lt;br /&gt;
Самый быстрый способ начать использовать OpenSimulator, это создать учётную запись на [http://osgrid.org OSGrid], а затем [http://osgrid.org OSGrid] скачать [http://opensim-viewer.sourceforge.net/ Hippo Viewer] или [http://secondlife.com/support/downloads.php Linden Lab's Second Life viewer] (в числе прочих клиентов) для подключения к OSGrid.  &amp;lt;!--This process should take no longer than 10 minutes, and will give you a flavor for what OpenSimulator is like.&lt;br /&gt;
&lt;br /&gt;
You can also easily connect to any one of the many [[Grid_List|public grids]] on the internet.&lt;br /&gt;
&lt;br /&gt;
Or you could [[Download]] and run a simple standalone OpenSimulator on your Windows, Linux or Mac desktop to create and preview content.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Запуск своего собственного сервера OpenSimulator ===&lt;br /&gt;
&lt;br /&gt;
Если вы заинтересованы в создании своего собственного сервера OpenSimulator, для разещения собственной трёхмерной среды, то вам необходимо ознакомиться с информацией в следующих статьях: &lt;br /&gt;
&lt;br /&gt;
*[[Скачивание|Скачать OpenSimulator]] &lt;br /&gt;
*[[Инструкции по компиляции|Компиляция OpenSimulator]] &lt;br /&gt;
*[[Настройка|Настройка OpenSimulator]] &lt;br /&gt;
*[[Настройка мега-регионов]]&lt;br /&gt;
*[[Запуск|Запуск OpenSimulator]] '''(Windows / Linux скрипты для управления и обслуживания)''' &lt;br /&gt;
*[[Консольные команды]] &lt;br /&gt;
*[[ЧАВо|Часто задаваемые вопросы по запуску OpenSimulator]] &lt;br /&gt;
*[[Технические руководства]]&lt;br /&gt;
*[http://ru.wikibooks.org/wiki/Diva_distro Инструкция по установке Diva distro]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=== Participating in the OpenSimulator Community ===&lt;br /&gt;
OpenSimulator is an [http://en.wikipedia.org/wiki/Open_source open source] project, and is powered by the community members that devote time and energy to the effort.  There are many ways to participate and contribute to the community:&lt;br /&gt;
* Participate via [http://en.wikipedia.org/wiki/Internet_Relay_Chat IRC] - [irc://irc.freenode.net/opensim #opensim] (for users), [irc://irc.freenode.net/opensim-dev #opensim-dev] (for developers) and [irc://irc.freenode.net/opensim-scripts #opensim-scripts] &lt;br /&gt;
* Participate via the mailing lists - [https://lists.berlios.de/mailman/listinfo/opensim-users opensim-users] (for users) and [https://lists.berlios.de/mailman/listinfo/opensim-dev opensim-dev] (for developers).&lt;br /&gt;
* [[WikiStructure|Contribute to this wiki]], making the OpenSimulator documentation even better.&lt;br /&gt;
* Report [[bugs]], submit [[Submitting_code_to_OpenSim|patches]] or submit content contributions via our [http://opensimulator.org/mantis/ mantis bug tracker]&lt;br /&gt;
* Create an OpenSimulator related project hosted on the [http://forge.opensimulator.org Forge] or [[Related_Software|elsewhere]] on the web.  In the forge there are over a dozen registered projects, and it's a great way to further extend the OpenSimulator community.&lt;br /&gt;
* Participate to open content creation for OpenSimulator. More details at [[Artist Home]].&lt;br /&gt;
* Blog about OpenSimulator, and let us know about that blog on [irc://irc.freenode.net/opensim #opensim] so it can be added to [http://planet.opensim.us Planet OpenSim]&lt;br /&gt;
* Participate in one of the weekly [[Office Hours]] for OpenSimulator.  We currently have weekly office hours for development, wiki work, and testing.&lt;br /&gt;
* Secure project infrastructure by [[Donations|donating]] to the [[Donations|OpenSimulator Project Infrastructure Fund]].&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Layout_box2|1=&lt;br /&gt;
=== Pages by Category: ===&lt;br /&gt;
&amp;lt;b&amp;gt;&lt;br /&gt;
[[:Category:Getting_Started | Getting Started]] , [[:Category:Support | Support]] , [[:Category:Tech Reference|Technical Reference Pages]] , [[:Category:Help|Help]] , [[:Category:Configuration|Configuration Pages]] , [[:Category:Users|User's Pages]] , [[:Category:Development | Development Pages]] , [[:Category:Scripts|Scripts]] , [[:Special:Recentchanges| Recent Wiki Changes]]&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- I have removed a list of empty categories. When recreating these categories, make sure to add something to them.  -- Fritigern --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Russian Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/XSimStatus</id>
		<title>XSimStatus</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/XSimStatus"/>
				<updated>2012-03-04T07:05:09Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This old facility provides a way to retrieve some very basic region data and some more detailed information about the simulator as a whole. It is always active.&lt;br /&gt;
&lt;br /&gt;
Each region will register a URL handler with a random UUID. There will also be a handler that will return data for the simulator as a whole. These UUIDs will be different on each restart of the simulator but are stored in the regionSecret field of the regions table. However, this is not useful for standalone simulators since they do not persist this table.&lt;br /&gt;
&lt;br /&gt;
So a two region simulator will have three handlers, one for each simulator and one for the simulator as a whole.&lt;br /&gt;
&lt;br /&gt;
Sending a GET request to a handler will return data in JSON format.&lt;br /&gt;
&lt;br /&gt;
You can see these handlers using the region console command&lt;br /&gt;
&lt;br /&gt;
 show http-handlers&lt;br /&gt;
&lt;br /&gt;
In the last section you should see something like&lt;br /&gt;
&lt;br /&gt;
 * StreamHandlers (7):&lt;br /&gt;
        POST:/friends&lt;br /&gt;
        GET:/map&lt;br /&gt;
        GET:/get_grid_info&lt;br /&gt;
        GET:/F27ED466A0D311F8A7B1F309F942437F3302D455&lt;br /&gt;
        GET:/493F5C64F8AF200E63C9A33EA92BD393D9232A61&lt;br /&gt;
        GET:/simstatus&lt;br /&gt;
        GET:/1B71AB5959171C2308F429E8F397F0390ADEF94D&lt;br /&gt;
&lt;br /&gt;
Here, F27ED466A0D311F8A7B1F309F942437F3302D455, 493F5C64F8AF200E63C9A33EA92BD393D9232A61 and 1B71AB5959171C2308F429E8F397F0390ADEF94D are XSimStatus handlers. Unfortunately, it's not possible to tell which are which except by pointing your browser at them. Let's suppose you are running a standalone on 192.168.1.2 with an HTTP listener port of 9000. In this case, going to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://192.168.1.2:9000/F27ED466A0D311F8A7B1F309F942437F3302D455&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
yields&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;OSStatsURI&amp;quot;:&amp;quot;http://192.168.1.2:9000/1B71AB5959171C2308F429E8F397F0390ADEF94D/&amp;quot;,&lt;br /&gt;
&amp;quot;TimeZoneName&amp;quot;:&amp;quot;GMT&amp;quot;,&lt;br /&gt;
&amp;quot;TimeZoneOffs&amp;quot;:1.0,&lt;br /&gt;
&amp;quot;UxTime&amp;quot;:1318276065,&lt;br /&gt;
&amp;quot;Memory&amp;quot;:31.0,&lt;br /&gt;
&amp;quot;Version&amp;quot;:&amp;quot;OpenSimulator 0.7.3 Dev          &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is data for a particular region. In the OSStatsURI field it does give the statistics handler for the simulator as a whole. Sending a get request to http://192.168.1.2:9000/1B71AB5959171C2308F429E8F397F0390ADEF94D/ returns&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;AssetsInCache&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;TimeAfterCacheMiss&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;BlockedMissingTextureRequests&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;AssetServiceRequestFailures&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;abnormalClientThreadTerminations&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;InventoryServiceRetrievalFailures&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;Dilatn&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;SimFPS&amp;quot;:&amp;quot;56.67&amp;quot;,&lt;br /&gt;
&amp;quot;PhyFPS&amp;quot;:&amp;quot;46.93&amp;quot;,&lt;br /&gt;
&amp;quot;AgntUp&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;RootAg&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;ChldAg&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;Prims&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;AtvPrm&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;AtvScr&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
&amp;quot;ScrLPS&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;PktsIn&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;PktOut&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;PendDl&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;PendUl&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;UnackB&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;TotlFt&amp;quot;:&amp;quot;0.67&amp;quot;,&lt;br /&gt;
&amp;quot;NetFt&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;PhysFt&amp;quot;:&amp;quot;0.33&amp;quot;,&lt;br /&gt;
&amp;quot;OthrFt&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;AgntFt&amp;quot;:&amp;quot;0.33&amp;quot;,&lt;br /&gt;
&amp;quot;ImgsFt&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;
&amp;quot;Memory&amp;quot;:&amp;quot;21&amp;quot;,&lt;br /&gt;
&amp;quot;Uptime&amp;quot;:&amp;quot;00:20:49.0991070&amp;quot;,&lt;br /&gt;
&amp;quot;Version&amp;quot;:&amp;quot;OpenSimulator 0.7.3 Dev          013bf27&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the simulator stats here are only for one region. In a multi-region simulator which one this is is not defined and will change depending on exactly when the URL is called. Also, the top 6 statistics (AssetsInCache to InventoryServiceRetrievalFailures) are not currently in use.&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/WxService</id>
		<title>WxService</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/WxService"/>
				<updated>2012-03-04T07:04:59Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== An example module for Robust ==&lt;br /&gt;
WxService is a user-space module consisting of a set of connector, service and handler for Robust. It provides a starting point and example for writing modules to run in the Robust server shell. The example framework demonstrates...&lt;br /&gt;
* the steps needed to configure and load the application under the Robust server&lt;br /&gt;
* servicing requests that interact with existing core OpenSimulator services&lt;br /&gt;
* adding commands to the Robust console&lt;br /&gt;
* adding a custom database with migrations&lt;br /&gt;
* building an application under Robust&lt;br /&gt;
&lt;br /&gt;
The purpose of WxService is to show how one can leverage the Robust shell to provide points of interaction with OpenSimulator core for external applications. This gives anyone an opportunity to build applications that can interact with OpenSimulator without manipulating the databases directly (bad, bad, bad). It also allows applications that have traditionally used in external apache/php services to be more tightly integrated into the OpenSimulator framework. It should make distribution of modules to users simpler by using the OpenSimulator database facilities to migrate data on installations or upgrades. And, the applications can be made better by providing management commands in the console.&lt;br /&gt;
&lt;br /&gt;
== '''Example code''' ==&lt;br /&gt;
The code is laid out in directories similar to the core services and connectors in OpenSimulator core and is heavily commented. It should be pretty easy to follow and adapt to your own projects. See: http://bluewallvirtual.com/WxService_Reloaded for code and discussion forum. For help, post in the forum there (no account required) or find me (BlueWall) on IRC - Freenode #opensim&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/WikiStructure/de</id>
		<title>WikiStructure/de</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/WikiStructure/de"/>
				<updated>2012-03-04T07:04:51Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks|WikiStructure}}&lt;br /&gt;
= An dieser Wiki mitwirken =&lt;br /&gt;
&lt;br /&gt;
Erst mal herzlichen Dank, dass Sie uns bei dieser Wiki unterstützen möchten. Bevor Sie jedoch beginnen, ist es sehr wichtig, dass Sie ein grundlegendes Verständnis davon haben, wie man eine Wiki editiert und wie sie funktioniert&lt;br /&gt;
&lt;br /&gt;
Hier folgen einige grundlegende Wiki-spezifische Tags und Konzepte:&lt;br /&gt;
# In einer Wiki brauchen Sie kein HTML. Verwenden Sie stattdessen die [http://www.mediawiki.org/wiki/Help:Formatting Wiki-Markup Äquivalente]. Benutzen Sie AUSSCHLIEßLICH die Wiki-Markup, wenn Sie Seiten editieren.&lt;br /&gt;
# Möchten Sie eine andere Seite verlinken? Nehmen Sie den Namen der Seite (nicht die URL!) und setzen Sie diesen in doppelte eckige Klammern. Etwa so: '''&amp;lt;nowiki&amp;gt;[[Beispiel]]&amp;lt;/nowiki&amp;gt;'''. Nachdem Sie die Seite abgespeichert haben, wird es dann so aussehen [[Beispiel]]. Dies wird ein interner Link genannt.&lt;br /&gt;
# Wenn Sie eine neue Seite erstellen, stellen Sie sicher, dass Sie diese einer Kategorie zuordnen. Um dies zu tun, besuchen Sie [[:category:categories]], und finden Sie dort die Kategorie, welche am besten zu Ihrem Artikel passt. Fügen Sie dann den Text '''&amp;lt;nowiki&amp;gt;[[Category:NameDerKategorie]]&amp;lt;/nowiki&amp;gt;''' Ihrer Seite hinzu.&lt;br /&gt;
# Um bereits existierende HTML-Tabellen in die Wiki-Markup zu konvertieren, können Sie das Online-Werkzeug auf http://www.uni-bonn.de/~manfear/html2wiki-tables.php benutzen. Es funktioniert wirklich gut.&lt;br /&gt;
# Leeren Sie '''NIEMALS''' eine Seite. Die Informationen können immer noch nützlich für manche Menschen sein, egal wie veraltet sie sein mögen. Nutzen Sie stattdessen ein [[WikiStructure#Tags|Tag]], um anzuzeigen, dass es keine aktuellen Infos sind. Falls Sie glauben, dass eine Seite besser gelöscht als archiviert werden sollte, ziehen Sie zuerst in Betracht, diese zu verwandten Seiten umzulenken. Wenn Sie einen veralteten Artikel (nennen wir ihn „A“) finden, dessen Inhalt im Großen und Ganzen der gleiche ist, wie ein anderer gepflegter Artikel (nennen wir ihn „B“), setzen Sie  '''&amp;lt;nowiki&amp;gt;#Redirect [[B]]&amp;lt;/nowiki&amp;gt;''' in eine leere Seite A. Falls Sie trotz all Ihrer Bemühungen keine verwandte Seite finden können, so setzen Sie  '''&amp;lt;nowiki&amp;gt;{{delete|Ihr Grund, warum Sie die Seite löschen möchten}}&amp;lt;/nowiki&amp;gt;''' ganz oben auf die Seite und speichern Sie diese ab. Ein Sysop (auch Wiki-Admin genannt) wird sich dann Ihren Wunsch auf Löschung anschauen, und die Seite löschen, wenn er diesen akzeptiert. Die einzige Ausnahme von dieser Regel sind Seiten, die nur Spam enthalten. Werfen Sie sie in unseren Mülleimer, indem Sie '''&amp;lt;nowiki&amp;gt;#Redirect [[Trash Bin]]&amp;lt;/nowiki&amp;gt;''' setzen. Danach wird Sie auf [[Trash Bin]] umgeleitet, ohne auch nur den griffigen Titel der Spam Seite anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen dazu, wie man Wiki-Seiten editiert, finden Sie unter  http://www.mediawiki.org/wiki/Help:Editing&lt;br /&gt;
&lt;br /&gt;
== Wobei brauchen wir Ihre Hilfe? ==&lt;br /&gt;
&lt;br /&gt;
Es gibt mittlerweile viele Seiten in der Opensim-Wiki und einige sind nicht wirklich in Schuss.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich um und wenn Sie einen Artikel finden, den Sie ergänzen können, dann zögern Sie nicht, dies auch zu tun. Ein Ort, an dem Sie nachsehen können, ist die  [[:Category:Stubs|&lt;br /&gt;
&lt;br /&gt;
The stubs Kategorie]], Hier finden Sie Seiten, die Ergänzungen brauchen.&lt;br /&gt;
&lt;br /&gt;
Ein anderer Weg uns zu unterstützen ist, sich durch die Seiten zu lesen und diese zu taggen. Schauen Sie hierzu weiter unten nach den Tags und Templates, die Sie auf die Seiten dieser Wiki anwenden können.&lt;br /&gt;
&lt;br /&gt;
== Wie finden Sie Dinge, die zu tun sind? ==&lt;br /&gt;
Schauen Sie auf den folgenden Seiten nach, um Aufgaben zu finden, an denen Sie arbeiten können:&lt;br /&gt;
&lt;br /&gt;
*[[Special:UncategorizedCategories|Unkategorisierte Kategorien]] - Diese Kategorien müssen einer Kategorie zugeordnet werden.&lt;br /&gt;
*[[Special:UncategorizedImages|Unkategorisierte Bilder]] - Diese Bilder müssen einer Kategorie zugeordnet werden.&lt;br /&gt;
*[[Special:UncategorizedPages|Unkategorisierte Seiten]] - Diese Seiten müssen einer Kategorie zugeordnet werden.&lt;br /&gt;
*[[Special:UnusedCategories|Ungenutzte Kategorien]] - Ungenutzte Kategorien. Bearbeiten Sie die Seiten, um sie diesen Kategorien hinzuzufügen, oder markieren Sie sie zur Löschung.&lt;br /&gt;
*[[Special:ShortPages|Kurze Seiten]] - Kurze Seiten müssten vielleicht erweitert werden.&lt;br /&gt;
*[[Special:LongPages|Lange Seiten]] - Lange Seiten sollten vielleicht in separate Unterseiten aufgeteilt werden.&lt;br /&gt;
*[[Special:DoubleRedirects|Doppelte Weiterleitungen]] - Doppelte Weiterleitungen belasten den Server unnötig. Entfernen Sie die mittleren Weiterleitungen und ändern Sie die Erste, sodass Sie auf die Letzte in der Kette zeigt.&lt;br /&gt;
*[[Special:DeadendPages|Sackgassen-Seiten]] - Sackgassen-Seiten haben keinerlei Links zu anderen Seiten. Um eine Wiki funktionieren zu lassen, wie Sie es sollte, fügen Sie Links zu anderen Seiten hinzu.&lt;br /&gt;
*[[Special:BrokenRedirects|Kaputte Weiterleitungen]] - Kaputte Weiterleitungen zeigen auf nichtexistente Seiten. Diese sollten gelöscht, oder so geändert werden, dass aus Ihnen nützliche Artikel werden.&lt;br /&gt;
*[[Special:LonelyPages|Verwaiste Seiten]] - Diese Seiten sind Seiten, die nicht verlinkt sind, oder auf die falsch verlinkt wurde (wie zum Beispiel unter Verwendungen eines externen anstatt eines internen Links).&lt;br /&gt;
*[[Special:WantedPages|Erwünschte Seiten]] - Diese Seiten existieren noch nicht, werden aber gebraucht. Bitte erstellen Sie diese, wenn Sie das können (und füllen Sie sie bitte mit Inhalten. Keine Platzhalter!).&lt;br /&gt;
&lt;br /&gt;
=== Was müsste noch getan werden? ===&lt;br /&gt;
*Aktualisieren Sie Navigationslinks  - Mark Malewski &lt;br /&gt;
*Überprüfen Sie die Wiki auf verwaiste Seiten und kaputte Links - Mark Malewski &lt;br /&gt;
*Überreden Sie Entwickler und versuchen Sie aktuelle Inhalte für die WIKI-Seiten zu bekommen - Mark Malewski &lt;br /&gt;
*Erstellen einer Mind Map für die Wiki - SeanDague&lt;br /&gt;
&lt;br /&gt;
Schauen Sie auch unter [[WikiTodo]] nach&lt;br /&gt;
&lt;br /&gt;
= Tags =&lt;br /&gt;
Die folgenden Templates sollten benutzt werden, um Seiten zu taggen, die nicht dem Standard entsprechen. Das wird uns dabei helfen, sich um eine Liste der Dinge zu kümmern, die gebraucht werden, um die Wiki zu verbessern. Sorgen Sie sich nicht zu sehr darum, eine Seite falsch zu taggen. Diese Seiten zu taggen, läßt sie unter verschiedenen Kategorien auftauchen und Wiki Admins, oder sogar Benutzer, werden diese Tags wieder löschen, wenn sie nicht passen sollten.&lt;br /&gt;
&lt;br /&gt;
=== Wie es gemacht wird ===&lt;br /&gt;
Um eine Seite zu taggen, fügen Sie das passende Template in den Artikelkorpus, genau vor den Text, den Sie taggen möchten, ein. Wenn Sie den Artikel speichern, wird das Template automatisch in eines der Kästchen, die Sie weiter unten sehen, übersetzt.&lt;br /&gt;
&lt;br /&gt;
'''Beispiel :''' Sie stoßen auf einen Artikel über ein Add-on eines Dritten, oder einer Software, welche noch nicht getagged wurde. Sie editieren die Seite und treffen auf einen Artikelkorpus, der wie folgt aussieht:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 = Irgendweine Software eines Drittanbieters =&lt;br /&gt;
 &lt;br /&gt;
 Die Software ''soundso'' wurde entworfen, um  [[diesunddas]] einfacher verwalten zu können, und […]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Um das Template hierauf anzuwenden, fügen Sie den Text '''&amp;lt;nowiki&amp;gt;{{thirdparty}}&amp;lt;/nowiki&amp;gt;''' dem Artikelkorpus hinzu.&lt;br /&gt;
Der Artikelkorpus wird dann wie folgt aussehen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 {{thirdparty}}&lt;br /&gt;
 = Irgendweine Software eines Drittanbieters =&lt;br /&gt;
 &lt;br /&gt;
 Die Software ''soundso'' wurde entworfen, um  [[diesunddas]] einfacher verwalten zu können, und […]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Die meisten Templates werden den Artikel einer Kategorie hinzufügen, was ihn leichter auffindbar macht.&lt;br /&gt;
&lt;br /&gt;
== Seiten die berichtigt werden müssen ==&lt;br /&gt;
&lt;br /&gt;
{{obsolete}} &lt;br /&gt;
'''Zweck''': Diese Seite hatte zu einem bestimmten Zeitpunkt wertvolle Informationen, sie ist allerdings zu veraltet, um noch von Wert zu sein. Wir müssen die Informationen in einer anderen Seite unterbringen, oder machen Sie sich die Mühe, diese Seite zu aktualisieren.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{obsolete}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{archive}}&lt;br /&gt;
'''Zweck:''' Die Informationen dieser Seite sind veraltet. Dennoch können sie für manche Menschen von Wert sein (Beispiele sind Chatlogs, Versionshistorie, oder OpenSimulator 0.6x spezifische Informationen), oder sie müssen aus anderen Gründen aufbewahrt werden. Sie sollten als archivierte Informationen gekennzeichnet werden, um Verwirrungen vorzubeugen.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{archive}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{needsexample}}&lt;br /&gt;
'''Zweck:''' Obwohl der Inhalt auf dieser Seite gut sein mag, ist es schwer ihn ohne Beispiele zu verstehen. Wir hätten gerne Beispiele auf dieser Seite, damit sie Anwenderfreundlicher wird.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{needsexample}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{content}}&lt;br /&gt;
'''Zweck:''' Diese Seite enthält ein wenig Informationen, ist aber sehr unvollständig. Sie kann möglicherweise an ihrem Platz bleiben, benötigt aber etwas mehr Pflege.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{content}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seiten die gelöscht werden sollten (sparsam verwenden!) ==&lt;br /&gt;
&lt;br /&gt;
{{delete|Dies ist ein Beispiel für ein Lösch-Tag.}}&lt;br /&gt;
'''Zweck:''' Diese Seite gehört nicht in dieses Wiki. Sie enthält Spam, ist eine leere Seite, ist eine selbstgefällige Seite, oder wird aus anderen Gründen als Schund angesehen.&lt;br /&gt;
&lt;br /&gt;
''Nennen Sie immer den Grund für Ihre Löschanfrage.'' Ohne Grund wird diese Seite nicht gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{delete|Grund}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:''' &amp;lt;nowiki&amp;gt;{{delete|Dies ist ein Beispiel für ein Lösch-Tag.}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Informelle Tags für Seiten ==&lt;br /&gt;
&lt;br /&gt;
{{proposal}}&lt;br /&gt;
'''Zweck:''' wird benutzt, um Vorschläge für die '''Zukunft''' wiederzugeben, damit die Leute nicht auf die Idee kommen, dass OpenSimulator zur Zeit auf diese Weise funktioniert.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{proposal}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{deprecate|Nov. 21 1997|NewArticle}} &lt;br /&gt;
'''Zweck:''' Wird auf Seiten mit missbilligten Funktionen verwendet. Eine neue Seite mit der Ersatzfunktion soll erstellt werden. Es wird vorgeschlagen den Inhalt der Seite mit der missbilligten Funktion zu kopieren und die Änderungen am Inhalt der neuen Seite durchzuführen.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{deprecate|&amp;lt;MM DD YYYY&amp;gt;|&amp;lt;neuer Name&amp;gt;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel:''' &amp;lt;nowiki&amp;gt;{{deprecate|Nov. 21 1997|Neuer Artikel}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{thirdparty}}&lt;br /&gt;
'''Zweck:''' Wird auf Seiten verwendet, die von Drittanbieter Add-ons, Modulen und so weiter handeln. Um sie klar, einheitlich und ohne Aufwand als Drittanbieter-Software zu kennzeichen.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{thirdparty}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Support]]&lt;br /&gt;
[[Category:Help]]&lt;br /&gt;
[[Category:Configuration]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:German Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/WikiStructure</id>
		<title>WikiStructure</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/WikiStructure"/>
				<updated>2012-03-04T07:04:41Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks}}&lt;br /&gt;
= Contributing to the Wiki =&lt;br /&gt;
&lt;br /&gt;
Thank you for wanting to help with the wiki, but before you start, it is very important that you have a basic understanding of how to edit a wiki, and how it works&lt;br /&gt;
&lt;br /&gt;
Here are a few basic wiki-specific tags and concepts:&lt;br /&gt;
# In a wiki, you don't need HTML. Instead, use the [http://www.mediawiki.org/wiki/Help:Formatting Wiki markup equivalents]. Use ONLY Wiki markup when editing pages.&lt;br /&gt;
# Want to link to another page? Take the name of the page (not the URL!) and put them in double square brackets, like so: '''&amp;lt;nowiki&amp;gt;[[Example]]&amp;lt;/nowiki&amp;gt;'''. After saving the page, it will look like [[Example]]. This is called an internal link.&lt;br /&gt;
# If you create a new page, make sure to add it to a category. To do so, first go to [[:category:categories]], from there, find the category that'd be best suited for your article. Then add the text '''&amp;lt;nowiki&amp;gt;[[Category:NameOfCategory]]&amp;lt;/nowiki&amp;gt;''' to your page.&lt;br /&gt;
# To convert existing HTML tables to Wiki markup, you can use the online tool at http://www.uni-bonn.de/~manfear/html2wiki-tables.php which does a pretty good job.&lt;br /&gt;
# '''NEVER EVER''' empty a page. The information, no matter how outdated it may be, may still be useful to some people, so use a [[WikiStructure#Tags|tag]] to indicate that it's non-current info. If you believe that a page should be deleted instead of being archived, first consider make a redirect to relative pages. If you find an outdated article(we'll call it &amp;quot;A&amp;quot;) which contents is almost the same as another maintained article(call it &amp;quot;B&amp;quot;), put '''&amp;lt;nowiki&amp;gt;#Redirect [[B]]&amp;lt;/nowiki&amp;gt;''' in empty page A. If you can't find related page despite of your every effort, put '''&amp;lt;nowiki&amp;gt;{{delete|Your reason for wanting the page deleted}}&amp;lt;/nowiki&amp;gt;''' to the top of the page, and save it. A sysop (a.k.a. Wiki admin) will then review your proposal to delete, and if accepted, will delete the page. The only exception to this rule, are pages that only contain spam. Throw it into our trash bin by putting '''&amp;lt;nowiki&amp;gt;#Redirect [[Trash Bin]]&amp;lt;/nowiki&amp;gt;'''. After that, it will redirect to [[Trash Bin]] page without even showing the big catchy title of the spam page.&lt;br /&gt;
&lt;br /&gt;
For more info on how to edit Wiki pages, see http://www.mediawiki.org/wiki/Help:Editing&lt;br /&gt;
&lt;br /&gt;
== What do we need help with? ==&lt;br /&gt;
&lt;br /&gt;
There are a lot of pages in the opensim wiki today, many of which aren't really up to snuff.&lt;br /&gt;
&lt;br /&gt;
Have a look around, and if you find an article that you think you can add to, then feel free to do so. One place to look could be [[:Category:Stubs|The stubs category]], where you can find pages that are in need of expansion.&lt;br /&gt;
&lt;br /&gt;
Another way to help, is to go through and tag pages. See below for tags and templates that you could apply to the pages in the wiki.&lt;br /&gt;
&lt;br /&gt;
== How to find stuff to do ==&lt;br /&gt;
See the following pages for things that need work:&lt;br /&gt;
&lt;br /&gt;
*[[Special:UncategorizedCategories|Uncategorized Categories]] - These categories need to be put into a category.&lt;br /&gt;
*[[Special:UncategorizedImages|Uncategorized Images]] - These images need to be put into a category.&lt;br /&gt;
*[[Special:UncategorizedPages|Uncategorized Pages]] - These pages need to be put into a category.&lt;br /&gt;
*[[Special:UnusedCategories|Unused Categories]] - Unused categories. Edit pages to add them to these categories, or mark for deletion.&lt;br /&gt;
&lt;br /&gt;
*[[Special:ShortPages|Short Pages]] - Short pages may need to be expanded.&lt;br /&gt;
*[[Special:LongPages|Long Pages]] - Long pages may need to be split into separate sub-pages.&lt;br /&gt;
&lt;br /&gt;
*[[Special:DoubleRedirects|Double Redirects]] - Double redirects put an unnecessary load on the server. Remove the middle redirect(s) and change the first one to point to the last page in the chain.&lt;br /&gt;
*[[Special:DeadendPages|Dead-end Pages]] - Dead-end pages don't have any links to other pages. To keep the wiki work like a wiki should, add links to other pages.&lt;br /&gt;
*[[Special:BrokenRedirects|Broken Redirects]] - Broken redirects point to nonexistent pages. These should be deleted, or modified so they become useful articles.&lt;br /&gt;
&lt;br /&gt;
*[[Special:LonelyPages|Orphaned pages]] - These pages are pages that are not being linked to, or have been incorrectly linked to (like by using an external link instead of an internal one).&lt;br /&gt;
*[[Special:WantedPages|Wanted Pages]] - These pages don't exist yet, but are needed. Please create them if you can (and make sure to add content to them. No placeholders!).&lt;br /&gt;
&lt;br /&gt;
=== What else is there to be done? ===&lt;br /&gt;
*Update Navigation links - Mark Malewski &lt;br /&gt;
*Check the WIKI for orphan pages and bad links - Mark Malewski &lt;br /&gt;
*Twist the developer's arms, and try to get updated content for WIKI pages - Mark Malewski &lt;br /&gt;
*Mind Map for the Wiki - SeanDague&lt;br /&gt;
&lt;br /&gt;
See also [[WikiTodo]]&lt;br /&gt;
&lt;br /&gt;
= Tags =&lt;br /&gt;
The following templates should be used to tag pages that are not up to par.  This will help us keep a list of things needed to improve the wiki.  Don't worry too much about marking a page incorrectly, tagging these pages makes them show up under various Categories and wiki admins, or even users, will clear tags if they aren't appropriate.&lt;br /&gt;
&lt;br /&gt;
=== How to use ===&lt;br /&gt;
To tag a page, put the appropriate template in the article's body, just before the text that you want to tag. When saving the article, the template will automatically be translated into one of the boxes that you see below.&lt;br /&gt;
&lt;br /&gt;
'''Example : '''&lt;br /&gt;
You come across an article about a third-party addon, or software that was not yet tagged. You edit the page, and find that the article body looks like this:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 = Some Third Party Software =&lt;br /&gt;
 &lt;br /&gt;
 The software ''foo'' was designed to make [[bar]] easier to manage, and [...]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
To apply the template, add the text '''&amp;lt;nowiki&amp;gt;{{thirdparty}}&amp;lt;/nowiki&amp;gt;''' to the  article's body.&lt;br /&gt;
The article body will then look like this:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 {{thirdparty}}&lt;br /&gt;
 = Some Third Party Software =&lt;br /&gt;
 &lt;br /&gt;
 The software ''foo'' was designed to make [[bar]] easier to manage, and [...]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Most templates will automatically add the article to a category, to make them easier to find.&lt;br /&gt;
&lt;br /&gt;
== Pages That Need Fixing ==&lt;br /&gt;
&lt;br /&gt;
{{obsolete}} &lt;br /&gt;
'''Purpose''': This page had good information at one point, but it is too out of date to really have value now.  We need to capture the information in another page, or do major work to bring the page up to date.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{obsolete}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{archive}}&lt;br /&gt;
'''Purpose:''' The information on this page is out of date. However, it may still hold value to some people (examples are chat logs, version history, or OpenSimulator 0.6x specific info) or needs to be preserved for other reasons. It should be marked as archived information to prevent confusion.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{archive}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{needsexample}}&lt;br /&gt;
'''Purpose:''' While the content of the page is good, it's too hard to understand without examples. We'd like to get examples into this page to make it more user friendly.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{needsexample}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{content}}&lt;br /&gt;
'''Purpose:''' This page has a little bit of information, but it's very incomplete.  It probably can stay in the same place but needs more helping hands.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{content}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pages that need deleting (use sparsely!) ==&lt;br /&gt;
&lt;br /&gt;
{{delete|This is an example of the delete tag.}}&lt;br /&gt;
'''Purpose:''' This page does not belong on the wiki. It contains spam, is an empty page, a vanity page, or is considered rubbish otherwise.&lt;br /&gt;
&lt;br /&gt;
''Always specify the reason for the delete request.'' Without one, the page will not be deleted.&lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{delete|Reason}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example:''' &amp;lt;nowiki&amp;gt;{{delete|This is an example of the delete tag.}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Informational Tags for Pages ==&lt;br /&gt;
&lt;br /&gt;
{{proposal}} &lt;br /&gt;
'''Purpose:''' This is used on pages that represent '''future''' proposals, so that people don't get the idea that this is the way that opensim currently works. &lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{proposal}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{deprecate|Nov. 21 1997|NewArticle}} &lt;br /&gt;
'''Purpose:''' To be used on the pages of deprecated functions. New page is to be created with replacement function. Suggest copying over the content of the page of the deprecated function, and make modifications in the content of the new page. &lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{deprecate|&amp;lt;MM DD YYYY&amp;gt;|&amp;lt;newname&amp;gt;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example:''' &amp;lt;nowiki&amp;gt;{{deprecate|Nov. 21 1997|NewArticle}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{thirdparty}}&lt;br /&gt;
'''Purpose:''' To be used on pages dealing with 3rd party add-ons, modules, and so forth, so as to clearly, uniformly, and effortlessly mark them as 3rd party software. &lt;br /&gt;
&lt;br /&gt;
'''Tag:''' &amp;lt;nowiki&amp;gt;{{thirdparty}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Support]]&lt;br /&gt;
[[Category:Help]]&lt;br /&gt;
[[Category:Configuration]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Wifi</id>
		<title>Wifi</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Wifi"/>
				<updated>2012-03-04T07:04:31Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{quicklinks}}&lt;br /&gt;
{{thirdparty}}&lt;br /&gt;
'''Wifi - A Simple Account Management Front-end'''&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wifi&amp;quot; stands for &amp;quot;Web Interface For... I&amp;quot;, and is an '''add-on''' module which is not a standard part of OpenSimulator. It is provided by Diva Canto and can be added to OpenSimulator 0.7 onwards.&lt;br /&gt;
&lt;br /&gt;
== '''PLEASE NOTE''' ==&lt;br /&gt;
'''Packaged binary versions of Wifi are available from http://github.com/diva/d2/downloads in two packages: as part of the standalone Diva distribution (D2) of OpenSimulator, and another package for use with a ROBUST server grid implementation of OpenSimulator. The latter package (Wifi for Robust) is NOT intended to work with standalone implementations of OpenSim.'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Initial information is available from http://www.metaverseink.com/blog/?p=37 and is taken here pretty much verbatim for now... --&amp;gt;&lt;br /&gt;
Wifi provides an embedded Web application for handling user registrations. Wifi is a set of components that can be loaded up by both standalone simulators and [[ROBUST]] servers. &lt;br /&gt;
&lt;br /&gt;
Its features include:&lt;br /&gt;
&lt;br /&gt;
* Account creation, optionally controlled by the administrator&lt;br /&gt;
* Configurable default avatars for new accounts&lt;br /&gt;
* Account updates by both users and administrator&lt;br /&gt;
* Account deletion by administrator&lt;br /&gt;
* Password recovery via email&lt;br /&gt;
* Simple management of user inventory &amp;lt;!-- What does this mean? Do admins get to go through a user's inventory at will? Or does it simply mean that a user can empty his/her trash folder through the web interface? --&amp;gt;&lt;br /&gt;
* A welcome page which can be used as login page for the user's viewer.&lt;br /&gt;
&lt;br /&gt;
Wifi has a few interesting properties that make it a good fit for small-to-medium OpenSimulator-based virtual worlds.&lt;br /&gt;
&lt;br /&gt;
# It doesn’t require an additional web server; it’s all done with built-in OpenSimulator features.&lt;br /&gt;
# Using OpenSimulator features bring many technical benefits. These benefits aren't visible immediately, but it will show its value in the future. Unlike other Web apps that access the database directly, Wifi works by communicating with OpenSimulator directly. This means that any future changes to the OpenSimulator database structure, will not affect Wifi.&lt;br /&gt;
# Technically speaking, Wifi is a set of components that can be used by both standalone sims, as well as [[ROBUST]] (Grid) servers.&lt;br /&gt;
&lt;br /&gt;
== Adding Wifi to your OpenSimulator Setup ==&lt;br /&gt;
&lt;br /&gt;
'''Additions to Standard OpenSimulator Distribution (from 0.7 onwards)'''&lt;br /&gt;
&lt;br /&gt;
=== Binary Approach ===&lt;br /&gt;
&lt;br /&gt;
Obtain the latest Wifi module distribution zip from&lt;br /&gt;
http://github.com/diva/d2/downloads&lt;br /&gt;
and place the files as instructed in the equivalent locations in your OpenSimulator directory.&lt;br /&gt;
&lt;br /&gt;
bin directory&lt;br /&gt;
* add bin/Diva.Wifi.dll&lt;br /&gt;
* add bin/Diva.Wifi.ScriptEngine.dll&lt;br /&gt;
* add bin/Diva.OpenSimServices.dll&lt;br /&gt;
* for standalones, also add bin/Diva.Modules.dll (this doesn't exist in the module zip! Get it from the diva-rxxxxx.zip file instead.)&lt;br /&gt;
&lt;br /&gt;
Copy WifiPages directory and its contents to OpenSimulator top level directory.&lt;br /&gt;
&lt;br /&gt;
doc directory&lt;br /&gt;
* add in doc/WIFI.txt&lt;br /&gt;
&lt;br /&gt;
Copy over the WIFI related readme, release notes and licence text files.&lt;br /&gt;
&lt;br /&gt;
For grids, edit Robust(.HG).ini in section [Startup] to add 8002/Diva.Wifi.dll:WifiServerConnector to &amp;lt;code&amp;gt;ServiceConnectors&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For standalones, edit StandaloneCommon.ini in section [Modules] to add &amp;lt;code&amp;gt;WifiModule = true&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Add a new section [WifiService] from example at http://github.com/diva/diva-distribution/blob/master/addon-modules/Wifi/Wifi.ini.example to Robust(.HG).ini (for grids) or StandaloneCommon.ini (for standalones).&lt;br /&gt;
&lt;br /&gt;
=== Source Code Approach ===&lt;br /&gt;
&lt;br /&gt;
Get Diva Distribution which contains the Wifi modules from&lt;br /&gt;
http://github.com/diva/diva-distribution/&lt;br /&gt;
&lt;br /&gt;
== Setting Configuration Parameters for a Grid ==&lt;br /&gt;
&lt;br /&gt;
The complete example file is here:&lt;br /&gt;
http://github.com/diva/diva-distribution/blob/master/addon-modules/Wifi/Wifi.ini.example&lt;br /&gt;
&lt;br /&gt;
'''Additions to Robust.ini or Robust.HG.ini for Grids'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Startup]&lt;br /&gt;
    ServiceConnectors = &amp;quot;8002/Diva.Wifi.dll:WifiServerConnector&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that it will be usual to specify the port number to be accessible outside your firewall (normally port 8002) rather than the default Network Port for internal inter-component OpenSimulator traffic (normally port 8003) which can be set to only be accessible within a firewall.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[WifiService]&lt;br /&gt;
    GridName = &amp;quot;grid name&amp;quot;&lt;br /&gt;
    LoginURL = &amp;quot;http://&amp;lt;hostname&amp;gt;:8002&amp;quot;&lt;br /&gt;
    WebAddress = &amp;quot;http://&amp;lt;hostname&amp;gt;:8002&amp;quot;&lt;br /&gt;
       &lt;br /&gt;
    ;; The Wifi Administrator account&lt;br /&gt;
    AdminFirst = &amp;quot;Wifi&amp;quot;&lt;br /&gt;
    AdminLast = &amp;quot;Admin&amp;quot;&lt;br /&gt;
    AdminEmail = &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    ;; Do you want to be able to control grid registrations?&lt;br /&gt;
    AccountConfirmationRequired = false&lt;br /&gt;
    &lt;br /&gt;
    ;; Default avatars for new account registration&lt;br /&gt;
    ;; Syntax: AvatarAccount_&amp;lt;AvatarType&amp;gt; = &amp;quot;&amp;lt;FirstName&amp;gt; &amp;lt;LastName&amp;gt;&amp;quot;&lt;br /&gt;
    ;; Appearance and attachments are copied from avatar &amp;lt;FirstName&amp;gt; &amp;lt;LastName&amp;gt;.&lt;br /&gt;
    AvatarAccount_Female = &amp;quot;Female Avatar&amp;quot;&lt;br /&gt;
    AvatarAccount_Male = &amp;quot;Male Avatar&amp;quot;&lt;br /&gt;
    AvatarAccount_Neutral = &amp;quot;Neutral Avatar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ;; Preselection for default avatar in new account registration&lt;br /&gt;
    AvatarPreselection = &amp;quot;Neutral&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ;; Variables for your mail server&lt;br /&gt;
    ;; Users will get email notifications from this account.&lt;br /&gt;
    SmtpHost = &amp;quot;mail.example.com&amp;quot;&lt;br /&gt;
    SmtpPort = &amp;quot;587&amp;quot;&lt;br /&gt;
    SmtpUsername = &amp;quot;your_account_in_this_mail_server&amp;quot;&lt;br /&gt;
    SmtpPassword = &amp;quot;your_password_in_this_mail_server&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting Configuration Parameters for a Standalone ==&lt;br /&gt;
&lt;br /&gt;
The complete example file is here:&lt;br /&gt;
http://github.com/diva/diva-distribution/blob/master/addon-modules/Wifi/Wifi.ini.example&lt;br /&gt;
&lt;br /&gt;
'''Additions to config-include/StandaloneCommon.ini for Standalones'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Modules]&lt;br /&gt;
    WifiModule = true&lt;br /&gt;
&lt;br /&gt;
[WifiService]&lt;br /&gt;
    GridName = &amp;quot;grid name&amp;quot;&lt;br /&gt;
    LoginURL = &amp;quot;http://&amp;lt;hostname&amp;gt;:9000&amp;quot;&lt;br /&gt;
    WebAddress = &amp;quot;http://&amp;lt;hostname&amp;gt;:9000&amp;quot;&lt;br /&gt;
       &lt;br /&gt;
    ;; The Wifi Administrator account&lt;br /&gt;
    AdminFirst = &amp;quot;Wifi&amp;quot;&lt;br /&gt;
    AdminLast = &amp;quot;Admin&amp;quot;&lt;br /&gt;
    AdminEmail = &amp;quot;you@example.com&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    ;; Do you want to be able to control grid registrations?&lt;br /&gt;
    AccountConfirmationRequired = false&lt;br /&gt;
    &lt;br /&gt;
    ;; Default avatars for new account registration&lt;br /&gt;
    ;; Syntax: AvatarAccount_&amp;lt;AvatarType&amp;gt; = &amp;quot;&amp;lt;FirstName&amp;gt; &amp;lt;LastName&amp;gt;&amp;quot;&lt;br /&gt;
    ;; Appearance and attachments are copied from avatar &amp;lt;FirstName&amp;gt; &amp;lt;LastName&amp;gt;.&lt;br /&gt;
    AvatarAccount_Female = &amp;quot;Female Avatar&amp;quot;&lt;br /&gt;
    AvatarAccount_Male = &amp;quot;Male Avatar&amp;quot;&lt;br /&gt;
    AvatarAccount_Neutral = &amp;quot;Neutral Avatar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ;; Preselection for default avatar in new account registration&lt;br /&gt;
    AvatarPreselection = &amp;quot;Neutral&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    ;; Variables for your mail server&lt;br /&gt;
    ;; Users will get email notifications from this account.&lt;br /&gt;
    SmtpHost = &amp;quot;mail.example.com&amp;quot;&lt;br /&gt;
    SmtpPort = &amp;quot;587&amp;quot;&lt;br /&gt;
    SmtpUsername = &amp;quot;your_account_in_this_mail_server&amp;quot;&lt;br /&gt;
    SmtpPassword = &amp;quot;your_password_in_this_mail_server&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configurable Default Avatars ==&lt;br /&gt;
[[Image:Openvue-avatars-male-female-neutral-2010-08-27.jpg|300px|right|Example Avatars]]&lt;br /&gt;
When users sign up, they can choose between default avatars. It's up to you to decide what these default avatars look like. Here is how you can configure them... Once your OpenSimulator is up and running, create accounts (using Wifi) with the names given in your configuration. With the above examples, these would be:&lt;br /&gt;
* Male Avatar&lt;br /&gt;
* Female Avatar&lt;br /&gt;
* Neutral Avatar&lt;br /&gt;
&lt;br /&gt;
Then login to the world under each of those accounts, and set their appearances however you like. You can add prim attachments.&lt;br /&gt;
&lt;br /&gt;
== Problems with HTTP ports ==&lt;br /&gt;
&lt;br /&gt;
The port used for the Wifi HTTP service is configurable. Usually this will be 8002 for a grid and 9000 for a standalone unless you use custom ports.&lt;br /&gt;
&lt;br /&gt;
For a standalone you can do this by adding the &amp;quot;port&amp;quot; line for the port to use for Wifi and other services to the [Network] section of OpenSim.ini&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Network]&lt;br /&gt;
    port = 9000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or for a grid specify a specific port (usually 8002) for the WifiServiceConnector in the ServiceConnectors list in the [Startup] section of Robust(.HG).ini&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[Startup]&lt;br /&gt;
    ServiceConnectors=&amp;quot;............,8002/Diva.Wifi.dll:WifiServerConnector&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In either case, define the equivalent WebAddress in the [WifiService] section of your StandaloneCommon.ini or Robust(.HG).ini (or addon-modules/Wifi/config/Wifi.ini if used in future). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;[WifiService]&lt;br /&gt;
     WebAddress = &amp;quot;http://hostname:8002&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you do not use the usual OpenSimulator service ports, please note that some network setups and ISPs will not allow HTTP to be served on port 80. It is usual to use an alternative port such as 8080 or a custom port in that case.&lt;br /&gt;
&lt;br /&gt;
== Wifi URLs When Operational ==&lt;br /&gt;
&lt;br /&gt;
* Sample grid: &amp;lt;nowiki&amp;gt;http://yourgridhostname:8002/wifi&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Sample standalone: &amp;lt;nowiki&amp;gt;http://yourstandalonehostname:9000/wifi&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Local standalone: &amp;lt;nowiki&amp;gt;http://localhost:9000/wifi&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
* Diva Tagus Test World (temporary August 2010): http://tagus.ics.uci.edu:9000/wifi&lt;br /&gt;
&lt;br /&gt;
== Wifi Administrator Functions ==&lt;br /&gt;
&lt;br /&gt;
=== Manage Users ===&lt;br /&gt;
[[Image:Openvue-Wifi-Example.jpg|300px|right|Example Wifi Entry Page]]&lt;br /&gt;
If authorisation is set to be on, you will receive an e-mail to the nominated admin account e-mail address if a user requests a new account and avatar creation. You can activate or delete new user creation requests. Users are notified of the activation via an e-mail to their nominated address.&lt;br /&gt;
&lt;br /&gt;
You can also search for users and change their details. Give a space as a search term to select all avatars. Available are fields for &amp;quot;Level&amp;quot;, &amp;quot;Flags&amp;quot; and &amp;quot;Title&amp;quot;.&lt;br /&gt;
* Level = 0 is a normal user&lt;br /&gt;
* Level = 50 (default) is used to indicate a privileged user (e.g. who can set up new hypergrid linked regions)&lt;br /&gt;
* Level = 100 is a Wifi admin account user&lt;br /&gt;
&lt;br /&gt;
You can manually reset a user's password by typiing into the password box and the nhitting the &amp;quot;Reset&amp;quot; button. Note that the user is '''NOT''' infromed of this password reset, so you must manually contact the user to communicate such a password change.&lt;br /&gt;
&lt;br /&gt;
Note that the Wifi admin username/avatar is set in the Wifi configuration, and can be changed there. BUT.. '''once an admin always an admin'''. Well almost. If you change from one admin to another, the previous avatar still has administrator rights. You can remove Wifi administrator rights from an avatar by changing the &amp;quot;Level&amp;quot; of the user from 100 to the normal avatar level of 0 using the Manage Users facility in Wifi.&lt;br /&gt;
&lt;br /&gt;
You can set an intermediate level for a '''privileged''' user which can be used to allow certain types of Wifi menu that a normal user will not see, but that are less than full admin user rights. A configurable parameter sets the '''Level''' above which this functions for a user (default 50).&lt;br /&gt;
&lt;br /&gt;
=== Manage Regions ===&lt;br /&gt;
&lt;br /&gt;
A facility to add '''LINK REGIONS''' is available in Wifi versions for OpenSimulator 0.7.1 onwards.&lt;br /&gt;
&lt;br /&gt;
Administrators and other '''privileged''' users can also view the current set of '''LINKED REGIONS'''&lt;br /&gt;
&lt;br /&gt;
=== Remote Console ===&lt;br /&gt;
&lt;br /&gt;
A feature in Wifi versions for 0.7.1 onwards and available to administrators via the '''CONSOLE''' link if suitably enabled.&lt;br /&gt;
&lt;br /&gt;
The WifiConsole uses OpenSim's REST console and thus the Robust server and any simulators must be started with parameter &amp;quot;-console rest&amp;quot;. Furthermore, the configuration options &amp;quot;ConsoleUser&amp;quot; and &amp;quot;ConsolePass&amp;quot; must be set in section [Network] and the values of these options must match across all instances. Finally, for all region simulators (i.e. except for the Robust server), option &amp;quot;ConsoleAllowedOrigin&amp;quot; must be set to the same value as option &amp;quot;WebAddress&amp;quot; in section [WifiService] of the Robust configuration.&lt;br /&gt;
&lt;br /&gt;
Please note that as at February 2011 the console in Wifi is not much more than a proof on concept in its current state. It has been tested on web browsers based on Mozilla (i.e. the Gecko Engine) only. Browsers using the WebKit engine do work somewhat, too, and IE has its own issues. The console also does not yet work with any interactive input, as necessary for creating a new region with &amp;quot;create region&amp;quot;, for example.&lt;br /&gt;
&lt;br /&gt;
Right now, there is no way to use this feature in a secure way because the values for &amp;quot;ConsoleUser&amp;quot; and &amp;quot;ConsolePass&amp;quot; are transmitted as clear text over the network. Please keep this in mind when using the console in Wifi.&lt;br /&gt;
&lt;br /&gt;
== Diva Distribution ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Diva-Tagus-Wifi-Example-v2.jpg|300px|right|Example Wifi Entry Page]]&lt;br /&gt;
&lt;br /&gt;
Wifi is included and enabled by default in the [[Diva Distribution]]:&lt;br /&gt;
&lt;br /&gt;
* Documentation: http://wiki.github.com/diva/d2/wifi&lt;br /&gt;
* Blog Description: http://www.metaverseink.com/blog/&lt;br /&gt;
* Downloads and binary distribution: http://github.com/diva/d2/downloads&lt;br /&gt;
* Source Code: http://github.com/diva/diva-distribution/&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Webinterface</id>
		<title>Webinterface</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Webinterface"/>
				<updated>2012-03-04T07:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ {{Quicklinks}} {{thirdparty}} &lt;br /&gt;
&lt;br /&gt;
== Addon Modules ==&lt;br /&gt;
&lt;br /&gt;
* [[Wifi]] - A Simple Account Management Front-end&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?XoopenSim%20(E) XoopenSim] - Web Interface for [http://xoopscube.org/ Xoops Cube]. v1.50 supports MySQL Data Base of 0.6.7,0.6.8,0.6.9 and 0.7, 0.7.1Dev, and it includes flotsam group function, osprofile, ossearch, mute list and login screen function. &lt;br /&gt;
* [http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?Modlos%20%28E%29 Modlos] - Web Interface for [http://moodle.org/ Moodle]. This software is sister application of XoopenSim. Modlos has same functions with XoopenSim and supports cooperation with [http://www.sloodle.org Sloodle]. &lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/opensimwi/ OpenSimulator Web Interface] This is a PHP Web Interface for OpenSimulator (Open Simulator Project), it allows grid citizens to create User Accounts to access the grid. Grid Owners can also manage all users for the grid, with a very powerful CMS system included. (Beta Release for 0.7.x is in Branches) &lt;br /&gt;
* [http://d4os.org D4os] - A set of [http://drupal.org Drupal] modules to control a grid.&lt;br /&gt;
* [http://openmetaverse.googlecode.com/ SimianGridFrontend] - The PHP-based web interface that accompanies SimianGrid. SimianGridFrontend is based on the CodeIgniter PHP MVC framework. &lt;br /&gt;
* [http://lab.newworldgrid.com/Wiki/index.php/Rest_Ajax_Manager/ Nwg Rest Ajax Manager] - A remote console using php &amp;amp;amp; ajax to user with RestConsole system. &lt;br /&gt;
* [http://lab.newworldgrid.com/Wiki/index.php/Ajax_Map/ Nwg Ajax Map] - A dynamic map of the grid using ajax with a reservation system. &lt;br /&gt;
* [http://code.google.com/p/openmetaverse/wiki/SimianGrid SimianGrid] - A scalable, extensible, light-weight, open source persistence layer for MMOs and virtual worlds, written in PHP. Also provides the frontend mentioned above and WebDAV access to inventory. &lt;br /&gt;
* [http://sourceforge.net/apps/trac/unga/wiki/WikiStart unga] - Both an UGAIM (User, Grid, Assets, Inventory, Messaging) server system and a backend for configuring that servers. Also, its modular architecture allows to create (or plug) specialized modules created in standard PHP. &lt;br /&gt;
* [http://www.foto50.com/ jOpenSim] - Joomla! component for interacting with an OpenSimulator server and 2 modules (grid status and friends online). The component is developed and designed with opensimulator starting from V 0.7.0.1 running in grid mode with MySQL as storage engine, but also can work with standalone mode.&lt;br /&gt;
&lt;br /&gt;
=== Optional modules ===&lt;br /&gt;
&lt;br /&gt;
* [http://code.google.com/p/flotsam/wiki/XmlRpcGroups XmlRpcGroups] - A set of xmlrpc methods to manage groups in opensim. See [[Groups|this page]] for how to configure it. &lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/ossearch ossearch] - A set of xmlrpc methods to manage search, events and classifieds. See [[OpenSimSearch|this page]] for how to configure it. &lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/osprofile osprofile] - A set of xmlrpc methods to manage persistent profile. &lt;br /&gt;
* [http://forge.opensimulator.org/gf/project/webassets/ webassets] - A script to render assets pictures to display on a website.&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/phrearch/hwios HWIOS] - Websocket CMS with experimental OpenSimulator support. HWIOS includes OpenSimulator user management, region management with interactive scalable maps, distributed service management(start/stop/kill service + remote websocket consoles), IAR/OAR sharing through teknon webdav shares, websocket chat, a realtime distributed wiki(hyki) and a simple collaborative drawing application. HWIOS is currently compatible with OpenSimulator 0.7.1 and webkit browsers(Chrome/Chromium 8+, Safari and FF4 to some degree). For more information, check out the [http://hwios.blogspot.com HWIOS Blog] &lt;br /&gt;
* [https://github.com/phrearch/teknon Teknon] - A Twisted TCP daemon, capable of communicating over a persistent connection between local services and HWIOS websockets through subprocess pipes. HWIOS uses teknon for distributed service management and remote consoles.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Warp3DImageModule</id>
		<title>Warp3DImageModule</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Warp3DImageModule"/>
				<updated>2012-03-04T07:04:09Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Warp3DImageModule-Example-OpenVue.jpg|256px|thumb|Example Warp3DImageModule map cell - OpenVue]] &lt;br /&gt;
[[Image:Warp3DImageModule-Example-OpenVCE.jpg|256px|thumb|Example Warp3DImageModule map cell - OpenVCE]]&lt;br /&gt;
[[Image:Comparemap3dmodule.png|256px|thumb|Comparative Map - Arya on FrancoGrid]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Improved rendering of the OpenSim.ini map tiles is possible by using &amp;quot;Warp3DImageModule&amp;quot; (rather than the default &amp;quot;MapImageModule&amp;quot;) for the MapImageModule for any region server. The Warp3dRender engine is included in the standard OpenSimulator build (from version 0.7.1).&lt;br /&gt;
&lt;br /&gt;
 Include in OpenSim.ini [Startup] section:&lt;br /&gt;
 MapImageModule = Warp3DImageModule&lt;br /&gt;
 TextureOnMapTile = true&lt;br /&gt;
 DrawPrimOnMapTile = true&lt;br /&gt;
&lt;br /&gt;
Then use requests of this form for each of your regions...&lt;br /&gt;
&lt;br /&gt;
 http://regionserver:port/index.php?method=regionImageUUID&lt;br /&gt;
&lt;br /&gt;
Get the region UUID for each region you want to get the map tile&lt;br /&gt;
for... then use the Opensim.exe running host name and port you are&lt;br /&gt;
using for that (usually the port for the first region in that&lt;br /&gt;
instance). Note its NOT the Robust port if you are using a grid, its&lt;br /&gt;
the region server port. Then add the UUID directly (with all hyphens&lt;br /&gt;
removed) on the end of the URL root.&lt;br /&gt;
&lt;br /&gt;
* An example served live from the Openvue Grid is http://virtual.aiai.ed.ac.uk:9000/index.php?method=regionImage9c8b6f8f81784a6992dc9feba4646e6b&lt;br /&gt;
&lt;br /&gt;
* A combination to show a grid map is at http://virtual.aiai.ed.ac.uk:8002/resources/map.html&lt;br /&gt;
&lt;br /&gt;
The map cells are served at a resolution of 256x256.&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Virtual_World_Model</id>
		<title>Virtual World Model</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Virtual_World_Model"/>
				<updated>2012-03-04T07:04:00Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What follows are working definitions for the model of virtual worlds supported by OpenSimulator. They are intended to clarify terminology, and to sharpen the requirements with respect to security of users' data and world assets. Please use the [[Talk:Virtual_World_Model|Discussion]] tab to comment on these definitions -- they are live and subject to improvements.&lt;br /&gt;
&lt;br /&gt;
 '''Simulator Trust Domain''': One or more simulators that completely trust each other, operated by one single &lt;br /&gt;
 authority. Trust means that these simulators can safely exchange messages and share data with each other. &lt;br /&gt;
 Specifically, trusting simulators can engage in exchanges that enable useful features, such as server-side &lt;br /&gt;
 teleports, that are unsafe when done between non-trusting simulators. Trust domains can be extended to include &lt;br /&gt;
 simulators in other trust domains, but in these extensions trust is neither commutative nor transitive. &lt;br /&gt;
 [[Talk:Virtual_World_Model|discuss here]]&lt;br /&gt;
&lt;br /&gt;
 '''Resource Services''': A set of zero or more services serving resources for simulators. Resources include:&lt;br /&gt;
 assets, user accounts, and assorted services like map, lookup, social networking, forums, etc. &lt;br /&gt;
&lt;br /&gt;
 '''Grid''': One or more simulators that share resources via resource services. At the very minimum, the &lt;br /&gt;
 simulators in a grid share assets, but many more services are possible (see above). A Grid includes one or &lt;br /&gt;
 more simulator trust domains. Normally one would expect one grid to be one single trust domain, but that &lt;br /&gt;
 doesn't necessarily need to happen. Given that a Grid may include more than one simulator &lt;br /&gt;
 trust domain, there can be untrusted connections within the same grid. In deploying security schemes, this &lt;br /&gt;
 needs to be taken into account. (OSGrid and trust domains...[[Talk:Virtual_World_Model|discuss here]]).  &lt;br /&gt;
&lt;br /&gt;
 '''Hypergrid''': The interconnection of grids. Hypergrid simulator connections are necessarily untrusted, so &lt;br /&gt;
 security schemes need to take that into account. Besides safe simulator connectivity between grids, the &lt;br /&gt;
 Hypergrid addresses the interoperability of resource services -- that is, the ability for: user accounts in &lt;br /&gt;
 one user service being recognized in other grids; assets in one asset service being transferred to other &lt;br /&gt;
 grids; social networking services being bridged, etc. The Hypergrid architecture enables, but does not impose, &lt;br /&gt;
 the emergence of independent Hypergrid-wide resource services such as User Services, Asset Storage, Social &lt;br /&gt;
 Networking, Search, etc. that serve several grids and are not coupled with any one grid in particular.&lt;br /&gt;
&lt;br /&gt;
 '''Walled-Garden Grid''': A grid that only handles resources directly managed by its own resource services. It &lt;br /&gt;
 does not recognize or allow users and assets from other grids, and it does not allow the export of its own &lt;br /&gt;
 users and assets. It may, however, import/export assets in bulk via backend storage systems (e.g. OARs).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional notes:&lt;br /&gt;
&lt;br /&gt;
* Tentatively, I'm unifying the concept of Grid with the concept of Virtual World. &lt;br /&gt;
&lt;br /&gt;
* A &amp;quot;Standalone&amp;quot;, which should be read as &amp;quot;Standalone Grid&amp;quot; (term credit to Michael Cortez), is a grid-in-a-box. It's one process that single-handily performs simulation and resource management. Just like any other grid, a Standalone grid may be hypergrided or may operate as a walled garden.&lt;br /&gt;
&lt;br /&gt;
* Simulator trust domains have ultimate freedom to implement any feature they want among themselves, including transferring user agents (user permitting), sharing private data, etc.&lt;br /&gt;
&lt;br /&gt;
* Grids may exist without any services but asset services. [Note: could there be a grid without assets?!]&lt;br /&gt;
&lt;br /&gt;
* Hypergrided Grids may treat all users equally or may treat their own users in special ways.&lt;br /&gt;
&lt;br /&gt;
* Grids may provide visitors with additional resources that are only available while the users visit that grid, and become unavailable once the visitor goes elsewhere (aka grid-specific inventory).&lt;br /&gt;
&lt;br /&gt;
More notes (Melanie's email, edited by Diva):&lt;br /&gt;
&lt;br /&gt;
Users should be in control of their own inventory and its associated assets, independent of a single grid. This means:&lt;br /&gt;
&lt;br /&gt;
* users can select where their data is stored. This may be an ISP, a web hoster, a grid or their own PC (bandwidth permitting). No simulator has authority over that storage.&lt;br /&gt;
&lt;br /&gt;
* Regions hold COPIES of the assets needed to render whatever is currently in world. Normally, this will be &amp;quot;by value&amp;quot;, e.g. the sim will have a full and valid copy of the data and be able to supply everything needed to render its content independent of any outside servers.&lt;br /&gt;
&lt;br /&gt;
* Grids are one or more trust domains, they are groups of regions sharing asset and user services. They access the same servers for their data and anything within one region can be moved to any other region without the need to copy assets. Regions within a trust domain are able to destroy storage needed by other regions to render data, but cannot access user inventories unless authorized, and with very limited scope. Typically, but not mandatory, all sims in one gridwill be owned and operated by a single individual/organization.&lt;br /&gt;
&lt;br /&gt;
* User services authenticate users for access to a trust domain. They may require username/password, X.509 certificates, oAuth, openID or any other form of authentication, or none. They may decree that, if you don't authenticate, your access may be limited to observation only, or in any other way they, as the trust domain controller, see fit.&lt;br /&gt;
&lt;br /&gt;
* Sim asset services are the storage at the heart of a grid, sims in a grid share these asset services. That is distinct from user asset services, which are out of scope for regions.&lt;br /&gt;
&lt;br /&gt;
* Optionally, user asset services may pass an object to a region &amp;quot;by reference&amp;quot;. This assumes a basic level of trust with the region, which is advised to not keep a copy, but request the current data from the user asset service each time it is needed. This required continuous authorization for that item, which will be limited to specific sims, Therefore, such items can't leave the sim, they cannot be given or sold, but only be taken by the owner. This is useful for allowing the update of scripts in-place, e.g. for applications like sloodle, which may want to update all inworld terminals all at once. It it a marked departure from the Linden way of doing things.&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Vehicles</id>
		<title>Vehicles</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Vehicles"/>
				<updated>2012-03-04T07:03:50Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{obsolete}}&lt;br /&gt;
== Summary ==&lt;br /&gt;
August 2009: Kitto Flora is revising the OdePlugin files in an attempt to provide SL-compatible VEHICLE functionality to OpenSimulator. A couple of test regions have been provided by Bri Hasp, these are Sea-3 and Sea-4 in OSgrid. You may visit there and test vehicles but please clean up after. The regions will frequently be restarted to test revisions. The revised Open Simulator files are being made available as a git branch, check here to see what may or may not work. &lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
==== Oct 24 2009 (apx) PROJECT HALTED. ====&lt;br /&gt;
At about this date opensim trunk was merged into the vehicles branch bringing in the packet prioritization modifications. It had already been pointed out that those modifications caused problems with the display of motion of physical objects. The result of this merge is that a physical object that is simply rotating is no longer updated on the viewer screen. Debug messages show that ODE is indeed rotating the object, and sending update requests but it appears that the packet system is not transmitting updates to the viewer. This makes it impossible to see the results of the work in progress - adding functions such as llRotLookAt(). Work is therefore suspended until this packet problem is fixed. See http://opensimulator.org/mantis/view.php?id=4336&lt;br /&gt;
==== Oct 22 2009 ====&lt;br /&gt;
* Vehicle branch is merged into opensim. Any version r11303 or later will have the VEHICLE capabilities (and problems) listed below available. &lt;br /&gt;
==== Oct 6 2009 ====&lt;br /&gt;
* Sea-3/Sea4 are down because osgrid is being upgraded/fixed to deal with other ongoing problems, and the vehicle branch is no longer compatible. I am waiting for trunk to stabilize before proceeding.&lt;br /&gt;
Meanwhile I am investigating the details of SL physics parameters.&lt;br /&gt;
==== Sept 28 2009 ====&lt;br /&gt;
* Cause of poor update rate of rotating physical prims found and fixed.&lt;br /&gt;
==== Sept 24 2009 ====&lt;br /&gt;
* OpenSimulator Vehicle version running at Sea-3 and Sea-4 in OSgrid have been adjusted to improve the Vertical Attractor. &lt;br /&gt;
* The Tako sailboat works somewhat, but the listen() event on channel 0 fails after 30 seconds or so, resulting in some loss of control.&lt;br /&gt;
* Camera controls are still a problem, it appears that camera position depends on which prim is clicked to 'sit'. (Camera fails to reference to root prim of a link-set???).&lt;br /&gt;
* timer() event will keep working if llSetTimer(float) is called at every timer() event.&lt;br /&gt;
* Racecar updated to 'ODB VEH racecar10', deals with changed Vertical Attractor; timer() used in place of llSensor(), resulting in much lower simulator CPU load. Available in sea-3.&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
Here some terms are defined so that when we communicate we are talking about the same things.&lt;br /&gt;
&lt;br /&gt;
==== Vehicle ====&lt;br /&gt;
&lt;br /&gt;
Any object or link-set that moves. It is usually rideable. It may be Physical or not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== VEHICLE ====&lt;br /&gt;
Any object or link-set that uses LSL VEHICLE functions to achieve mobility. It is set to other than 'VEHICLE_TYPE_NONE'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Physical ====&lt;br /&gt;
Any object or link-set that is llSetStatus(STATUS_PHYSICS, TRUE). It will fall due to gravity (unless buoyancy is changed) and collide with other prims, avatars and the ground (unless set phantom).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Non-Physical ====&lt;br /&gt;
Any object or link-set that is llSetStatus(STATUS_PHYSICS, FALSE), or has never has llSetStatus(STATUS_PHYSICS,...) applied. Such objects 'stick in midair' and can interpenetrate other objects.&lt;br /&gt;
&lt;br /&gt;
==== Kinematic ====&lt;br /&gt;
Motion system used by Non-Physical objects, applied by such functions as llSetPos() and llSetRot(). &lt;br /&gt;
&lt;br /&gt;
==== Dynamic ====&lt;br /&gt;
Motion system used by Physical objects, applied by such functions as llSetForce() and llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &amp;lt;...&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== About This Project ==&lt;br /&gt;
The objectives of this project are:&lt;br /&gt;
# To provide VEHICLE associated LSL functions within OpenSimulator that are compatible with Second Life functionality. This means trying to get them really close, but as we are trying to emulate complex HAVOK functions using what is available in ODE they may be only close to the SL functions. &lt;br /&gt;
# To clean up the OdePlugin files. Over many revisions and add-ons they have become somewhat non-optimal. In particular the 'Move' operation that makes objects move around needs to be very clean and smooth so that the update rate remains high.&lt;br /&gt;
# Maintain the existing non-VEHICLE dynamic functions and fix errors where found.&lt;br /&gt;
&lt;br /&gt;
== Vehicle LSL Functions in revised OpenSimulator ==&lt;br /&gt;
There are three categories of LSL functions that are used by Vehicles: Kinematic, Dynamic and VEHICLE. These are listed below with information on their current status within the revised OpenSimulator. (Not the general release at this time.) &lt;br /&gt;
Kinematic vehicle motion can be used by non-physical objects. VEHICLE motion and the associated functions '''ONLY''' apply to objects that are set to a VEHICLE_TYPE of AIRPLANE, BALLOON, BOAT, CAR or SLED. Dynamic functions '''ONLY''' apply (at this time) to VEHICLE_TYPE_NONE, which is the default condition of an object. (In SL it appears that one can use Dynamic functions on a VEHICLE, but to keep things simple at the start of this project such a combination is ignored.)&lt;br /&gt;
&lt;br /&gt;
== Known Problems ==&lt;br /&gt;
# timer() event ceases about 10 seconds after Vehicle moves. Does not restart until many seconds after Vehicle stops. '''Work-around:''' Use llSensor() for a non-existent object at short range and no_sensor() event to re-trigger it. This produces about 1000 events per second. Divide down to produce more reasonable rates.&lt;br /&gt;
# llSetBuoyancy() is not hooked to physics methods. LSL engine problem. '''Work-around:''' None. Big problem for non-VEHICLE vehicles.&lt;br /&gt;
# llSetHoverHeight() is not hooked to physics methods. LSL engine problem. '''Work-around:''' None. Big problem for non VEHICLE vehicles.&lt;br /&gt;
# llSetVehicleFlags() and llRemoveVehicleFlags() are not hooked to physics methods, and may cause simulator crash. LSL engine problem. '''Work-around:''' None, but the VEHICLE_TYPE presets are setting necessary flags.&lt;br /&gt;
# Prim parameters like Material are not being saved. '''Work-around:''' Set by script on rez or whenever used.&lt;br /&gt;
# Script state is not maintained between Take and Rez. '''Work-around:''' on_rez() Reset script and set *everything* again.&lt;br /&gt;
# Border Crossing is bad. Vehicle will be killed and Av unseated and left drifting through target region. '''Work-around:''' Quickly double-click on Map to tele-port to old region. Drag vehicle back and reset it.&lt;br /&gt;
&lt;br /&gt;
== VEHICLE Scripting Notes ==&lt;br /&gt;
# (Not really scripting , but very important) DO NOT attempt to drive a VEHICLE across the Region boundary. If you do your Av will be orbited. You may be able to recover by Map double-click TP to a nearby Region. The VEHICLE object is usually killed, and sitting at edge of the destination region. &lt;br /&gt;
# In revised OpenSimulator the function llSetVehicleType(VEHICLE_TYPE_xxx), where xxx is AIRPLANE, BALLOON, BOAT, CAR or SLED, pre-sets all the applicable VEHICLE parameters to reasonable numbers. If you wish to change any of these pre-set parameters do so after asserting llSetVehicleType(VEHICLE_TYPE_xxx). &lt;br /&gt;
# At present it appears that some conditions within an instantiated scripted object are not maintained after a Region restart, and possibly between take and rez. Therefore you should assert llSetVehicleType(VEHICLE_TYPE_xxx) when the driver sits and llSetVehicleType(VEHICLE_TYPE_NONE)when the driver stands, and probably on_rez.&lt;br /&gt;
# The advice above also applies to camera controls. Assert llSetCameraxxx() on sit and llClearCameraParams() on stand. (At present there seems to be bugs in the Camera Control system, the camera will go underground!)&lt;br /&gt;
# The advice above is also true of Material Type. Land vehicles need the 'wheels' to be PRIM_MATERIAL_GLASS. The script(s) must llSetPrimitiveParams([PRIM_MATERIAL, PRIM_MATERIAL_GLASS]) in every prim that touches the ground, when the rider sits, for reliable operation. Use a link mesage from the root to daughter prim scripts.&lt;br /&gt;
# Use llSetStatus(STATUS_PHYSICS, TRUE) to enable the VEHICLE, usually when the driver sits. Use llSetStatus(STATUS_PHYSICS, FALSE) to disable the VEHICLE, usually when the driver stands.&lt;br /&gt;
# It appears that the timer() event freezes while a Vehicle is in motion, so do not rely in Timer() to update things like steering or velocity. See Known Problems for a work-around.&lt;br /&gt;
&lt;br /&gt;
== VEHICLE Scripting Examples ==&lt;br /&gt;
Below are some initial (and very similar) Vehicle scripting examples, implementing a sort of go kart, and the second a motorboat. The motorboat script is a derivative work based on the go kart script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*** Note that these scripts are works in progress and may or may not impact the performance of your region negatively. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Car or Go kart script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=LSL&amp;gt;&lt;br /&gt;
// Very simple vehicle script, mod for OpenSimulator &amp;amp; ODE &amp;amp; VEHICLE code&lt;br /&gt;
// By Kitto Flora September 2009&lt;br /&gt;
&lt;br /&gt;
integer Private = 1; // Change to 1 to prevent others riding.&lt;br /&gt;
&lt;br /&gt;
vector Sitpos = &amp;lt;0.35,0,0.35&amp;gt;;&lt;br /&gt;
vector SitrotV = &amp;lt;0,-20,0&amp;gt;;&lt;br /&gt;
rotation Sitrot;&lt;br /&gt;
integer tt;&lt;br /&gt;
key oldagent;&lt;br /&gt;
key agent;&lt;br /&gt;
float forward_power = 12; //Power used to go forward (1 to 30)&lt;br /&gt;
float reverse_power = -6; //Power ued to go reverse (-1 to -30)&lt;br /&gt;
float turning_ratio = 2.0; //How sharply the vehicle turns. Less is more sharply. (.1 to 10)&lt;br /&gt;
integer turncount;&lt;br /&gt;
string Wheeldir = &amp;quot;WC&amp;quot;;&lt;br /&gt;
string NewWheeldir = &amp;quot;WC&amp;quot;;&lt;br /&gt;
string Wheelrot = &amp;quot;S&amp;quot;;&lt;br /&gt;
string NewWheelrot = &amp;quot;S&amp;quot;;&lt;br /&gt;
integer scount;&lt;br /&gt;
integer Speed;&lt;br /&gt;
integer Run;&lt;br /&gt;
&lt;br /&gt;
string sit_message = &amp;quot;Ride&amp;quot;; //Sit message&lt;br /&gt;
string not_owner_message = &amp;quot;You are not the owner of this vehicle, buy a copy for 0$ and have your own to test in this sim. It will not work in other Open Sim Regions.&amp;quot;; //Not owner message&lt;br /&gt;
&lt;br /&gt;
setVehicle()&lt;br /&gt;
{&lt;br /&gt;
    //car&lt;br /&gt;
        llSetVehicleType(VEHICLE_TYPE_CAR);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.2);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.80);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 0.10);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.10);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.1);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.1);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.1);&lt;br /&gt;
        llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &amp;lt;10.0, 2.0, 1000.0&amp;gt;);&lt;br /&gt;
        llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, &amp;lt;0.1, 0.1, 0.1&amp;gt;);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.50);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 0.50);&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
Init()&lt;br /&gt;
{&lt;br /&gt;
    Sound(0);&lt;br /&gt;
    llSetStatus(STATUS_PHYSICS, FALSE);&lt;br /&gt;
    vector here = llGetPos();&lt;br /&gt;
    float h = llGround(&amp;lt;0,0,0&amp;gt;) + 0.52;&lt;br /&gt;
    vector rotv = llRot2Euler(llGetRot());&lt;br /&gt;
    rotation rot = llEuler2Rot(&amp;lt;0,0,rotv.z&amp;gt;);&lt;br /&gt;
    llSetPos(&amp;lt;here.x, here.y,h&amp;gt;);&lt;br /&gt;
    llSetRot(rot);&lt;br /&gt;
    Sitrot = llEuler2Rot(DEG_TO_RAD * SitrotV);&lt;br /&gt;
    llSetVehicleType(VEHICLE_TYPE_NONE);&lt;br /&gt;
    llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;S&amp;quot;, NULL_KEY);     // wheels stop&lt;br /&gt;
    llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;WC&amp;quot;, NULL_KEY);     // wheels straight&lt;br /&gt;
    Run = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SetMaterial()&lt;br /&gt;
{&lt;br /&gt;
    llSetPrimitiveParams([PRIM_MATERIAL, PRIM_MATERIAL_GLASS]);&lt;br /&gt;
    llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;SetMat&amp;quot;, NULL_KEY);    // Tell daughter pims on ground to be glass&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Sound(integer n)&lt;br /&gt;
{&lt;br /&gt;
    integer oldn;&lt;br /&gt;
    if(n != oldn)&lt;br /&gt;
    {&lt;br /&gt;
        oldn = n;&lt;br /&gt;
        if(n == 2)&lt;br /&gt;
        {&lt;br /&gt;
            llLoopSound(&amp;quot;RUNNING&amp;quot;,1);&lt;br /&gt;
        }&lt;br /&gt;
        else if(n == 1)&lt;br /&gt;
        {&lt;br /&gt;
            llLoopSound(&amp;quot;IDLE&amp;quot;,1);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
             llStopSound();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Init();&lt;br /&gt;
        llSetSitText(sit_message);&lt;br /&gt;
        // forward-back,left-right,updown&lt;br /&gt;
        llSitTarget(Sitpos, Sitrot);&lt;br /&gt;
        llStopSound();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer rn){&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_LINK) == CHANGED_LINK)&lt;br /&gt;
        {&lt;br /&gt;
            agent = llAvatarOnSitTarget();&lt;br /&gt;
            if (agent != NULL_KEY)&lt;br /&gt;
            {                &lt;br /&gt;
                if( (agent != llGetOwner()) &amp;amp;&amp;amp; (Private == 1) )&lt;br /&gt;
                {&lt;br /&gt;
                    llSay(0, not_owner_message);&lt;br /&gt;
                    llUnSit(agent);&lt;br /&gt;
// not functional llPushObject(agent, &amp;lt;0,0,50&amp;gt;, ZERO_VECTOR, FALSE);&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //llTriggerSound(&amp;quot;car_start&amp;quot;,1);&lt;br /&gt;
// llMessageLinked(LINK_ALL_CHILDREN , 0, &amp;quot;WHEEL_DRIVING&amp;quot;, NULL_KEY);&lt;br /&gt;
                    oldagent = agent;&lt;br /&gt;
                    setVehicle();&lt;br /&gt;
                    SetMaterial();&lt;br /&gt;
                    llSleep(.4);&lt;br /&gt;
                    llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
                    llSleep(.1);&lt;br /&gt;
                    Run = 1;&lt;br /&gt;
                    //Sensor is to make a crude Timer as TimerEvent fails on vehicles&lt;br /&gt;
                    llSensor(&amp;quot;Non-Entity&amp;quot;,NULL_KEY,PASSIVE,1.0, PI_BY_TWO); &lt;br /&gt;
&lt;br /&gt;
                    llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);&lt;br /&gt;
                    Sound(1);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                Init();&lt;br /&gt;
                llSleep(.4);&lt;br /&gt;
                llReleaseControls();&lt;br /&gt;
                llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;S&amp;quot;, NULL_KEY);&lt;br /&gt;
                Run = 0;&lt;br /&gt;
                llStopSound();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer tn){&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    run_time_permissions(integer perm)&lt;br /&gt;
    {&lt;br /&gt;
        if (perm)&lt;br /&gt;
        {&lt;br /&gt;
            llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_DOWN | CONTROL_UP | CONTROL_RIGHT | &lt;br /&gt;
                            CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT, TRUE, FALSE);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    control(key id, integer level, integer edge)&lt;br /&gt;
    {&lt;br /&gt;
        integer reverse=1;&lt;br /&gt;
        vector angular_motor;&lt;br /&gt;
        &lt;br /&gt;
        //get current speed&lt;br /&gt;
        vector vel = llGetVel();&lt;br /&gt;
        float speed = llVecMag(vel);&lt;br /&gt;
&lt;br /&gt;
        //car controls&lt;br /&gt;
        if(level &amp;amp; CONTROL_FWD)&lt;br /&gt;
        {&lt;br /&gt;
            llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &amp;lt;10.0, 2.0, 1000.0&amp;gt;);&lt;br /&gt;
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &amp;lt;forward_power,0,0&amp;gt;);&lt;br /&gt;
            reverse=1;&lt;br /&gt;
            NewWheelrot = &amp;quot;F&amp;quot;;&lt;br /&gt;
            Speed = 20;&lt;br /&gt;
        }&lt;br /&gt;
        if(level &amp;amp; CONTROL_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &amp;lt;10.0, 2.0, 1000.0&amp;gt;);&lt;br /&gt;
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &amp;lt;reverse_power,0,0&amp;gt;);&lt;br /&gt;
            reverse = -1;&lt;br /&gt;
            NewWheelrot = &amp;quot;R&amp;quot;;&lt;br /&gt;
            Speed = 10;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if(level &amp;amp; (CONTROL_RIGHT|CONTROL_ROT_RIGHT))&lt;br /&gt;
        {&lt;br /&gt;
            angular_motor.z -= speed / turning_ratio * reverse;&lt;br /&gt;
            NewWheeldir = &amp;quot;WR&amp;quot;;&lt;br /&gt;
            turncount = 10;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(level &amp;amp; (CONTROL_LEFT|CONTROL_ROT_LEFT))&lt;br /&gt;
        {&lt;br /&gt;
            angular_motor.z += speed / turning_ratio * reverse;&lt;br /&gt;
            NewWheeldir = &amp;quot;WL&amp;quot;;&lt;br /&gt;
            turncount = 10;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor);&lt;br /&gt;
        if(turncount &amp;gt; 0)&lt;br /&gt;
        {&lt;br /&gt;
            turncount--;&lt;br /&gt;
        }&lt;br /&gt;
        if(turncount == 1)&lt;br /&gt;
        {&lt;br /&gt;
            NewWheeldir = &amp;quot;WC&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        if(Wheeldir != NewWheeldir){&lt;br /&gt;
            Wheeldir = NewWheeldir;&lt;br /&gt;
            llMessageLinked(LINK_ALL_OTHERS, 0, Wheeldir, NULL_KEY);&lt;br /&gt;
        }&lt;br /&gt;
        if(Wheelrot != NewWheelrot){&lt;br /&gt;
            Wheelrot = NewWheelrot;&lt;br /&gt;
            llMessageLinked(LINK_ALL_OTHERS, 0, Wheelrot, NULL_KEY);&lt;br /&gt;
        }&lt;br /&gt;
    } //end control   &lt;br /&gt;
    &lt;br /&gt;
    //Sensor is to make a crude Timer as TimerEvent fails on vehicles&lt;br /&gt;
    no_sensor()&lt;br /&gt;
    {&lt;br /&gt;
        if(scount &amp;lt; 1000)&lt;br /&gt;
        {&lt;br /&gt;
            scount++;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            scount = 0;&lt;br /&gt;
            // This happens about once per second&lt;br /&gt;
            if(Speed &amp;gt; 0) Speed--;&lt;br /&gt;
            &lt;br /&gt;
            if(Speed &amp;gt; 2)  Sound(2);&lt;br /&gt;
            &lt;br /&gt;
            if(Speed == 1) {&lt;br /&gt;
                llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &amp;lt;1.0, 2.0, 1000.0&amp;gt;);&lt;br /&gt;
                llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &amp;lt;0,0,0&amp;gt;);&lt;br /&gt;
                llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;S&amp;quot;, NULL_KEY);&lt;br /&gt;
                Sound(1);&lt;br /&gt;
                Wheelrot = &amp;quot;S&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(Run == 1)&lt;br /&gt;
            llSensor(&amp;quot;Non-Entity&amp;quot;,NULL_KEY,PASSIVE,1.0, PI_BY_TWO); &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
} //end default&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Motorboat script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=LSL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Very simple vehicle script, mod for OpenSimulator &amp;amp; ODE &amp;amp; VEHICLE code&lt;br /&gt;
// By Kitto Flora September 2009&lt;br /&gt;
&lt;br /&gt;
// modified by Hiro Protagonist for basic aquatic motorcraft&lt;br /&gt;
// September 2009&lt;br /&gt;
&lt;br /&gt;
integer Private = 1; // Change to 1 to prevent others riding.&lt;br /&gt;
&lt;br /&gt;
vector Sitpos = &amp;lt;0.35,0,0.35&amp;gt;;&lt;br /&gt;
vector SitrotV = &amp;lt;0,-20,0&amp;gt;;&lt;br /&gt;
rotation Sitrot;&lt;br /&gt;
integer tt;&lt;br /&gt;
key oldagent; &lt;br /&gt;
key agent;&lt;br /&gt;
float forward_power = 8; //Power used to go forward (1 to 30)&lt;br /&gt;
float reverse_power = -3; //Power ued to go reverse (-1 to -30)&lt;br /&gt;
float turning_ratio = 1.0; //How sharply the vehicle turns. Less is more sharply. (.1 to 10)&lt;br /&gt;
integer scount;&lt;br /&gt;
integer Speed;&lt;br /&gt;
integer Run;&lt;br /&gt;
&lt;br /&gt;
string sit_message = &amp;quot;Man the Helm&amp;quot;; //Sit message&lt;br /&gt;
string not_owner_message = &amp;quot;You are not the owner of this vehicle, buy a copy for 0$ and have your own to test in this sim. It will not work in other Open Sim Regions.&amp;quot;; //Not owner message&lt;br /&gt;
&lt;br /&gt;
setVehicle()&lt;br /&gt;
{&lt;br /&gt;
    //boat&lt;br /&gt;
        llSetVehicleType(VEHICLE_TYPE_BOAT);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.2);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_EFFICIENCY, 0.80);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 0.10);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 0.10);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 0.1);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.1);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.1);&lt;br /&gt;
        llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &amp;lt;10.0, 2.0, 1000.0&amp;gt;);&lt;br /&gt;
        llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, &amp;lt;0.1, 0.1, 0.1&amp;gt;);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.250);&lt;br /&gt;
        llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 0.250);&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
Init()&lt;br /&gt;
{&lt;br /&gt;
    Sound(0);&lt;br /&gt;
    llSetBuoyancy(1);&lt;br /&gt;
    llSetStatus(STATUS_PHYSICS, FALSE);&lt;br /&gt;
    vector here = llGetPos();&lt;br /&gt;
    float h = llWater(&amp;lt;0,0,0&amp;gt;) + 0.22;&lt;br /&gt;
    vector rotv = llRot2Euler(llGetRot());&lt;br /&gt;
    rotation rot = llEuler2Rot(&amp;lt;0,0,rotv.z&amp;gt;);&lt;br /&gt;
    llSetPos(&amp;lt;here.x, here.y,h&amp;gt;);&lt;br /&gt;
    llSetRot(rot);&lt;br /&gt;
    Sitrot = llEuler2Rot(DEG_TO_RAD * SitrotV);&lt;br /&gt;
    llSetVehicleType(VEHICLE_TYPE_NONE);&lt;br /&gt;
    llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;S&amp;quot;, NULL_KEY);     // wheels stop&lt;br /&gt;
    llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;WC&amp;quot;, NULL_KEY);     // wheels straight&lt;br /&gt;
    Run = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SetMaterial()&lt;br /&gt;
{&lt;br /&gt;
    llSetPrimitiveParams([PRIM_MATERIAL, PRIM_MATERIAL_WOOD]);&lt;br /&gt;
// llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;SetMat&amp;quot;, NULL_KEY); // Tell daughter pims on ground to be glass&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Sound(integer n)&lt;br /&gt;
{&lt;br /&gt;
    integer oldn;&lt;br /&gt;
    if(n != oldn)&lt;br /&gt;
    {&lt;br /&gt;
        oldn = n;&lt;br /&gt;
        if(n == 2)&lt;br /&gt;
        {&lt;br /&gt;
  //          llLoopSound(&amp;quot;RUNNING&amp;quot;,1);&lt;br /&gt;
        }&lt;br /&gt;
        else if(n == 1)&lt;br /&gt;
        {&lt;br /&gt;
  //          llLoopSound(&amp;quot;IDLE&amp;quot;,1);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
  //           llStopSound();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        Init();&lt;br /&gt;
        llSetSitText(sit_message);&lt;br /&gt;
        // forward-back,left-right,updown&lt;br /&gt;
        llSitTarget(Sitpos, Sitrot);&lt;br /&gt;
    //    llStopSound();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    on_rez(integer rn){&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_LINK) == CHANGED_LINK)&lt;br /&gt;
        {&lt;br /&gt;
            agent = llAvatarOnSitTarget();&lt;br /&gt;
            if (agent != NULL_KEY)&lt;br /&gt;
            {                &lt;br /&gt;
                if( (agent != llGetOwner()) &amp;amp;&amp;amp; (Private == 1) )&lt;br /&gt;
                {&lt;br /&gt;
                    llSay(0, not_owner_message);&lt;br /&gt;
                    llUnSit(agent);&lt;br /&gt;
// not functional llPushObject(agent, &amp;lt;0,0,50&amp;gt;, ZERO_VECTOR, FALSE);&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    //llTriggerSound(&amp;quot;car_start&amp;quot;,1);&lt;br /&gt;
// llMessageLinked(LINK_ALL_CHILDREN , 0, &amp;quot;WHEEL_DRIVING&amp;quot;, NULL_KEY);&lt;br /&gt;
                    oldagent = agent;&lt;br /&gt;
                    setVehicle();&lt;br /&gt;
                    SetMaterial();&lt;br /&gt;
                    llSleep(.4);&lt;br /&gt;
                    llSetStatus(STATUS_PHYSICS, TRUE);&lt;br /&gt;
                    llSleep(.1);&lt;br /&gt;
                    Run = 1;&lt;br /&gt;
                    //Sensor is to make a crude Timer as TimerEvent fails on vehicles&lt;br /&gt;
                    llSensor(&amp;quot;Non-Entity&amp;quot;,NULL_KEY,PASSIVE,1.0, PI_BY_TWO); &lt;br /&gt;
&lt;br /&gt;
                    llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION | PERMISSION_TAKE_CONTROLS);&lt;br /&gt;
                    Sound(1);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                Init();&lt;br /&gt;
                llSleep(.4);&lt;br /&gt;
                llReleaseControls();&lt;br /&gt;
                llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;S&amp;quot;, NULL_KEY);&lt;br /&gt;
                Run = 0;&lt;br /&gt;
                llStopSound();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    touch_start(integer tn){&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    run_time_permissions(integer perm)&lt;br /&gt;
    {&lt;br /&gt;
        if (perm)&lt;br /&gt;
        {&lt;br /&gt;
            llTakeControls(CONTROL_FWD | CONTROL_BACK | CONTROL_DOWN | CONTROL_UP | CONTROL_RIGHT | &lt;br /&gt;
                            CONTROL_LEFT | CONTROL_ROT_RIGHT | CONTROL_ROT_LEFT, TRUE, FALSE);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    control(key id, integer level, integer edge)&lt;br /&gt;
    {&lt;br /&gt;
        integer reverse=1;&lt;br /&gt;
        vector angular_motor;&lt;br /&gt;
        &lt;br /&gt;
        //get current speed&lt;br /&gt;
        vector vel = llGetVel();&lt;br /&gt;
        float speed = llVecMag(vel);&lt;br /&gt;
&lt;br /&gt;
        //car controls&lt;br /&gt;
        if(level &amp;amp; CONTROL_FWD)&lt;br /&gt;
        {&lt;br /&gt;
            llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &amp;lt;10.0, 2.0, 1000.0&amp;gt;);&lt;br /&gt;
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &amp;lt;forward_power,0,0&amp;gt;);&lt;br /&gt;
            reverse=1;&lt;br /&gt;
// NewWheelrot = &amp;quot;F&amp;quot;;&lt;br /&gt;
            Speed = 20;&lt;br /&gt;
        }&lt;br /&gt;
        if(level &amp;amp; CONTROL_BACK)&lt;br /&gt;
        {&lt;br /&gt;
            llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &amp;lt;10.0, 2.0, 1000.0&amp;gt;);&lt;br /&gt;
            llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &amp;lt;reverse_power,0,0&amp;gt;);&lt;br /&gt;
            reverse = -1;&lt;br /&gt;
         //   NewWheelrot = &amp;quot;R&amp;quot;;&lt;br /&gt;
            Speed = 10;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if(level &amp;amp; (CONTROL_RIGHT|CONTROL_ROT_RIGHT))&lt;br /&gt;
        {&lt;br /&gt;
            angular_motor.z -= speed / turning_ratio * reverse;&lt;br /&gt;
         //   NewWheeldir = &amp;quot;WR&amp;quot;;&lt;br /&gt;
         //   turncount = 10;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(level &amp;amp; (CONTROL_LEFT|CONTROL_ROT_LEFT))&lt;br /&gt;
        {&lt;br /&gt;
            angular_motor.z += speed / turning_ratio * reverse;&lt;br /&gt;
        //    NewWheeldir = &amp;quot;WL&amp;quot;;&lt;br /&gt;
       //     turncount = 10;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        llSetVehicleVectorParam(VEHICLE_ANGULAR_MOTOR_DIRECTION, angular_motor);&lt;br /&gt;
      //  if(turncount &amp;gt; 0)&lt;br /&gt;
      //  {&lt;br /&gt;
         //   turncount--;&lt;br /&gt;
      //  }&lt;br /&gt;
      //  if(turncount == 1)&lt;br /&gt;
      //  {&lt;br /&gt;
       //     NewWheeldir = &amp;quot;WC&amp;quot;;&lt;br /&gt;
      //  }&lt;br /&gt;
      //  if(Wheeldir != NewWheeldir){&lt;br /&gt;
      //      Wheeldir = NewWheeldir;&lt;br /&gt;
      //      llMessageLinked(LINK_ALL_OTHERS, 0, Wheeldir, NULL_KEY);&lt;br /&gt;
     //   }&lt;br /&gt;
     //   if(Wheelrot != NewWheelrot){&lt;br /&gt;
     //       Wheelrot = NewWheelrot;&lt;br /&gt;
      //      llMessageLinked(LINK_ALL_OTHERS, 0, Wheelrot, NULL_KEY);&lt;br /&gt;
      //  }&lt;br /&gt;
    } //end control   &lt;br /&gt;
    &lt;br /&gt;
    //Sensor is to make a crude Timer as TimerEvent fails on vehicles&lt;br /&gt;
    no_sensor()&lt;br /&gt;
    {&lt;br /&gt;
        if(scount &amp;lt; 1000)&lt;br /&gt;
        {&lt;br /&gt;
            scount++;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            scount = 0;&lt;br /&gt;
            // This happens about once per second&lt;br /&gt;
            if(Speed &amp;gt; 0) Speed--;&lt;br /&gt;
            &lt;br /&gt;
            if(Speed &amp;gt; 2)  Sound(2);&lt;br /&gt;
            &lt;br /&gt;
            if(Speed == 1) {&lt;br /&gt;
                llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, &amp;lt;1.0, 2.0, 1000.0&amp;gt;);&lt;br /&gt;
                llSetVehicleVectorParam(VEHICLE_LINEAR_MOTOR_DIRECTION, &amp;lt;0,0,0&amp;gt;);&lt;br /&gt;
       //         llMessageLinked(LINK_ALL_OTHERS, 0, &amp;quot;S&amp;quot;, NULL_KEY);&lt;br /&gt;
      //          Sound(1);&lt;br /&gt;
      //          Wheelrot = &amp;quot;S&amp;quot;;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if(Run == 1)&lt;br /&gt;
            llSensor(&amp;quot;Non-Entity&amp;quot;,NULL_KEY,PASSIVE,1.0, PI_BY_TWO); &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
} //end default&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vehicle LSL Functions and Status ==&lt;br /&gt;
NOTE! This list applies to the revised OpenSimulator, not the released&lt;br /&gt;
OpenSimulator.&lt;br /&gt;
&lt;br /&gt;
Key: Y = Yes; N = No; F = Framework present but commented out; N/A = Has not been checked (much) yet&lt;br /&gt;
&lt;br /&gt;
=== KINEMATIC ===&lt;br /&gt;
Object must not be PHYSICAL&lt;br /&gt;
&lt;br /&gt;
(Some work, some do not.)&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Function!!Set by LSL?!!Used by OpenSimulator C#!!Works?!!Comments&lt;br /&gt;
|-&lt;br /&gt;
|llSetPos()||Y||Y||Y||Also works on physical objects! &lt;br /&gt;
|-&lt;br /&gt;
|llSetRot()||Y||Y||Y||Y&lt;br /&gt;
|-&lt;br /&gt;
|llSetLocalRot()||Y||Y||Y&lt;br /&gt;
|-&lt;br /&gt;
|llSetScale()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llLookAt()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llRotLookAt()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llSetPrimitiveParams()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llSetLinkPrimitiveParams()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llTargetOmega()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DYNAMIC ===&lt;br /&gt;
Object must be PHYSICAL and VEHICLE_TYPE_NONE(default) at present, but this must probably change.&lt;br /&gt;
&lt;br /&gt;
(Some work, some do not.)&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Function!!Parameter!!Set by LSL?!!Used by OpenSimulator C#!!Comments&lt;br /&gt;
|-&lt;br /&gt;
|llApplyImpulse()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llApplyRotationalImpulse()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llGroundRepel()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llMoveToTarget()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llPushObject()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llSetBuoyancy()||N/A||N/A||N/A||(do not confuse with VEHICLE_BUOYANCY)&lt;br /&gt;
|-&lt;br /&gt;
|llSetForce()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llSetForceAndTorque()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llSetHoverHeight()||N/A||N/A||N/A||(do not confuse with VEHICLE_HOVER_HEIGHT)&lt;br /&gt;
|-&lt;br /&gt;
|llSetTorque()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llTargetOmega()||N/A||N/A||N/A||N/A&lt;br /&gt;
|- 	&lt;br /&gt;
|llLookAt()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llRotLookAt()||Use of this crashes script||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llSetPrimitiveParams()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llSetLinkPrimitiveParams()||N/A||N/A||N/A||N/A&lt;br /&gt;
|-&lt;br /&gt;
|llTargetOmega()||N/A||N/A||N/A||N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== VEHICLE ===&lt;br /&gt;
Object must be PHYSICAL and VEHICLE_TYPE_&amp;lt;other than NONE&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Functions!!Set by LSL?!!Used!!Works!!Exceptions&lt;br /&gt;
|-&lt;br /&gt;
|llSetVehicleType()||Y||Y||Y&lt;br /&gt;
|-&lt;br /&gt;
|llSetVehicleFlags()||N||N||N||Some flags are set by llSetVehicleType()&lt;br /&gt;
|-&lt;br /&gt;
|llRemoveVehicleFlags()||N||N||N||&lt;br /&gt;
|- &lt;br /&gt;
|llSetVehicleFloatParam()||Y||Y||Y|| &lt;br /&gt;
|-&lt;br /&gt;
|llSetVehicleVectorParam()||Y||Y||Y||&lt;br /&gt;
|- &lt;br /&gt;
|llSetVehicleRotationParam()||Y||Y||Y|| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Parameters!!Set by LSL?!!Used!!Works!!Exceptions&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_LINEAR_MOTOR_DIRECTION||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_LINEAR_MOTOR_TIMESCALE||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_LINEAR_FRICTION_TIMESCALE||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_LINEAR_MOTOR_OFFSET||F||N|| || &lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_ANGULAR_MOTOR_DIRECTION||Y||Y||Y|| &lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_ANGULAR_MOTOR_TIMESCALE||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_ANGULAR_FRICTION_TIMESCALE||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
||VEHICLE_BANKING_EFFICIENCY||F||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_BANKING_MIX||F||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_BANKING_TIMESCALE||F||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_BUOYANCY||Y||Y||Y||(do not confuse with llSetBuoyancy())&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_HOVER_HEIGHT||Y||Y||Y||(do not confuse with llSetHoverHeight())&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_HOVER_EFFICIENCY||Y||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_HOVER_TIMESCALE||Y||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY||F||N|| ||&lt;br /&gt;
|- &lt;br /&gt;
|VEHICLE_LINEAR_DEFLECTION_TIMESCALE||F||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY||F||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE||F||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_REFERENCE_FRAME||F||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_TYPE_NONE||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_TYPE_BALLOON||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_TYPE_BOAT||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_TYPE_CAR||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_TYPE_SLED||Y||Y||Y||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_NO_DEFLECTION_UP||Y||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_LIMIT_ROLL_ONLY||Y||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_HOVER_WATER_ONLY||Y||Y|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_HOVER_TERRAIN_ONLY||Y||Y|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT||Y||Y|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_HOVER_UP_ONLY||Y||Y|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_LIMIT_MOTOR_UP||Y||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_MOUSELOOK_STEER||Y||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_MOUSELOOK_BANK||Y||N|| ||&lt;br /&gt;
|-&lt;br /&gt;
|VEHICLE_FLAG_CAMERA_DECOUPLED||Y||N|| ||&lt;br /&gt;
|}&lt;br /&gt;
== VEHICLE TYPE Presets ==&lt;br /&gt;
VEHICLE_TYPE_SLED:&lt;br /&gt;
 linearFrictionTimescale &amp;lt;30, 1, 1000&amp;gt;&lt;br /&gt;
 angularFrictionTimescale &amp;lt;1000, 1000, 1000&amp;gt;&lt;br /&gt;
 linearMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 linearMotorTimescale  1000  &lt;br /&gt;
 linearMotorDecayTimescale  120  &lt;br /&gt;
 angularMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 angularMotorTimescale  1000  &lt;br /&gt;
 angularMotorDecayTimescale  120  &lt;br /&gt;
 VhoverHeight  0  &lt;br /&gt;
 VhoverEfficiency  1  &lt;br /&gt;
 VhoverTimescale  10  &lt;br /&gt;
 VehicleBuoyancy  0  &lt;br /&gt;
 linearDeflectionEfficiency  1  &lt;br /&gt;
 linearDeflectionTimescale  1  &lt;br /&gt;
 angularDeflectionEfficiency  1  &lt;br /&gt;
 angularDeflectionTimescale  1000  &lt;br /&gt;
 bankingEfficiency  0  &lt;br /&gt;
 bankingMix  1  &lt;br /&gt;
 bankingTimescale  10  &lt;br /&gt;
 referenceFrame ZERO_ROTATION&lt;br /&gt;
 flags FALSE: &lt;br /&gt;
 	HOVER_WATER_ONLY&lt;br /&gt;
 	HOVER_TERRAIN_ONLY&lt;br /&gt;
 	HOVER_GLOBAL_HEIGHT&lt;br /&gt;
 	HOVER_UP_ONLY&lt;br /&gt;
 flags  TRUE:&lt;br /&gt;
 	NO_DEFLECTION_UP&lt;br /&gt;
 	LIMIT_ROLL_ONLY&lt;br /&gt;
 	LIMIT_MOTOR_UP&lt;br /&gt;
 	&lt;br /&gt;
&lt;br /&gt;
VEHICLE_TYPE_CAR:&lt;br /&gt;
 linearFrictionTimescale &amp;lt;100, 2, 1000&amp;gt;&lt;br /&gt;
 angularFrictionTimescale &amp;lt;1000, 1000, 1000&amp;gt;&lt;br /&gt;
 linearMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 linearMotorTimescale  1  &lt;br /&gt;
 linearMotorDecayTimescale  60  &lt;br /&gt;
 angularMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 angularMotorTimescale  1  &lt;br /&gt;
 angularMotorDecayTimescale  0.8  &lt;br /&gt;
 VhoverHeight  0  &lt;br /&gt;
 VhoverEfficiency  0  &lt;br /&gt;
 VhoverTimescale  1000  &lt;br /&gt;
 VehicleBuoyancy  0  &lt;br /&gt;
  // m_linearDeflectionEfficiency  1  &lt;br /&gt;
  // m_linearDeflectionTimescale  2  &lt;br /&gt;
  // m_angularDeflectionEfficiency  0  &lt;br /&gt;
 angularDeflectionTimescale  10  &lt;br /&gt;
 verticalAttractionEfficiency  1  &lt;br /&gt;
 verticalAttractionTimescale  10  &lt;br /&gt;
 bankingEfficiency  -0.2  &lt;br /&gt;
 bankingMix  1  &lt;br /&gt;
 bankingTimescale  1  &lt;br /&gt;
 referenceFrame ZERO_ROTATION&lt;br /&gt;
 flags FALSE: &lt;br /&gt;
 	HOVER_WATER_ONLY &lt;br /&gt;
 	HOVER_TERRAIN_ONLY &lt;br /&gt;
 	HOVER_GLOBAL_HEIGHT&lt;br /&gt;
 flags TRUE:&lt;br /&gt;
 	NO_DEFLECTION_UP &lt;br /&gt;
 	LIMIT_ROLL_ONLY &lt;br /&gt;
	HOVER_UP_ONLY&lt;br /&gt;
	LIMIT_MOTOR_UP&lt;br /&gt;
	&lt;br /&gt;
VEHICLE_TYPE_BOAT:&lt;br /&gt;
 linearFrictionTimescale &amp;lt;10, 3, 2&amp;gt;&lt;br /&gt;
 angularFrictionTimescale &amp;lt;10,10,10&amp;gt;&lt;br /&gt;
 linearMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 linearMotorTimescale  5  &lt;br /&gt;
 linearMotorDecayTimescale  60  &lt;br /&gt;
 angularMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 angularMotorTimescale  4  &lt;br /&gt;
 angularMotorDecayTimescale  4  &lt;br /&gt;
 VhoverHeight  0  &lt;br /&gt;
 VhoverEfficiency  0.5  &lt;br /&gt;
 VhoverTimescale  2  &lt;br /&gt;
 VehicleBuoyancy  1  &lt;br /&gt;
 linearDeflectionEfficiency  0.5  &lt;br /&gt;
 linearDeflectionTimescale  3  &lt;br /&gt;
 angularDeflectionEfficiency  0.5  &lt;br /&gt;
 angularDeflectionTimescale  5  &lt;br /&gt;
 verticalAttractionEfficiency  0.5  &lt;br /&gt;
 verticalAttractionTimescale  5  &lt;br /&gt;
 bankingEfficiency  -0.3  &lt;br /&gt;
 bankingMix  0.8  &lt;br /&gt;
 bankingTimescale  1  &lt;br /&gt;
 referenceFrame ZERO_ROTATION&lt;br /&gt;
 flags FALSE: &lt;br /&gt;
 	HOVER_TERRAIN_ONLY&lt;br /&gt;
 	LIMIT_ROLL_ONLY&lt;br /&gt;
 	HOVER_GLOBAL_HEIGHT&lt;br /&gt;
 	HOVER_UP_ONLY&lt;br /&gt;
 flags TRUE:&lt;br /&gt;
 	NO_DEFLECTION_UP&lt;br /&gt;
 	HOVER_WATER_ONLY&lt;br /&gt;
 	LIMIT_MOTOR_UP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VEHICLE_TYPE_AIRPLANE:&lt;br /&gt;
 linearFrictionTimescale &amp;lt;200, 10, 5&amp;gt;&lt;br /&gt;
 angularFrictionTimescale &amp;lt;20, 20, 20&amp;gt;&lt;br /&gt;
 linearMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 linearMotorTimescale  2  &lt;br /&gt;
 linearMotorDecayTimescale  60  &lt;br /&gt;
 angularMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 angularMotorTimescale  4  &lt;br /&gt;
 angularMotorDecayTimescale  4  &lt;br /&gt;
 VhoverHeight  0  &lt;br /&gt;
 VhoverEfficiency  0.5  &lt;br /&gt;
 VhoverTimescale  1000  &lt;br /&gt;
 VehicleBuoyancy  0  &lt;br /&gt;
 linearDeflectionEfficiency  0.5  &lt;br /&gt;
 linearDeflectionTimescale  3  &lt;br /&gt;
 angularDeflectionEfficiency  1  &lt;br /&gt;
 angularDeflectionTimescale  2  &lt;br /&gt;
 verticalAttractionEfficiency  0.9  &lt;br /&gt;
 verticalAttractionTimescale  2  &lt;br /&gt;
 bankingEfficiency  1  &lt;br /&gt;
 bankingMix  0.7f  &lt;br /&gt;
 bankingTimescale  2  &lt;br /&gt;
 referenceFrame ZERO_ROTATION&lt;br /&gt;
 flags FALSE:&lt;br /&gt;
 	NO_DEFLECTION_UP&lt;br /&gt;
 	HOVER_WATER_ONLY&lt;br /&gt;
 	HOVER_TERRAIN_ONLY&lt;br /&gt;
 	HOVER_GLOBAL_HEIGHT&lt;br /&gt;
 	HOVER_UP_ONLY&lt;br /&gt;
 	LIMIT_MOTOR_UP&lt;br /&gt;
 flags TRUE:&lt;br /&gt;
 	LIMIT_ROLL_ONLY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VEHICLE_TYPE_BALLOON:&lt;br /&gt;
 linearFrictionTimescale &amp;lt;5, 5, 5&amp;gt;&lt;br /&gt;
 angularFrictionTimescale &amp;lt;10, 10, 10&amp;gt;&lt;br /&gt;
 linearMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 linearMotorTimescale  5  &lt;br /&gt;
 linearMotorDecayTimescale  60  &lt;br /&gt;
 angularMotorDirection &amp;lt;0, 0, 0&amp;gt;&lt;br /&gt;
 angularMotorTimescale  6  &lt;br /&gt;
 angularMotorDecayTimescale  10  &lt;br /&gt;
 VhoverHeight  5  &lt;br /&gt;
 VhoverEfficiency  0.8  &lt;br /&gt;
 VhoverTimescale  10  &lt;br /&gt;
 VehicleBuoyancy  1  &lt;br /&gt;
 linearDeflectionEfficiency  0  &lt;br /&gt;
 linearDeflectionTimescale  5  &lt;br /&gt;
 angularDeflectionEfficiency  0  &lt;br /&gt;
 angularDeflectionTimescale  5  &lt;br /&gt;
 verticalAttractionEfficiency  1  &lt;br /&gt;
 verticalAttractionTimescale  1000  &lt;br /&gt;
 bankingEfficiency  0  &lt;br /&gt;
 bankingMix  0.7  &lt;br /&gt;
 bankingTimescale  5  &lt;br /&gt;
 referenceFrame ZERO_ROTATION&lt;br /&gt;
 flags FALSE:&lt;br /&gt;
 	NO_DEFLECTION_UP &lt;br /&gt;
 	HOVER_WATER_ONLY &lt;br /&gt;
 	HOVER_TERRAIN_ONLY&lt;br /&gt;
 	HOVER_UP_ONLY &lt;br /&gt;
 	LIMIT_MOTOR_UP&lt;br /&gt;
 flags TRUE:&lt;br /&gt;
 	LIMIT_ROLL_ONLY&lt;br /&gt;
 	HOVER_GLOBAL_HEIGHT&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/VMware_Appliance</id>
		<title>VMware Appliance</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/VMware_Appliance"/>
				<updated>2012-03-04T07:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disclaimer:&lt;br /&gt;
 This appliance is unofficial and is in no way connected with the OpenSimulator Development team,&lt;br /&gt;
 no one will be held responsible for any damages that may occur through the use of this appliance.&lt;br /&gt;
&lt;br /&gt;
If there are currently no seeders, please try again in a few hours.&lt;br /&gt;
== First Edition ==&lt;br /&gt;
Built against Ubuntu Server 7.10.&lt;br /&gt;
Contains and runs the 0.5 OpenSimulator release by default, also contains SVN version with easy update script.&lt;br /&gt;
Sim is standalone and uses SQLite as a database and ODE for physics.&lt;br /&gt;
&lt;br /&gt;
On first run the sim will need to be configured, simply log in and the Console should appear.&lt;br /&gt;
&lt;br /&gt;
[http://thepiratebay.org/tor/4057585 Torrent] - Readme can be found here, aswell as inside the torrent.&lt;br /&gt;
&lt;br /&gt;
== FreeBSD Edition ==&lt;br /&gt;
Coming soon..&lt;br /&gt;
&lt;br /&gt;
== Future Editions ==&lt;br /&gt;
=== To Do ===&lt;br /&gt;
* More user friendly, reliable.&lt;br /&gt;
* Fix init script to function as originally intended. (Add proper shutting down)&lt;br /&gt;
* Add first boot configuration for OpenSim, a nice menu interface would be nice, maybe let the user edit config by hand after for tweaking.&lt;br /&gt;
** Give option of running attached to a grid.&lt;br /&gt;
** Give option of using MySQL.&lt;br /&gt;
* Add SVN update script as a cronjob, need to check that an in place update wont go awry, and also a fallback in case the current SVN fails.&lt;br /&gt;
* Some way to update the appliance when major changes are made.&lt;br /&gt;
* Trim size down a bit, remove uneeded stuff, eg. XOrg was installed as a dependency for Mono when it is clearly not needed.&lt;br /&gt;
* FreeBSD Edition ( [[DevalnorWorkNotes|Devalnor Work Notes]])&lt;br /&gt;
* Run Mono in Jail mode for more security&lt;br /&gt;
&lt;br /&gt;
=== Ideas / Requests ===&lt;br /&gt;
* Feel free to add stuff here&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Using_Git</id>
		<title>Using Git</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Using_Git"/>
				<updated>2012-03-04T07:03:30Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an introduction to using git for OpenSimulator. If you just want to know git cloning path, jump to [[#Cloning the Repositry (for Non Core Developers)]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installing Git =&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&lt;br /&gt;
=== CLI ===&lt;br /&gt;
:Git is provided as a package with all modern Linux distributions. Install the following packages depending on environment:&lt;br /&gt;
::* Debian, Ubuntu: &amp;lt;pre&amp;gt;apt-get install git-core&amp;lt;/pre&amp;gt;&lt;br /&gt;
::* Centos: see the instructions at http://www.how-to-linux.com/2009/01/install-git-161-on-centos-52/&lt;br /&gt;
&lt;br /&gt;
=== GUIs ===&lt;br /&gt;
:[http://www.kernel.org/pub/software/scm/git/docs/git-gui.html git-gui]&lt;br /&gt;
::* Debian, Ubuntu:&lt;br /&gt;
 $ sudo apt-get install git-gui&lt;br /&gt;
 $ git gui&lt;br /&gt;
&lt;br /&gt;
:[http://cola.tuxfamily.org/ git-cola]&lt;br /&gt;
::* Debian, Ubuntu:&lt;br /&gt;
 $ apt-get install git-cola&lt;br /&gt;
 $ git-cola&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
On Windows you need to install 2 packages:&lt;br /&gt;
* [http://code.google.com/p/msysgit/ msysgit] - the basic git port for windows. Install this first. &lt;br /&gt;
* [http://code.google.com/p/tortoisegit/ Tortoise Git] - the git explorer. Install this second.&lt;br /&gt;
&lt;br /&gt;
When '''installing msysgit''' be sure to choose&lt;br /&gt;
'''Unix style line endings'''. This will make it so that all the line endings are managed correctly, which will prevent merge issues in the future.&lt;br /&gt;
&lt;br /&gt;
[[Image:msysgit1.png]] [[Image:msysgit2.png]] [[Image:msysgit3.png]] [[Image:msysgit4.png]] [[Image:msysgit5.png]]&lt;br /&gt;
&lt;br /&gt;
== Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
If you have [http://www.macports.org/ MacPorts] installed, then open a Terminal window and run:&lt;br /&gt;
&lt;br /&gt;
 sudo port install git-core&lt;br /&gt;
&lt;br /&gt;
Or you can even obtain GitX GUI tool from [http://gitx.frim.nl/ GitX Website] and put it into application folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configuring Git =&lt;br /&gt;
&lt;br /&gt;
Git has both a global config and a local config for each repo. As one might expect, local trumps global. The first important thing to do is set your name and email address, as that will be used in your commits.&lt;br /&gt;
&lt;br /&gt;
On Linux / Mac OS X this is done via:&lt;br /&gt;
&lt;br /&gt;
 git config user.email YOUR@EMAIL.ADDR&lt;br /&gt;
 git config user.name &amp;quot;Your Name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On Windows this is done with the config menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:Config1.png]]&amp;amp;nbsp;[[Image:Config2.png]]&lt;br /&gt;
&lt;br /&gt;
To setup your Context Menu to make your options easier, select the Context Menu options as shown above and choose what you want to have displayed immediately.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Config3.png]]&lt;br /&gt;
&lt;br /&gt;
= Git Repositories for OpenSimulator =&lt;br /&gt;
&lt;br /&gt;
The urls for the repositories are as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Repository !! Developer URL !! Anon URL&lt;br /&gt;
|-&lt;br /&gt;
|| opensim (main repository) || ssh://opensimulator.org/var/git/opensim || git://opensimulator.org/git/opensim&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Cloning the Repositry (for Core Developers) ==&lt;br /&gt;
&lt;br /&gt;
If you are a core developer, use the developer url above. If you aren't a core developer, use the anon url above. The initial clone will take a few minutes, as it is pulling the entire change history. Don't be concerned about space, all the change history stored in git takes up less space than a single checked out copy of opensim. Welcome to the wonderful world of content addressable storage.&lt;br /&gt;
&lt;br /&gt;
Unlike with svn, you can define multiple sources to pull from. So if you initially start with an anon tree (which is read only), you can still later define the core tree (or some other remote target on github) and push to that.&lt;br /&gt;
&lt;br /&gt;
=== Linux / Mac OS X ===&lt;br /&gt;
Run the following on the command line:&lt;br /&gt;
&lt;br /&gt;
 git clone ssh://opensimulator.org/var/git/opensim&lt;br /&gt;
&lt;br /&gt;
This will create an opensim-test directory locally&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
Right click on the Desktop (or wherever) and 'Git Clone...'&lt;br /&gt;
&lt;br /&gt;
When prompted for a url provide ssh://opensimulator.org/var/git/opensim. You username and password will be the ones used for opensimulator.org.&lt;br /&gt;
&lt;br /&gt;
== Cloning the Repositry (for Non Core Developers) ==&lt;br /&gt;
&lt;br /&gt;
 git clone git://opensimulator.org/git/opensim&lt;br /&gt;
&lt;br /&gt;
This is the equivalent of anonymous svn access.&lt;br /&gt;
&lt;br /&gt;
== Resolving git hash &amp;amp;amp; revision numbers ==&lt;br /&gt;
&lt;br /&gt;
These generate the bin/.version file which is used to identify the Git-Hash Revision.&amp;amp;nbsp; The GIT Hash is used to track the builds for troubleshooting and for filling Mantis Reports.&amp;amp;nbsp; Without proper Version Identification developers / contributors cannot locate &amp;amp;amp;&amp;amp;nbsp;address problems within the source code, resulting in un-usable Mantis reports.&amp;amp;nbsp; Please Version your Builds to help everyone make a better OpenSimulator.&lt;br /&gt;
&lt;br /&gt;
[[Show git version numbers - Windows|Windows batchfile]] &lt;br /&gt;
&lt;br /&gt;
[[Show git version numbers - Linux|Linux bash script]] &lt;br /&gt;
&lt;br /&gt;
NOTE:&amp;amp;nbsp; Older installation of GIT&amp;amp;nbsp;such as 1.6.0.4 do not support the extra functions.&amp;amp;nbsp; To make use of the above scripts it is recomended you update your GIT&amp;amp;nbsp;installation to the most current revisions.&amp;amp;nbsp; They are available from [http://git-scm.com/ git-scm.com/]&lt;br /&gt;
&lt;br /&gt;
= Conceptual Changes from Subversion =&lt;br /&gt;
&lt;br /&gt;
Distributed source code control is a substantially different mental model than centralized source code control. If it freaks you out a bit, don't worry, everyone has that same reaction initially. This [http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ blog post] is the best explanation that I've seen of the concepts involved.&lt;br /&gt;
&lt;br /&gt;
For heavy users of subversion you should read the [http://git.or.cz/course/svn.html git / svn cheat sheet]. This provides a very solid basis for making your changes. That being said there are some conceptual changes to note.&lt;br /&gt;
&lt;br /&gt;
* Terminology&lt;br /&gt;
** master is the name of the primary upstream branch (in subversion terms, this is trunk)&lt;br /&gt;
** origin is the name and location of the tree you cloned from&lt;br /&gt;
* All repositories are full peers to all other repositories. Your cloned git repo is all the history of the entire project, available locally. It means you can sync between any 2 clones of the repository, not just between your clone and the master repo. This lets people work together on changes not in&lt;br /&gt;
* Version numbers are SHA1 hashes, not sequential integers. This means referring to specific revisions is a bit more interesting. For most of the git commands, you only need to give it the first 6-8 digits of the hash for them to work.&lt;br /&gt;
* Committing&lt;br /&gt;
** commits are local. This means they are fast (no network involved) and they are committed against the last state of the tree. Any conflict resolution will be handled after commits, during your next pull. This is slightly different than pull-resolve-then-commit model of subversion.&lt;br /&gt;
** by default only files you explicitly '''git add''' are put into the commit. To get '''svn ci''' equivalency use '''git commit -a''' to commit all outstanding files (I think tortoise handles this for you)&lt;br /&gt;
** after making a commit you must then '''push''' it to a remote repository (probably origin). By default you push only branches you have previously pushed, typically master.&lt;br /&gt;
&lt;br /&gt;
The biggest real change is the Subversion dictates a very specific workflow. Git does not. Git allows for many different workflows, and lets each developer use the one that is best suited to his/her self.&lt;br /&gt;
&lt;br /&gt;
= Using Git like Subversion/trunk development =&lt;br /&gt;
&lt;br /&gt;
This is a set of quick instructions to use git like we do subversion development today. It is targetted for core developers (so assumes you are using the ssh access), though most of it will work for non developers by just changing a url.&lt;br /&gt;
&lt;br /&gt;
This is done by giving the unix commands. These options should all be available in the context menu on tortoise git as well.&lt;br /&gt;
&lt;br /&gt;
== Getting the source code ==&lt;br /&gt;
&lt;br /&gt;
'''git clone ssh://opensimulator.org/git/opensim-test'''&lt;br /&gt;
&lt;br /&gt;
This is the equivalent of '''svn co'''&lt;br /&gt;
&lt;br /&gt;
'''Note:''' all other operations assume that you are in the git directory.&lt;br /&gt;
&lt;br /&gt;
== Updating your checkout ==&lt;br /&gt;
&lt;br /&gt;
'''git pull'''&lt;br /&gt;
&lt;br /&gt;
This is the equivalent of '''svn update'''&lt;br /&gt;
&lt;br /&gt;
== Inspecting what has changed in your working tree ==&lt;br /&gt;
&lt;br /&gt;
'''git status'''&lt;br /&gt;
&lt;br /&gt;
This is the equivalent of '''svn status'''&lt;br /&gt;
&lt;br /&gt;
== Committing a change ==&lt;br /&gt;
&lt;br /&gt;
either:&lt;br /&gt;
&lt;br /&gt;
'''git add file1 file2 ...'''&lt;br /&gt;
&lt;br /&gt;
'''git commit'''&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
'''git commit -a'''&lt;br /&gt;
&lt;br /&gt;
by default git does not add all files during a commit.&lt;br /&gt;
&lt;br /&gt;
== Pushing the committed change ==&lt;br /&gt;
&lt;br /&gt;
The first time you do this you'll need to specify which branch to push.&lt;br /&gt;
&lt;br /&gt;
'''git push origin master'''&lt;br /&gt;
&lt;br /&gt;
After the first time a simple '''git push''' will be enough, as it defaults to origin, and now git knows that master should by synced to origin.&lt;br /&gt;
&lt;br /&gt;
'''Important:''' commits in git are local. They are not included in the main tree '''until you push''' them. This means you can create commits when you are not on the network and sync afterwards.&lt;br /&gt;
&lt;br /&gt;
== Setting the checkout dir to a specific revision ==&lt;br /&gt;
&lt;br /&gt;
'''git reset --hard #HASHVALUE'''&lt;br /&gt;
&lt;br /&gt;
This will effectively rewind the tree to the specific revision, and modify the checkout dir accordingly. This is equiv to '''svn up -R#version'''.&lt;br /&gt;
&lt;br /&gt;
git reset can also be useful if you screwed up commits and want to get rid of them&lt;br /&gt;
&lt;br /&gt;
== Resetting the tree to master (i.e. trunk) ==&lt;br /&gt;
&lt;br /&gt;
'''git pull'''&lt;br /&gt;
&lt;br /&gt;
per previous&lt;br /&gt;
&lt;br /&gt;
== Creating a Patch ==&lt;br /&gt;
&lt;br /&gt;
'''git format-patch #HASHVALUE'''&lt;br /&gt;
&lt;br /&gt;
This will create a patch suitable for attaching or emailing from a single commit. You can also specify a range of commits.&lt;br /&gt;
&lt;br /&gt;
This is closest to '''svn diff &amp;gt; patchfile.txt''' for uncommitted changes in subversion.&lt;br /&gt;
&lt;br /&gt;
== Applying a Git Patch ==&lt;br /&gt;
&lt;br /&gt;
If someone has formatted a git patch you can apply it directly (including all file adds, file mode changes, and their change log entry) with:&lt;br /&gt;
&lt;br /&gt;
preferred method (preserves creator info): '''git am --signoff patchfile.patch'''&lt;br /&gt;
&lt;br /&gt;
this also works (try above method first) : git apply patchfile.patch&lt;br /&gt;
&lt;br /&gt;
== Reverting a Change ==&lt;br /&gt;
&lt;br /&gt;
'''git revert #HASHVALUE'''&lt;br /&gt;
&lt;br /&gt;
This directly reverts the change, with a commit message stating that fact. There is no svn direct equiv, though this is often accomplished through: svn diff -R revisions &amp;gt; revert.patch &amp;amp;&amp;amp; patch -p0 &amp;lt; revert.patch &amp;amp;&amp;amp; svn ci -m &amp;quot;reverting revisions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Resetting part of the tree to master ==&lt;br /&gt;
&lt;br /&gt;
'''git checkout -- file1 file2 ...'''&lt;br /&gt;
&lt;br /&gt;
Checkout is an operation that populates the working directory from the git repository. Doing a git checkout (master is the implied branch) -- file1 file2 repulls those files from the git repo, clobbering them in your local directory. This is like '''svn revert'''.&lt;br /&gt;
&lt;br /&gt;
== Diffing Changes ==&lt;br /&gt;
&lt;br /&gt;
Against your most recently committed changes&lt;br /&gt;
&lt;br /&gt;
'''git diff'''&lt;br /&gt;
&lt;br /&gt;
From your most recent changes to a past change&lt;br /&gt;
&lt;br /&gt;
'''git diff #HASHVALUE'''&lt;br /&gt;
&lt;br /&gt;
Between any 2 changes&lt;br /&gt;
&lt;br /&gt;
'''git diff #HASHVALUE1 #HASHVALUE1'''&lt;br /&gt;
&lt;br /&gt;
== Branches ==&lt;br /&gt;
&lt;br /&gt;
=== Creating a Branch ===&lt;br /&gt;
&lt;br /&gt;
To create a new branch based on the current one, do:&lt;br /&gt;
&lt;br /&gt;
'''git branch &amp;amp;lt;branchname&amp;amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
=== Changing Branches ===&lt;br /&gt;
&lt;br /&gt;
To change between branches do:&lt;br /&gt;
&lt;br /&gt;
'''git checkout &amp;amp;lt;branchname&amp;amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
=== Tracking a Branch ===&lt;br /&gt;
&lt;br /&gt;
If you want to work on a specific branch, you can track it, by creating a local version of it on which you can pull and push. If you have already pulled (or fetched) from origin, you should have all remote branches names:&lt;br /&gt;
&lt;br /&gt;
'''git branch -a'''&lt;br /&gt;
&lt;br /&gt;
Will show all branches, local and remote. Choose a remote branch to track then do:&lt;br /&gt;
&lt;br /&gt;
'''git branch --track &amp;amp;lt;localbranchname&amp;amp;gt; remotes/origin/&amp;amp;lt;remotebranchname&amp;amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
A new local branch will be created, which will push and pull to the specific remote branch.&lt;br /&gt;
&lt;br /&gt;
** alternate method that also works&lt;br /&gt;
&lt;br /&gt;
'''git checkout -b &amp;lt;wanted_branch&amp;gt; origin/&amp;lt;wanted_branch&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Resources &amp;amp;amp; References ==&lt;br /&gt;
&lt;br /&gt;
Git - SVN Crash Course at [http://git-scm.com/course/svn.html git-scm.com/course/svn.html] &lt;br /&gt;
&lt;br /&gt;
Git for the lazy tutorial at [http://www.spheredev.org/wiki/Git_for_the_lazy www.spheredev.org/wiki/Git_for_the_lazy] &lt;br /&gt;
&lt;br /&gt;
Git Video Tutorials at&amp;amp;nbsp; [http://gitcasts.com/ http://gitcasts.com/]&amp;amp;nbsp;&amp;amp;nbsp; (Several Excellent Video Tutorials)&lt;br /&gt;
&lt;br /&gt;
The Git Community Book at [http://book.git-scm.com/ http://book.git-scm.com/]&lt;br /&gt;
&lt;br /&gt;
The git-svn(1) Manual Page [http://www.kernel.org/pub/software/scm/git/docs/v1.6.3.3/git-svn.html] (git-svn = Bidirectional operation between a single Subversion branch and git)&lt;br /&gt;
&lt;br /&gt;
The Git-Svn Cheat Sheet [http://cheat.errtheblog.com/s/gitsvn/]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Userlevel</id>
		<title>Userlevel</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Userlevel"/>
				<updated>2012-03-04T07:03:19Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On the table [[useraccounts]] in the database ''opensim'' there are 2 fields:&lt;br /&gt;
* ''UserLevel'' integer used to attribute the God powers for each individual user&lt;br /&gt;
* ''UserTitle'' string used for Administrator; you can set here the particularities of each user (possibly SL only; might not be in use in core OpenSim?)&lt;br /&gt;
&lt;br /&gt;
== UserLevel values as applied to OpenSimulator ==&lt;br /&gt;
The only UserLevel used is 200 (to indicate god). Also presumably level 0 for non-god, basic user level.&lt;br /&gt;
&lt;br /&gt;
A [[IRegionModule|region module]] could get these values via the UserAccount class from the UserAccountService. They can be set either by directly writing to the database, via the &amp;quot;set user level&amp;quot; command on the [[ROBUST]] console (there is no command for setting user title) or via the StoreAccount call on the robust service if it has been explicitly allowed (security risk in open grids).&lt;br /&gt;
&lt;br /&gt;
== God Mode Values ==&lt;br /&gt;
The Viewer source code shows that there are several levels of &amp;quot;God Mode&amp;quot; (each level has all the previous levels' powers):&lt;br /&gt;
&lt;br /&gt;
'''GOD_NOT'''&lt;br /&gt;
&lt;br /&gt;
Value: 0 ''(Presumably the default &amp;quot;God Mode&amp;quot; status given to every logged-in user)''&lt;br /&gt;
&lt;br /&gt;
'''GOD_LIKE'''&lt;br /&gt;
&lt;br /&gt;
Value: 1&lt;br /&gt;
* rename objects without modify permission &lt;br /&gt;
&lt;br /&gt;
'''GOD_CUSTOMER_SERVICE'''&lt;br /&gt;
&lt;br /&gt;
Value: 100&lt;br /&gt;
* Toggle character geometry&lt;br /&gt;
* Take copy&lt;br /&gt;
* Owner To Me&lt;br /&gt;
* Set To Linden Content&lt;br /&gt;
* Claim Public Land &lt;br /&gt;
&lt;br /&gt;
'''GOD_LIAISON'''&lt;br /&gt;
&lt;br /&gt;
Value: 150&lt;br /&gt;
* Enable land auction &lt;br /&gt;
&lt;br /&gt;
'''GOD_FULL'''&lt;br /&gt;
&lt;br /&gt;
Value: 200 ''(Difference from GOD_LIAISON not apparent)''&lt;br /&gt;
&lt;br /&gt;
'''GOD_MAINTENANCE'''&lt;br /&gt;
&lt;br /&gt;
Value: 250 ''(Difference from GOD_FULL not apparent)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Note: text in &amp;quot;God Mode Values&amp;quot; section was borrowed from [http://wiki.secondlife.com/wiki/God_mode SLwiki], shared under a [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] license''&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/User_DocumentationPT</id>
		<title>User DocumentationPT</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/User_DocumentationPT"/>
				<updated>2012-03-04T07:03:09Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenSimulator - Português - Documentos para Usuários==&lt;br /&gt;
&lt;br /&gt;
{{QuicklinksPT}}&lt;br /&gt;
&lt;br /&gt;
{{Aviso_Traducao}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Initial Setup ==&lt;br /&gt;
* [[Download]] - Download instructions&lt;br /&gt;
* [[OpenSim Build Instructions|Build Instructions]] - How to build and compile OpenSimulator from Source&lt;br /&gt;
* [[OpenSim Configuration|Configuration]] - How to get your OpenSimulator server up and running&lt;br /&gt;
* [[Connecting]] - How to connect a compatible viewer to OpenSimulator&lt;br /&gt;
* [[Troubleshooting]] - How to trouble shoot your OpenSimulator installation.&lt;br /&gt;
* [[Tips]] - Useful tips from users like you&lt;br /&gt;
* [[FAQ]] - Frequently Asked Questions&lt;br /&gt;
&lt;br /&gt;
== Administrator Guide ==&lt;br /&gt;
* [[Server Commands]] - Commands to control OpenSimulator&lt;br /&gt;
* [[Custom Libraries]] - Describes how to add custom content to your OpenSimulator server&lt;br /&gt;
* [[Automating Tasks]] - How to make administrating a walk in the park&lt;br /&gt;
* [[Network Settings]] - NAT, Ports, Services and more...&lt;br /&gt;
* [[Performance]] - How to tweak OpenSim's performance&lt;br /&gt;
* [[Console-less OpenSim]] - How to run OpenSimulator without console&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
* [[Scripting Documentation]] - Everything you need to know about OpenSimulator scripting and a list of sample scripts&lt;br /&gt;
&lt;br /&gt;
== Tutoriais Básicos ==&lt;br /&gt;
Você encontra tutoriais básicos em português no [http://www.opensimbr.blogspot.com/ link]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[OSGrid Region Registration]] - Describes how to link your region into OS-Grid&lt;br /&gt;
* [[Using L3DT]] - How to create custom terrains&lt;br /&gt;
* [[Production environment]] - How to setup a production environment with Linux-servers &lt;br /&gt;
&lt;br /&gt;
== Contribution Policy ==&lt;br /&gt;
* [[User Wiki Conventions]] - Read this carefully, before adding content to the wiki&lt;br /&gt;
&amp;lt;cleanpage title=hide cats=hide /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Portuguese Translations]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/User_Documentation</id>
		<title>User Documentation</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/User_Documentation"/>
				<updated>2012-03-04T07:03:01Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is user documentation for OpenSimulator, mainly aimed towards administrators of the system rather than the ultimate end-users who access the environment through a viewer. If you can't find what you want here you might want to try looking in the [[Developer Documentation]].&lt;br /&gt;
&lt;br /&gt;
For a summary of what features have been implemented in OpenSimulator, please see the [[Feature Matrix]].&lt;br /&gt;
&lt;br /&gt;
== Initial Setup ==&lt;br /&gt;
* [[Download]] - Download instructions&lt;br /&gt;
* [[Dependencies]] - The other packages you need to install that OpenSimulator relies upon&lt;br /&gt;
* [[Build Instructions]] - How to build and compile OpenSimulator from source&lt;br /&gt;
* [[Configuration]] - How to configure OpenSimulator so you can get the server up and running&lt;br /&gt;
* [[Configuring Regions]] - More details on configuring regions in Regions.ini&lt;br /&gt;
* [[Configuring Simulator Parameters]] - More details on the structure and configuration simulator parameters after the initial setup.&lt;br /&gt;
* [[Database Settings]] - Detailed configurations to connect to your database&lt;br /&gt;
* [[Upgrading]] - How to upgrade your OpenSimulator version so that you can use your existing data&lt;br /&gt;
* [[Network Settings]] - NAT, Ports, Services and more.&lt;br /&gt;
* [[Firewall Settings]] - Incomplete operating system specific instructions on how to open firewall ports for external OpenSimulator access.&lt;br /&gt;
* [[Troubleshooting]] - How to trouble shoot your OpenSimulator installation.&lt;br /&gt;
* [[Tips]] - Useful tips from users like you&lt;br /&gt;
* [[OpenSim Graphics]] - Graphics that can be used on OpenSimulator websites, viewer login pages or products.&lt;br /&gt;
* [[FAQ]] - Frequently Asked Questions&lt;br /&gt;
&lt;br /&gt;
== User Guide ==&lt;br /&gt;
* [[Connecting]] - How to connect a compatible viewer to OpenSimulator&lt;br /&gt;
&lt;br /&gt;
== Administrator Guide ==&lt;br /&gt;
* [[Server Commands]] - Commands to control OpenSimulator&lt;br /&gt;
* [[OpenSim.exe Command Line Options]] - Switches when you launch OpenSimulator.&lt;br /&gt;
* [[Useful Queries]] - Some useful queries for manipulating the OpenSimulator database.&lt;br /&gt;
* [[Logging]] - Logging in OpenSimulator&lt;br /&gt;
* [[Monitoring]] - Monitoring OpenSimulator&lt;br /&gt;
* [[Automating Tasks]] - How to make administrating a walk in the park&lt;br /&gt;
* [[RemoteAdmin]] - Using the XMLRPC administration interface for executing commands remotely&lt;br /&gt;
* [[RestConsole]] - Using the remote console.&lt;br /&gt;
* [[Performance]] - How to tweak OpenSim's performance&lt;br /&gt;
* [[Console-less OpenSim]] - How to run OpenSimulator without console&lt;br /&gt;
* [[Backups]] - How to backup your OpenSimulator data.&lt;br /&gt;
&lt;br /&gt;
== Core Features ==&lt;br /&gt;
* [[Feature Matrix]] - Matrix of features currently implemented by OpenSimulator.&lt;br /&gt;
* [[Scripting Documentation]] - Everything you need to know about OpenSimulator scripting, and the list of sample scripts&lt;br /&gt;
* [[OpenSim Archives]] - Loading and saving whole region archives with OpenSimulator&lt;br /&gt;
* [[Inventory Archives|OpenSimulator Inventory Archives]] - Loading and saving user inventory items and folders with OpenSimulator&lt;br /&gt;
* [[NPC]] - Use of Non Player Characters (NPCs) in OpenSim, also known as bots.&lt;br /&gt;
* [[Custom Libraries]] - Describes how to add custom content to your OpenSimulator server&lt;br /&gt;
* [[IRCBridgeModule]] - A core OpenSimulator module for integrating IRC with a simulator.&lt;br /&gt;
* [[Hypergrid]] - Information about how to configure the experimental hypergrid architecture&lt;br /&gt;
* [[GridInfo]] - how to provide information about your grid to smart clients&lt;br /&gt;
* [[PhysicsEngines]] — Options for physics engines in OpenSimulator.&lt;br /&gt;
* [[:Category:Tech Reference|Technical Reference]] - Technical Reference Guide&lt;br /&gt;
&lt;br /&gt;
== Optional Features ==&lt;br /&gt;
* [[Feature Proposals/AutoBackup|AutoBackup]] - Module for automatically backing up a region to an OAR regularly using a different filename.&lt;br /&gt;
* [[Freeswitch Module]] - Using FreeSWITCH for voice in OpenSimulator.&lt;br /&gt;
* [[Mumble]] - Using Mumble/Whisper for voice in OpenSimulator.&lt;br /&gt;
* [[Enabling Groups]] — How to enable creating groups in your regions&lt;br /&gt;
&lt;br /&gt;
== Experimental Features ==&lt;br /&gt;
&lt;br /&gt;
These are even more alpha than the rest of the code and may not currently work properly.&lt;br /&gt;
&lt;br /&gt;
* [[Setting Up Mega-Regions]]&lt;br /&gt;
&lt;br /&gt;
== RealXtend ==&lt;br /&gt;
* [[ModRex]] - How to setup the RealXtend server module&lt;br /&gt;
* [[RealXtend Viewer Linux]] - This tutorial describes how to use the RealXtend viewer on Linux, using wine&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
&lt;br /&gt;
If you've written a tutorial or guide on this wiki or on an external site, then please feel free to add a link here and/or on more specific topic pages.&lt;br /&gt;
&lt;br /&gt;
=== Platform specific ===&lt;br /&gt;
* [[Linux Gridserver, the ubuntu way]] the quick and dirty way to install opensim under ubuntu (Linux)&lt;br /&gt;
* [[Wiimote]] - How to use a wiimote/nunchuk controller with the OpenSimulator viewer (Linux)&lt;br /&gt;
* [[Cacti]] - Generate Serverstats using the Cacti-Tool and SNMP (Linux)&lt;br /&gt;
* [http://sunredbeach.com/dokuwiki/doku.php?id=opensim:minimal-server Installing an openSUSE 11.1 Minimal server setup for an OpenSimulator server] - Quick and Dirty setup on an openSUSE 11.1 server&lt;br /&gt;
* [[Streaming Media in OpenSim]]&lt;br /&gt;
&lt;br /&gt;
* [http://chapter-and-metaverse.blogspot.com Chapter &amp;amp; Metaverse] - Full suite of tutorials, tips and tricks, for the Windows user (Windows) Also very useful for Linux users!&lt;br /&gt;
&lt;br /&gt;
=== Cross-platform ===&lt;br /&gt;
* [[Getting Started with Region Modules]] - The Hello World of OpenSimulator application development&lt;br /&gt;
* [[Using L3DT]] - How to create custom terrains&lt;br /&gt;
* [[Detailed cross-region terrain making]] - A workflow for creating large cross-region custom terrains&lt;br /&gt;
* [http://update.multiverse.net/wiki/index.php/About_Terrain How to make a good Terrain (includes 4 programs to use)]&lt;br /&gt;
* [http://www.nsl.tuis.ac.jp/xoops/modules/d3downloads/index.php?page=singlefile&amp;amp;cid=8&amp;amp;lid=22 Japanese Manual for Construction of OpenSimulator Server System on Linux] by NSL (Sorry, Japanese only)&lt;br /&gt;
&lt;br /&gt;
=== Application ===&lt;br /&gt;
* [http://www.scribd.com/doc/57959626/OpenSimulator-School-Quick-Start-Guide David W. Deeds' OpenSimulator School Quick Start Guide] - David W. Deeds' OpenSimulator School Quick Start Guide courtesy of Changchun American International School. Has lots of useful and interesting info, including lesson plans.&lt;br /&gt;
&lt;br /&gt;
== Gforge Projects ==&lt;br /&gt;
* [[OpenSimSearch]] - Search for your OpenSimulator&lt;br /&gt;
* [[ServerStats]] - RRD/Proc serverstats using the OpenSimulator module for Berlios Serverstats (Linux)&lt;br /&gt;
&amp;lt;cleanpage title=hide cats=hide /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Users]]&lt;br /&gt;
[[Category:Support]]&lt;br /&gt;
[[Category:Help]]&lt;br /&gt;
[[Category:Configuration]]&lt;br /&gt;
[[Category:Getting Started]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/UserServer</id>
		<title>UserServer</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/UserServer"/>
				<updated>2012-03-04T07:02:50Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
{{proposal}}&lt;br /&gt;
{{content}}&lt;br /&gt;
&lt;br /&gt;
= What is a User Server? =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Many virtual worlds are being developed independently with a wide variety of different architectures and protocols. However, one common component across these worlds is a user service. A user service is the means of '''&amp;lt;place definition of user service here&amp;gt;'''. The current generation of virtual world user services are implemented as proprietary, behind-the-simulator services that are not directly available to a user.&lt;br /&gt;
&lt;br /&gt;
Blah, blah, blah &amp;lt;&amp;lt;Put some meaningful text here&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Regions are tied to a single grid. Wide availability of content is critical to the growth of virtual worlds, and the inability to roam between or share content between grids limits the ability of small providers. Having an asset server closely tied to a grid limits the ability of many small grids to reach critical mass.&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;edit all the text below this mark (this is leftover text from the AssetServer page), and change/adapt it for use for the User Service page&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
**************** MODIFY ALL THE TEXT BELOW THIS AREA ********************&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
# The current vendor-specific nature of asset storage limits the ability of third-party value added services. Offline content creation, asset archiving, specialized caching, and web service integration are all services that could be added with a more open approach.&lt;br /&gt;
# With assets &amp;quot;locked up&amp;quot; in proprietary asset servers, the ability to combine and re-purpose content is limited. For instance, specialized asset processing tuned to mobile applications.&lt;br /&gt;
# An asset server closely tied to a grid limits the content creator and owner's ability to manage asset lifecycle. An asset owner may wish to have their assets stored, backed up, and tracked from their own servers rather than handing over control to a grid.&lt;br /&gt;
&lt;br /&gt;
== Vision ==&lt;br /&gt;
&lt;br /&gt;
We envision virtual world grids modeled after the current World Wide Web, with millions of independent administrative domains. Content will be spread across millions of small, independent domains as well as aggregated on large domains supporting millions of users. A rich community of value added services and the free and open exchange of content will weave the network together, much as the Web 2.0 movement is tying the web together today. Every organization can choose to host an asset service or connect with any number of third party asset providers. Additionally, the content rights decisions are placed in the hands of the content hosts. With the proper authentication users are free to move assets to wherever they roam.&lt;br /&gt;
&lt;br /&gt;
Data services will become as important as data hosting itself. Just as search engines and content portals have changed how we use the web, services that can plug into a common interface in asset hosting will change how we use virtual worlds. Auditing services can provide an approach to rights management and traffic analytics. Existing caching techniques and services that have been built for today's web content can be leveraged for delivery of rich virtual world content.&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
Most implementations, including Second Life® and its open source derivatives, have opaque asset hosting that is a part of the world itself. The opaque asset hosting model has a choke point at the simulator level. Asset downloads make up the bulk of virtual world bandwidth requirements, and in the current Second Life model all assets must be proxied through the simulator.&lt;br /&gt;
&lt;br /&gt;
In the proposed architecture, control of assets is moved from grid owners to content owners to allow cross-world assets with content authorization management. Protocol enhancements could include better support for content rights, asset hosting as an independent service, asset migration between worlds, and scalable performance by allowing centralized servers to be removed from the equation.&lt;br /&gt;
&lt;br /&gt;
Our approach is to start simple by proposing common interfaces and paths for extensibility. By working with the community to refine these interfaces and explore use cases, we can outline specifications and minimum requirements documents. The short-term goals are to consolidate on a common metadata format with core features for version one, and build a reference asset service that plugs into the OpenSimulator UGAIM model.&lt;br /&gt;
&lt;br /&gt;
=== Asset Hosting as An Independent Service ===&lt;br /&gt;
&lt;br /&gt;
The current model of asset hosting approaches trust and permissions from the viewpoint of a grid. Users authenticate with a grid login service, upload assets to grid asset storage, and set permissions that apply to other users of that grid. By moving authorization to the asset storage, an asset service no longer needs to be tied to a specific grid and can serve anyone who is properly authenticated. This opens up the possibility of web service access to assets or asset metadata, or other use cases that do not directly involve logging in to a virtual world.&lt;br /&gt;
&lt;br /&gt;
=== Leveraging Existing Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
With asset serving separated from grid-specific code, the solution looks similar to existing solutions. Proven infrastructure for asset lookups, authentication, serving metadata, and content distribution can be used as building blocks.&lt;br /&gt;
&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
&lt;br /&gt;
The difficult research in scalable content distribution has already been done and implemented across the web in various different implementations. The goal is to reuse that existing knowledge for virtual world assets, adding optional features such as identity-based permission levels or new caching strategies.&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* Client: From the asset server's point of view, the networked program that is fetching or storing an asset.&lt;br /&gt;
* Asset Server: The network service that presents an interface allowing fetching and storing of asset items.&lt;br /&gt;
* Asset: A typed blob of data. The actual definition of asset content is left to the asset creator.&lt;br /&gt;
* Asset Metadata: Information stored along with the asset blob which includes type-specific information, ownership information, creation information (creation data), license, and anything else useful in identifying and controlling the asset data.&lt;br /&gt;
* Asset ID: A 128-bit identifier for content in a virtual world. These identifiers may or may not follow RFC 4122; the specific implementation is out of scope of the asset service. Asset IDs only have context in the grid they were created in.&lt;br /&gt;
* Authentication Token: A session cookie that is temporarily stored on the Asset Server and the Client that proves authentication and may grant some level of authorization. These cookies take the same UUID form as Asset IDs.&lt;br /&gt;
* Grid: For the purposes of this document, a grid is defined as the set of services where a particular Asset ID has contextual meaning.&lt;br /&gt;
&lt;br /&gt;
== Protocol Overview ==&lt;br /&gt;
&lt;br /&gt;
# The end user retrieves an authorization token to connect to an asset service. This can be returned by directly connecting to an asset service and supplying OpenID credentials, or an out of band method such as logging into a virtual world grid server.&lt;br /&gt;
# The end user does a GET operation, supplying the credentials from step 1, and requests the metadata for an asset ID.&lt;br /&gt;
# The asset service performs a lookup step which resolves the ID to metadata which includes the location of the content, a list of supported REST operations on the content, and additional information, such as the dimensions of a texture.&lt;br /&gt;
# The end user has information on different valid operations on the asset, and in the most common scenario will choose to use the fetch operation to download the asset.&lt;br /&gt;
&lt;br /&gt;
All user-facing services must be available over standard HTTP 1.1, and must adopt at least one common metadata format.&lt;br /&gt;
&lt;br /&gt;
== Asset Metadata Request ==&lt;br /&gt;
&lt;br /&gt;
An end user must discover the asset service through some means. The specific means of discovery is out of scope of this document but could for example be built into a client application, provided during grid login, or published on a webpage. To request asset metadata, an HTTP 1.1 GET is made to the asset service with the asset ID and metadata operation specified. For example, a request might look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;GET /89556747-24cb-43ed-920b-47caed15465f/metadata HTTP/1.1&lt;br /&gt;
Host: assets.virtualworld.com&lt;br /&gt;
Date: Mon, 22 Sep&amp;amp;nbsp; 2008 12:00:00 GMT&lt;br /&gt;
Authorization: OpenGrid ce9a6995-a737-4206-bae8-910cae310e94&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the asset is a protected resource the Authorization header is required. If the resource is publicly accessible, no Authorization header is needed and a normal HTTP GET (such as one generated by a web browser) can be used.&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
&lt;br /&gt;
Access to the asset service methods is controlled with a authentication token, a UUID. This UUID is a non-guessable, temporary token assigned to an end user at the end of a successful authentication process. This token could be granted by authentication through a virtual world login server (where the login server is responsible for transmitting the authentication token to the asset server), or through a direct login to the asset service itself using OpenID. Temporary tokens must only be given out to authenticated end users, and should be expired similar to HTTP cookies.&lt;br /&gt;
&lt;br /&gt;
If the asset service supports direct logins, it may respond to unauthorized requests with a response that includes information about authenticating with OpenID.&lt;br /&gt;
&lt;br /&gt;
Once an authenticated request for an asset has been made, the asset service determines if the authenticated user has authorization for the requested content. If a request is unauthorized, a 403 Forbidden response must be sent back to the end user, optionally including information about authenticating with OpenID so the user can choose to authenticate with another identity.&lt;br /&gt;
&lt;br /&gt;
== Lookup ==&lt;br /&gt;
&lt;br /&gt;
Once a request has been authorized, a lookup is performed. This could be as simple as a map&amp;lt;UUID,metadata&amp;gt; or a more scalable solution such as a distributed hash table. The lookup resolves the asset metadata and asset location, and together with the authorization can determine the list of supported actions that are returned in metadata.&lt;br /&gt;
&lt;br /&gt;
== Metadata ==&lt;br /&gt;
&lt;br /&gt;
The metadata provides information on supported methods for the resource and information about the resource itself (such as the size and dimensions of a texture, or byte boundaries of quality layers in a JPEG2000 file). One of the goals of this research is to work with the community to develop a common metadata format for requests and responses. The current metadata reference implementation uses JSON for the wire protocol. See [[AssetServer/ClientDocs|Asset Server Client Documentation]] for more information.&lt;br /&gt;
&lt;br /&gt;
The metadata is broken up into three parts. Required fields, methods, and extra fields.&lt;br /&gt;
&lt;br /&gt;
The required fields are basic attributes that all assets share. These are:&lt;br /&gt;
&lt;br /&gt;
 * id - UUID of the asset&lt;br /&gt;
 * name - Name of the asset&lt;br /&gt;
 * description - Description of the asset&lt;br /&gt;
 * creation_date - Timestamp when the asset was created&lt;br /&gt;
 * type - HTTP Content-Type of the asset&lt;br /&gt;
 * sha1 - The SHA-1 hash of the asset data&lt;br /&gt;
 * temporary - Boolean, whether the asset is temporary or not&lt;br /&gt;
&lt;br /&gt;
The methods section is a collection of allowed methods for the asset. The only required method is data, however this method may not be present in the list of returned methods if the client has permission to access an assets metadata but not the data. Each method is a string (such as &amp;quot;data&amp;quot;) that maps to a URL. The URL may exist on the same server as the metadata, but this is not required.&lt;br /&gt;
&lt;br /&gt;
The extra data section is a free-form version of the required fields section. Any fields can be defined, and is most commonly used to add extended data for specific types of assets.&lt;br /&gt;
&lt;br /&gt;
== Data ==&lt;br /&gt;
&lt;br /&gt;
Once the metadata has been retrieved, if a data method exists the asset data can be fetched with a simple HTTP GET on the asset data URL. This allows the actual data to optionally be stored on a simple web server, a content distribution network, a third party storage provider, etc.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
**************** MODIFY ALL THE TEXT ABOVE THIS AREA ********************&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
= See Also =&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Getting Started|Getting Started]]&lt;br /&gt;
* [[OpenSim:Introduction_and_Definitions|What are UGAIM Services?]]&lt;br /&gt;
* [[UserServer|User Server]] &lt;br /&gt;
* [[UserServer/ClientDocs|UserServer Client Documentation]]&lt;br /&gt;
* [[UserServer/DeveloperDocs|UserServer Developer Documentation]]&lt;br /&gt;
* [[GridServer|Grid Server]] &lt;br /&gt;
* [[GridServer/ClientDocs|GridServer Client Documentation]]&lt;br /&gt;
* [[GridServer/DeveloperDocs|GridServer Developer Documentation]]&lt;br /&gt;
* [[AssetServer|Asset Server]]&lt;br /&gt;
* [[AssetServer/ClientDocs|AssetServer Client Documentation]]&lt;br /&gt;
* [[AssetServer/DeveloperDocs|AssetServer Developer Documentation]]&lt;br /&gt;
* [[InventoryServer|Inventory Server]] &lt;br /&gt;
* [[InventoryServer/ClientDocs|InventoryServer Client Documentation]]&lt;br /&gt;
* [[InventoryServer/DeveloperDocs|InventoryServer Developer Documentation]]&lt;br /&gt;
* [[MessagingServer|Messaging Server]] &lt;br /&gt;
* [[MessagingServer/ClientDocs|MessagingServer Client Documentation]]&lt;br /&gt;
* [[MessagingServer/DeveloperDocs|MessagingServer Developer Documentation]]&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Tech Reference|Technical Reference Pages]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Support]]&lt;br /&gt;
[[Category:Tech Reference]]&lt;br /&gt;
[[Category:Help]]&lt;br /&gt;
[[Category:Configuration]]&lt;br /&gt;
[[Category:Getting Started]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Todo]]&lt;br /&gt;
[[Category:Proposal]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Upgrading</id>
		<title>Upgrading</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Upgrading"/>
				<updated>2012-03-04T07:02:40Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Migrating between versions of OpenSimulator without changing database backends ==&lt;br /&gt;
&lt;br /&gt;
'''Unfortunately, this upgrading information is considerably out of date. We recommend that you do not attempt to copy over config files from previous versions of OpenSimulator but instead use the new files and make the changes by hand. However, it is possible to use previous version databases with new versions of OpenSimulator - on startup the data will automatically be migrated to the new formats (so it's best to make a database backup first in case this process goes wrong!).'''&lt;br /&gt;
&lt;br /&gt;
Upgrading OpenSimulator so that your data stays intact is not too difficult. If you’re using MySQL or MSSQL as a backend database with standalone OpenSimulator then all you should have to do is copy over your bin/Regions xml files (and maybe your OpenSim.ini if you don’t want to re-enter your settings manually) to the new OpenSimulator version and start it. &lt;br /&gt;
&lt;br /&gt;
If you're using grid mode then you will also need to copy the 5 xml files in the bin directory that govern the configuration of the UGAIM servers. &lt;br /&gt;
&lt;br /&gt;
Note that estate_settings.xml if present is used for default values for estates, but the saved setttings themselves are in the data base &amp;quot;estate_settings&amp;quot; tables (since r5525).&lt;br /&gt;
&lt;br /&gt;
OpenSimulator contains code to automatically migrate all your data to conform to the newest formats. However, we would always suggest backing up your database beforehand in case something goes wrong during the conversion (e.g. you have a power cut).&lt;br /&gt;
&lt;br /&gt;
Using sqlite (the default on disk database) is just a little more complicated. As well as copying bin/Regions and possibly OpenSim.ini, you also need to copy all the db files (AssetStorage.db, inventorystore.db, OpenSim.db and userprofile.db) to your new installation.&lt;br /&gt;
&lt;br /&gt;
This process should always work between the last numbered versions (e.g. going from 0.5.9 to 0.6.0). It may also work for older versions (e.g. 0.5.8 to 0.6.0) though this is not guaranteed.&lt;br /&gt;
&lt;br /&gt;
SEE Discussion at [[Talk:Upgrading]] for examples of How-To Back Up &amp;amp; Restore your system PRIOR to ANY Migration or Upgrade!&lt;br /&gt;
&lt;br /&gt;
 '''METHOD 1: If Using SQLite in StandAlone Mode'''&lt;br /&gt;
 &lt;br /&gt;
 1. Build the latest version from source (or download the binaries)&lt;br /&gt;
 &lt;br /&gt;
 2. Put this new installation in a new folder&lt;br /&gt;
 &lt;br /&gt;
 3. Copy the following files from the old \bin to the new \bin&lt;br /&gt;
    - All *.db files&lt;br /&gt;
    - The opensim.ini file&lt;br /&gt;
    - The \bin\regions XML files&lt;br /&gt;
    - The \bin\config-include INI files&lt;br /&gt;
    - estate_settings.xml (if it has been amended)&lt;br /&gt;
 &lt;br /&gt;
 4. Launch the new opensim.exe&lt;br /&gt;
&lt;br /&gt;
 '''METHOD 2: If Using MySQL in StandAlone Mode'''&lt;br /&gt;
 &lt;br /&gt;
 1. Build the latest version from source (or download the binaries)&lt;br /&gt;
 &lt;br /&gt;
 2. Put this new installation in a new folder&lt;br /&gt;
 &lt;br /&gt;
 3. Copy the following files from the old \bin to the new \bin&lt;br /&gt;
    - The opensim.ini file&lt;br /&gt;
    - The \bin\regions XML files&lt;br /&gt;
    - The \bin\config-include INI files&lt;br /&gt;
    - estate_settings.xml (if it has been amended)&lt;br /&gt;
 &lt;br /&gt;
 4. Launch the new opensim.exe&lt;br /&gt;
&lt;br /&gt;
 '''METHOD 3: If Using MySQL in Grid Mode'''&lt;br /&gt;
 &lt;br /&gt;
 1. Build the latest version from source (or download the binaries)&lt;br /&gt;
 &lt;br /&gt;
 2. Put this new installation in a new folder&lt;br /&gt;
 &lt;br /&gt;
 3. Copy the following files from the old \bin to the new \bin&lt;br /&gt;
    - The opensim.ini file&lt;br /&gt;
    - The \bin\regions XML files&lt;br /&gt;
    - The 5 XML config files&lt;br /&gt;
    - The \bin\config-include INI files&lt;br /&gt;
    - estate_settings.xml (if it has been amended)&lt;br /&gt;
 &lt;br /&gt;
 4. Launch services in the following order: UGAIM + R where &amp;quot;R&amp;quot; designates the region server (Opensim)&lt;br /&gt;
&lt;br /&gt;
== Migrating databases ==&lt;br /&gt;
&lt;br /&gt;
Since SQLite is our default database, there often comes a time when people outgrow it and want to move on to another database backend (usually MySQL). There is a script on the forge at [http://forge.opensimulator.org/gf/project/sqlite2mysql/] which should be able to do the conversion. If it's out of date then just give the author/s a nudge (or patch it!)&lt;br /&gt;
&lt;br /&gt;
An alternative method is to change to each region (change-region) before backing up their contents to a separate OpenSimulator Region Archive (OAR) for each region. Then change the database backend and then reload the OARs in each region separately. The disadvantage of this is that it's a little laborious if you have many regions.&lt;br /&gt;
&lt;br /&gt;
You can use the &amp;quot;command-script&amp;quot; feature of OpenSim.exe to semi-automate this. E.g., create a file in your &amp;quot;bin&amp;quot; directory, called something like &amp;quot;dobackup&amp;quot;, which contains the necessary commands, for example:&lt;br /&gt;
&lt;br /&gt;
 change-region My Island 1&lt;br /&gt;
 save-oar MI1&lt;br /&gt;
 change-region My Island 2&lt;br /&gt;
 save-oar MI2&lt;br /&gt;
 change-region Another Region&lt;br /&gt;
 save-oar AR&lt;br /&gt;
 change-region root&lt;br /&gt;
&lt;br /&gt;
This can be run from OpenSim.exe by typing &amp;quot;command-script&amp;quot; followed by the name you gave the script (eg &amp;quot;dobackup&amp;quot;). Note that this will overwrite the previous backup of the same name.&lt;br /&gt;
&lt;br /&gt;
Note that using a save and reload via the OAR mechanism would not normally migrate your avatar inventories (you would need to rez everything out to the region, convert the data base, and then derez them again to your inventory).&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Updatelibrary.py</id>
		<title>Updatelibrary.py</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Updatelibrary.py"/>
				<updated>2012-03-04T07:02:30Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A python script for maintaining a server inventory library and associated asset set. See [[Custom Libraries]] for more information.&lt;br /&gt;
&lt;br /&gt;
You can download the current version from [http://www.sonic.net/~rknop/php/vw/updatelibrary.py http://www.sonic.net/~rknop/php/vw/updatelibrary.py]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
# updatelibrary.py Version 1.2 by Rob Knop aka Prospero Frobozz (rknop@pobox.com)&lt;br /&gt;
&lt;br /&gt;
# Written with some reference to genassets.pl by Illuminous Beltran/IBM,&lt;br /&gt;
# as found on the OpenSimulator wiki.&lt;br /&gt;
&lt;br /&gt;
# Copyright 2011 Rob Knop (aka Prospero Frobozz). All rights reserved.&lt;br /&gt;
#&lt;br /&gt;
# Redistribution and use in source and binary forms, with or without&lt;br /&gt;
# modification, are permitted provided that the following conditions are&lt;br /&gt;
# met:&lt;br /&gt;
#&lt;br /&gt;
# 1. Redistributions of source code must retain the above copyright&lt;br /&gt;
# notice, this list of conditions and the following disclaimer.&lt;br /&gt;
&lt;br /&gt;
# 2. Redistributions in binary form must reproduce the above&lt;br /&gt;
# copyright notice, this list of conditions and the following&lt;br /&gt;
# disclaimer in the documentation and/or other materials provided&lt;br /&gt;
# with the distribution.&lt;br /&gt;
#&lt;br /&gt;
# THIS SOFTWARE IS PROVIDED BY ROB KNOP ``AS IS'' AND ANY&lt;br /&gt;
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE&lt;br /&gt;
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ROB KNOP OR&lt;br /&gt;
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
#&lt;br /&gt;
# The views and conclusions contained in the software and documentation&lt;br /&gt;
# are those of the authors and should not be interpreted as representing&lt;br /&gt;
# official policies, either expressed or implied, of Rob Knop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import os, os.path, sys, stat, shutil, re, uuid&lt;br /&gt;
import xml.dom, xml.dom.minidom&lt;br /&gt;
import traceback&lt;br /&gt;
from optparse import OptionParser&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
opensim_library_root_uuid = &amp;quot;00000112-000f-0000-0000-000100bba000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
&lt;br /&gt;
class AssetExistsException(Exception):&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
    def __str__(self, value):&lt;br /&gt;
        return repr(value)&lt;br /&gt;
&lt;br /&gt;
class InventoryException(Exception):&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
    def __str__(self, value):&lt;br /&gt;
        return repr(value)&lt;br /&gt;
&lt;br /&gt;
class NiniException(Exception):&lt;br /&gt;
    def __init__(self, value):&lt;br /&gt;
        self.value = value&lt;br /&gt;
    def __str__(self, value):&lt;br /&gt;
        return repr(value)&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
class NiniSection(object):&lt;br /&gt;
    def __init__(self, sectionname, keyvalues):&lt;br /&gt;
        self.sectionname = sectionname&lt;br /&gt;
        self.keyvalues = keyvalues&lt;br /&gt;
&lt;br /&gt;
    def name(self):&lt;br /&gt;
        return self.sectionname&lt;br /&gt;
&lt;br /&gt;
    def keyvalues(self):&lt;br /&gt;
        return self.keyvalues&lt;br /&gt;
&lt;br /&gt;
    def value(self, key):&lt;br /&gt;
        return self.keyvalues[key]&lt;br /&gt;
&lt;br /&gt;
    def setvalue(self, key, value):&lt;br /&gt;
        self.keyvalues[key] = value&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
&lt;br /&gt;
class NiniThing(object):&lt;br /&gt;
    def __init__(self, keynames, ninitype):&lt;br /&gt;
        self.keynames = keynames&lt;br /&gt;
        self.ninitype = ninitype&lt;br /&gt;
&lt;br /&gt;
    def readXML(self, filename):&lt;br /&gt;
        sections = []&lt;br /&gt;
&lt;br /&gt;
        if not os.path.exists(filename):&lt;br /&gt;
            sys.stderr.write(&amp;quot;WARNING: {0} file {1} doesn't exist. Returning empty list.\n&amp;quot;.&lt;br /&gt;
                             format(self.ninitype, filename))&lt;br /&gt;
            return sections&lt;br /&gt;
&lt;br /&gt;
        xmlblob = xml.dom.minidom.parse(filename)&lt;br /&gt;
        topelem = xmlblob.documentElement&lt;br /&gt;
        if topelem.tagName != &amp;quot;Nini&amp;quot;:&lt;br /&gt;
            raise NiniException(&amp;quot;Error not a Nini file: {0}&amp;quot;.format(filename))&lt;br /&gt;
&lt;br /&gt;
        for sec in topelem.childNodes:&lt;br /&gt;
            if sec.nodeType == xml.dom.Node.ELEMENT_NODE:&lt;br /&gt;
                if sec.tagName != 'Section':&lt;br /&gt;
                    raise NiniException(&amp;quot;Error {0} file: expecting a 'Section', found a {1}&amp;quot;.&lt;br /&gt;
                                        format(self.ninitype), sec.tagName)&lt;br /&gt;
&lt;br /&gt;
                item = NiniSection(sec.getAttribute(&amp;quot;Name&amp;quot;), dict())&lt;br /&gt;
                for keyname in self.keynames:&lt;br /&gt;
                    item.setvalue(keyname, &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
                for seckey in sec.childNodes:&lt;br /&gt;
                    if seckey.nodeType == xml.dom.Node.ELEMENT_NODE:&lt;br /&gt;
                        if seckey.tagName != &amp;quot;Key&amp;quot;:&lt;br /&gt;
                            raise NiniException(&amp;quot;Error reading {0}: expecting a 'Key', found a {1}&amp;quot;.&lt;br /&gt;
                                                format(self.ninitype, seckey.tagName) )&lt;br /&gt;
                        item.setvalue(seckey.getAttribute(&amp;quot;Name&amp;quot;), seckey.getAttribute(&amp;quot;Value&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
                sections.append(item)&lt;br /&gt;
&lt;br /&gt;
        xmlblob.unlink()&lt;br /&gt;
&lt;br /&gt;
        return sections&lt;br /&gt;
&lt;br /&gt;
    def writeXML(self, filename, sections):&lt;br /&gt;
        ofh = open(filename, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        ofh.write(&amp;quot;&amp;lt;Nini&amp;gt;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        for item in sections:&lt;br /&gt;
            ofh.write(&amp;quot;  &amp;lt;Section Name=\&amp;quot;{0}\&amp;quot;&amp;gt;\n&amp;quot;.format(item.name()))&lt;br /&gt;
            for keyname in self.keynames:&lt;br /&gt;
                ofh.write(&amp;quot;    &amp;lt;Key Name=\&amp;quot;{0}\&amp;quot; Value=\&amp;quot;{1}\&amp;quot; /&amp;gt;\n&amp;quot;.format(keyname, item.value(keyname)))&lt;br /&gt;
            ofh.write(&amp;quot;  &amp;lt;/Section&amp;gt;\n\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        ofh.write(&amp;quot;&amp;lt;/Nini&amp;gt;\n&amp;quot;)&lt;br /&gt;
        ofh.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
&lt;br /&gt;
class AssetSet(NiniThing):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        super(AssetSet,self).__init__( [ &amp;quot;assetID&amp;quot;,&lt;br /&gt;
                                          &amp;quot;name&amp;quot;,&lt;br /&gt;
                                          &amp;quot;assetType&amp;quot;,&lt;br /&gt;
                                          &amp;quot;inventoryType&amp;quot;,&lt;br /&gt;
                                          &amp;quot;fileName&amp;quot;&lt;br /&gt;
                                          ],&lt;br /&gt;
                                        &amp;quot;Asset Set&amp;quot; )&lt;br /&gt;
        self.assets = []&lt;br /&gt;
&lt;br /&gt;
    def __iter__(self):&lt;br /&gt;
        return self.assets.__iter__()&lt;br /&gt;
&lt;br /&gt;
    def addasset(self, uuid, name, asstype, invtype, filename):&lt;br /&gt;
        ass = NiniSection(filename,&lt;br /&gt;
                          { 'assetID': uuid,&lt;br /&gt;
                            'name': name,&lt;br /&gt;
                            'assetType': asstype,&lt;br /&gt;
                            'inventoryType': invtype,&lt;br /&gt;
                            'fileName': filename }&lt;br /&gt;
                          )&lt;br /&gt;
        self.assets.append(ass)&lt;br /&gt;
        return ass&lt;br /&gt;
&lt;br /&gt;
    def findbyfilename(self, filename):&lt;br /&gt;
        for ass in self.assets:&lt;br /&gt;
            if ass.value('fileName') == filename:&lt;br /&gt;
                return ass&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    def findbyuuid(self, uuid):&lt;br /&gt;
        for ass in self.assets:&lt;br /&gt;
            if ass.value('assetID') == uuid:&lt;br /&gt;
                return ass&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    def readXML(self, filename):&lt;br /&gt;
        self.assets = super(AssetSet, self).readXML(filename)&lt;br /&gt;
&lt;br /&gt;
    def writeXML(self, filename):&lt;br /&gt;
        super(AssetSet, self).writeXML(filename, self.assets)&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
&lt;br /&gt;
class InvFolders(NiniThing):&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        super(InvFolders, self).__init__( [ &amp;quot;folderID&amp;quot;,&lt;br /&gt;
                                            &amp;quot;parentFolderID&amp;quot;,&lt;br /&gt;
                                            &amp;quot;name&amp;quot;,&lt;br /&gt;
                                            &amp;quot;type&amp;quot;&lt;br /&gt;
                                            ],&lt;br /&gt;
                                          &amp;quot;Inventory Folders&amp;quot; )&lt;br /&gt;
        self.folders = []&lt;br /&gt;
&lt;br /&gt;
    def __iter__(self):&lt;br /&gt;
        return self.folders.__iter__()&lt;br /&gt;
&lt;br /&gt;
    def findbyuuid(self, uuid):&lt;br /&gt;
        for folder in self.folders:&lt;br /&gt;
            if folder.value('folderID') == uuid:&lt;br /&gt;
                return folder&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    # NOTE -- findbyname only finds the first folder of&lt;br /&gt;
    #  the given name inside the given parent folder.&lt;br /&gt;
    #  It is possible, if perverse, to have more than&lt;br /&gt;
    #  one folder with the same name...&lt;br /&gt;
&lt;br /&gt;
    def findbyname(self, name, parentid):&lt;br /&gt;
        for folder in self.folders:&lt;br /&gt;
            if ( ( folder.value('parentFolderID') == parentid ) and&lt;br /&gt;
                 ( folder.value('name') == name ) ):&lt;br /&gt;
                return folder&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    def ensureexists(self, path, name, parentid):&lt;br /&gt;
        if ( ( parentid != opensim_library_root_uuid ) and&lt;br /&gt;
             ( not self.findbyuuid(parentid) ) ):&lt;br /&gt;
            raise InventoryException(&amp;quot;No such parent folder exists: &amp;quot; + str(parentid))&lt;br /&gt;
&lt;br /&gt;
        folder = self.findbyname(name, parentid)&lt;br /&gt;
        if folder != None:&lt;br /&gt;
            return folder&lt;br /&gt;
&lt;br /&gt;
        # HACK ALERT -- I want this &amp;quot;type 6&amp;quot; to become whatever the right&lt;br /&gt;
        #  type is for no icon&lt;br /&gt;
        # http://opensimulator.org/wiki/AssetServer/DeveloperDocs doesn't tell me enough&lt;br /&gt;
&lt;br /&gt;
        folder = NiniSection(path,&lt;br /&gt;
                             { 'folderID' : uuid.uuid4(),&lt;br /&gt;
                               'parentFolderID' : parentid,&lt;br /&gt;
                               'name' : name,&lt;br /&gt;
                               'type' : -1&lt;br /&gt;
                               }&lt;br /&gt;
                             )&lt;br /&gt;
        self.folders.append(folder)&lt;br /&gt;
&lt;br /&gt;
        return folder&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    def readXML(self, filename):&lt;br /&gt;
        self.folders = super(InvFolders, self).readXML(filename)&lt;br /&gt;
&lt;br /&gt;
    def writeXML(self, filename):&lt;br /&gt;
        super(InvFolders, self).writeXML(filename, self.folders)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
&lt;br /&gt;
class InvItems(NiniThing):&lt;br /&gt;
    def __init__(self, folders):&lt;br /&gt;
        super(InvItems, self).__init__( [ &amp;quot;inventoryID&amp;quot;,&lt;br /&gt;
                                          &amp;quot;assetID&amp;quot;,&lt;br /&gt;
                                          &amp;quot;folderID&amp;quot;,&lt;br /&gt;
                                          &amp;quot;name&amp;quot;,&lt;br /&gt;
                                          &amp;quot;description&amp;quot;,&lt;br /&gt;
                                          &amp;quot;assetType&amp;quot;,&lt;br /&gt;
                                          &amp;quot;inventoryType&amp;quot;,&lt;br /&gt;
                                          &amp;quot;currentPermissions&amp;quot;,&lt;br /&gt;
                                          &amp;quot;nextPermissions&amp;quot;,&lt;br /&gt;
                                          &amp;quot;everyonePermissions&amp;quot;,&lt;br /&gt;
                                          &amp;quot;basePermissions&amp;quot;&lt;br /&gt;
                                          ],&lt;br /&gt;
                                        &amp;quot;Inventory Items&amp;quot; )&lt;br /&gt;
        self.folders = folders&lt;br /&gt;
        self.items = []&lt;br /&gt;
&lt;br /&gt;
    def findbyinvid(self, uuid):&lt;br /&gt;
        for item in self.items:&lt;br /&gt;
            if item.value('inventoryID') == uuid:&lt;br /&gt;
                return item&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    # Note -- findbyname only finds the first one of that name&lt;br /&gt;
    #  in that folder.  You can have more than one thing of&lt;br /&gt;
    #  the same name in a given folder....&lt;br /&gt;
&lt;br /&gt;
    def findbyname(self, name, folderid):&lt;br /&gt;
        for item in self.items:&lt;br /&gt;
            if ( ( item.value('name') == name ) and&lt;br /&gt;
                 ( item.value('folderID') == folderid) ):&lt;br /&gt;
               return item&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    def ensureexists(self, path, name, assetid, assettype, invtype, folderid):&lt;br /&gt;
        if ( ( folderid != opensim_library_root_uuid) and&lt;br /&gt;
             ( not self.folders.findbyuuid(folderid) ) ):&lt;br /&gt;
            raise InventoryException(&amp;quot;No such folder for item: &amp;quot; + str(folderid))&lt;br /&gt;
&lt;br /&gt;
        for item in self.items:&lt;br /&gt;
            if ( ( item.value('assetID') == assetid ) and&lt;br /&gt;
                 ( item.value('folderID') == folderid ) and&lt;br /&gt;
                 ( item.value('name') == name ) ):&lt;br /&gt;
                return item&lt;br /&gt;
&lt;br /&gt;
        item = NiniSection(path,&lt;br /&gt;
                           { 'inventoryID' : uuid.uuid4(),&lt;br /&gt;
                             'assetID' : assetid,&lt;br /&gt;
                             'folderID' : folderid,&lt;br /&gt;
                             'name' : name,&lt;br /&gt;
                             'description' : &amp;quot;&amp;quot;,&lt;br /&gt;
                             'assetType' : assettype,&lt;br /&gt;
                             'inventoryType' : invtype,&lt;br /&gt;
                             'currentPermissions' : &amp;quot;2147483647&amp;quot;,&lt;br /&gt;
                             'nextPermissions' : &amp;quot;2147483647&amp;quot;,&lt;br /&gt;
                             'everyonePermissions' : &amp;quot;2147483647&amp;quot;,&lt;br /&gt;
                             'basePermissions' : &amp;quot;2147483647&amp;quot;&lt;br /&gt;
                             }&lt;br /&gt;
                           )&lt;br /&gt;
        self.items.append(item)&lt;br /&gt;
&lt;br /&gt;
        return item&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    def readXML(self, filename):&lt;br /&gt;
        self.items = super(InvItems, self).readXML(filename)&lt;br /&gt;
&lt;br /&gt;
    def writeXML(self, filename):&lt;br /&gt;
        super(InvItems, self).writeXML(filename, self.items)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
&lt;br /&gt;
class LibraryGenerator(object):&lt;br /&gt;
    def __init__(self, libname, shortname):&lt;br /&gt;
        self.libname = libname&lt;br /&gt;
        self.shortname = shortname&lt;br /&gt;
        self.asset_dir = os.path.abspath(os.path.join(&amp;quot;assets&amp;quot;, &amp;quot;{0}AssetSet&amp;quot;.format(shortname)))&lt;br /&gt;
        self.inv_dir = os.path.abspath(os.path.join(&amp;quot;inventory&amp;quot;, shortname))&lt;br /&gt;
        self.asset_xmlfile = &amp;quot;{0}AssetSet.xml&amp;quot;.format(shortname)&lt;br /&gt;
        self.folders_xmlfile = &amp;quot;{0}InvFolders.xml&amp;quot;.format(shortname)&lt;br /&gt;
        self.items_xmlfile = &amp;quot;{0}InvItems.xml&amp;quot;.format(shortname)&lt;br /&gt;
        self.skips = []&lt;br /&gt;
        self.wipeinv = False&lt;br /&gt;
&lt;br /&gt;
        self.matchj2k = re.compile(&amp;quot;\.j2k$&amp;quot;)&lt;br /&gt;
        self.matchtxt = re.compile(&amp;quot;\.txt$&amp;quot;)&lt;br /&gt;
        self.matchlsl = re.compile(&amp;quot;\.lsl$&amp;quot;)&lt;br /&gt;
        self.endsinslash = re.compile(&amp;quot;/$&amp;quot;)&lt;br /&gt;
        self.commentline = re.compile(&amp;quot;^\s*#&amp;quot;)&lt;br /&gt;
        self.blankline = re.compile(&amp;quot;^\s*$&amp;quot;)&lt;br /&gt;
        self.assetlistline = re.compile(&amp;quot;^\s*([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\s*(\d+)\s*(\d+)\s*(.*\S)\s*$&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def set_skip_patterns(self, skips):&lt;br /&gt;
        self.skips = skips&lt;br /&gt;
&lt;br /&gt;
    def set_asset_dir(self, asset_dir):&lt;br /&gt;
        self.asset_dir = asset_dir&lt;br /&gt;
&lt;br /&gt;
    def set_inv_dir(self, inv_dir):&lt;br /&gt;
        self.inv_dir = inv_dir&lt;br /&gt;
&lt;br /&gt;
    def set_asset_xmlfile(self, asset_xmlfile):&lt;br /&gt;
        self.asset_xmlfile = asset_xmlfile&lt;br /&gt;
&lt;br /&gt;
    def set_folders_xmlfile(self, folders_xmlfile):&lt;br /&gt;
        self.folders_xmlfile = folders_xmlfile&lt;br /&gt;
&lt;br /&gt;
    def set_items_xmlfile(self, items_xmlfile):&lt;br /&gt;
        self.items_xmlfile = items_xmlfile&lt;br /&gt;
&lt;br /&gt;
    def wipe_inventory(self):&lt;br /&gt;
        self.wipeinv = True&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
    def run(self):&lt;br /&gt;
        # Create our storage for things, and read any current&lt;br /&gt;
        #  XML files if they exist&lt;br /&gt;
&lt;br /&gt;
        self.assets = AssetSet()&lt;br /&gt;
        self.assets.readXML(os.path.join(self.asset_dir, self.asset_xmlfile))&lt;br /&gt;
&lt;br /&gt;
        self.folders = InvFolders()&lt;br /&gt;
        if not self.wipeinv:&lt;br /&gt;
            self.folders.readXML(os.path.join(self.inv_dir, self.folders_xmlfile))&lt;br /&gt;
&lt;br /&gt;
        self.items = InvItems(self.folders)&lt;br /&gt;
        if not self.wipeinv:&lt;br /&gt;
            self.items.readXML(os.path.join(self.inv_dir, self.items_xmlfile))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        # Run the recursive directory processor thingie&lt;br /&gt;
&lt;br /&gt;
        origdir = os.getcwd()&lt;br /&gt;
        os.chdir(self.asset_dir)&lt;br /&gt;
        self.process_dir(opensim_library_root_uuid, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
        os.chdir(origdir)&lt;br /&gt;
&lt;br /&gt;
        # Write the XML files, saving copies of the old ones out of paranoia&lt;br /&gt;
&lt;br /&gt;
        if os.path.exists(os.path.join(self.asset_dir, self.asset_xmlfile)):&lt;br /&gt;
            shutil.copy2(os.path.join(self.asset_dir, self.asset_xmlfile),&lt;br /&gt;
                         os.path.join(self.asset_dir, &amp;quot;{0}-old&amp;quot;.format(self.asset_xmlfile)))&lt;br /&gt;
&lt;br /&gt;
        self.assets.writeXML(os.path.join(self.asset_dir, self.asset_xmlfile))&lt;br /&gt;
&lt;br /&gt;
        if os.path.exists(os.path.join(self.inv_dir, self.folders_xmlfile)):&lt;br /&gt;
            shutil.copy2(os.path.join(self.inv_dir, self.folders_xmlfile),&lt;br /&gt;
                         os.path.join(self.inv_dir, &amp;quot;{0}-old&amp;quot;.format(self.folders_xmlfile)))&lt;br /&gt;
&lt;br /&gt;
        self.folders.writeXML(os.path.join(self.inv_dir, self.folders_xmlfile))&lt;br /&gt;
&lt;br /&gt;
        if os.path.exists(os.path.join(self.inv_dir, self.items_xmlfile)):&lt;br /&gt;
            shutil.copy2(os.path.join(self.inv_dir, self.items_xmlfile),&lt;br /&gt;
                         os.path.join(self.inv_dir, &amp;quot;{0}-old&amp;quot;.format(self.items_xmlfile)))&lt;br /&gt;
&lt;br /&gt;
        self.items.writeXML(os.path.join(self.inv_dir, self.items_xmlfile))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    def process_dir(self, parent_uuid, my_name, path):&lt;br /&gt;
        origdir = os.getcwd()&lt;br /&gt;
        sys.stderr.write(&amp;quot;Processing directory: {0} \n&amp;quot;.format(os.path.join(self.asset_dir, path)))&lt;br /&gt;
        if my_name != &amp;quot;&amp;quot;:&lt;br /&gt;
            os.chdir(my_name)&lt;br /&gt;
        else:&lt;br /&gt;
            my_name = self.libname&lt;br /&gt;
            &lt;br /&gt;
        # Create the folder XML blob if necessary&lt;br /&gt;
&lt;br /&gt;
        if (path == &amp;quot;&amp;quot;):&lt;br /&gt;
            curfolder = self.folders.ensureexists(self.libname, my_name, parent_uuid)&lt;br /&gt;
        else:&lt;br /&gt;
            curfolder = self.folders.ensureexists(path, my_name, parent_uuid)&lt;br /&gt;
        my_uuid = curfolder.value(&amp;quot;folderID&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
        # Walk through this directory and process everything in it&lt;br /&gt;
&lt;br /&gt;
        for fname in os.listdir(&amp;quot;.&amp;quot;):&lt;br /&gt;
            statinfo = os.stat(fname)&lt;br /&gt;
&lt;br /&gt;
            doskip = False&lt;br /&gt;
            for skip in self.skips:&lt;br /&gt;
                if re.search(skip, fname):&lt;br /&gt;
                    doskip = True&lt;br /&gt;
            if doskip: continue&lt;br /&gt;
&lt;br /&gt;
            if stat.S_ISDIR(statinfo.st_mode):&lt;br /&gt;
                self.process_dir(my_uuid, fname, os.path.join(path, fname) )&lt;br /&gt;
                continue&lt;br /&gt;
&lt;br /&gt;
            fpath = os.path.join(path, fname)&lt;br /&gt;
            &lt;br /&gt;
            if fpath == self.asset_xmlfile:&lt;br /&gt;
                # Ignore the XML file we're working on!&lt;br /&gt;
                continue&lt;br /&gt;
&lt;br /&gt;
            elif fname == &amp;quot;addassets.lis&amp;quot;:&lt;br /&gt;
                # Ignore the file specifing pre-existing assets to add&lt;br /&gt;
                #   to inventory&lt;br /&gt;
                continue&lt;br /&gt;
&lt;br /&gt;
            elif self.matchj2k.search(fname):&lt;br /&gt;
                asset_type = 0&lt;br /&gt;
            elif self.matchtxt.search(fname):&lt;br /&gt;
                asset_type = 7&lt;br /&gt;
            elif self.matchlsl.search(fname):&lt;br /&gt;
                asset_type = 10&lt;br /&gt;
            else:&lt;br /&gt;
                sys.stderr.write(&amp;quot;WARNING: Skipping unrecognized file &amp;quot; +&lt;br /&gt;
                                 fname + &amp;quot;\n&amp;quot;)&lt;br /&gt;
                continue&lt;br /&gt;
&lt;br /&gt;
            # Strip the extension for aesthetic purposes&lt;br /&gt;
            #  (Right now, that must be .txt, .lsl, or .j2k, so&lt;br /&gt;
            #   we can assume it's 4 characters long.)&lt;br /&gt;
&lt;br /&gt;
            name = fname[0:-4]&lt;br /&gt;
&lt;br /&gt;
            # Create the asset XML blob if necessary&lt;br /&gt;
&lt;br /&gt;
            ass = self.assets.findbyfilename(fpath)&lt;br /&gt;
            if ass == None:&lt;br /&gt;
                ass = self.assets.addasset(uuid.uuid4(), name, asset_type,&lt;br /&gt;
                                           asset_type, os.path.join(path, fname))&lt;br /&gt;
&lt;br /&gt;
            # Create the inventory XML blob if necessary&lt;br /&gt;
&lt;br /&gt;
            self.items.ensureexists(os.path.join(path, name), name, ass.value('assetID'), &lt;br /&gt;
                                    asset_type, asset_type, my_uuid)&lt;br /&gt;
&lt;br /&gt;
        # Add pre-existing assets (to inventory only) from file addassets.lis&lt;br /&gt;
&lt;br /&gt;
        if os.path.exists(&amp;quot;addassets.lis&amp;quot;):&lt;br /&gt;
            asslis = open(&amp;quot;addassets.lis&amp;quot;)&lt;br /&gt;
            for line in asslis:&lt;br /&gt;
                line.rstrip(&amp;quot;\r\n&amp;quot;)&lt;br /&gt;
                if self.blankline.search(line) or self.commentline.search(line):&lt;br /&gt;
                    continue&lt;br /&gt;
                match = self.assetlistline.search(line)&lt;br /&gt;
                if match == None:&lt;br /&gt;
                    sys.stderr.write(&amp;quot;WARNING : error parsing line in {0}\n&amp;quot;.&lt;br /&gt;
                                     format(os.path.join(path, &amp;quot;addassets.lis&amp;quot;)))&lt;br /&gt;
                    sys.stderr.write(&amp;quot;Offending line: \&amp;quot;{0}\&amp;quot;\n&amp;quot;.format(line))&lt;br /&gt;
                    continue&lt;br /&gt;
                self.items.ensureexists(os.path.join(path, match.group(4)), match.group(4), &lt;br /&gt;
                                        match.group(1), match.group(2), match.group(3), my_uuid)&lt;br /&gt;
            asslis.close()&lt;br /&gt;
&lt;br /&gt;
        # We're done; restore the CWD to where we started and return&lt;br /&gt;
&lt;br /&gt;
        os.chdir(origdir)&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
    usage = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    updatelibrary.py -n &amp;quot;Library Name&amp;quot; -s ShortLibName [options]&lt;br /&gt;
&lt;br /&gt;
  Goes through your asset set directory.  (See below for how to specify&lt;br /&gt;
  it, and what the default is.)  Finds all .j2k images, .txt files, and&lt;br /&gt;
  .lsl files in that directory and all subdirectories.  Generates an&lt;br /&gt;
  Asset Set XML file for all of those files.  Also generates library&lt;br /&gt;
  Inventory Folder and Inventory Item XML files for all of those assets,&lt;br /&gt;
  organized in a folder hierarchy that matches the directory hierarchy.&lt;br /&gt;
&lt;br /&gt;
  Additional assets that already exist in the grid's asset store may be&lt;br /&gt;
  specified in each directory in a file named &amp;quot;addassets.lis&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
  For more documentation, see http://opensimulator.org/wiki/Custom_Libraries&lt;br /&gt;
&lt;br /&gt;
  When done, you will need to manually add your asset directory to the&lt;br /&gt;
  OpenSimulator AssetSets.xml file (in &amp;quot;assets&amp;quot; under the OpenSimulator bin&lt;br /&gt;
  directory), and your inventory XML files to the Libraries.xml file (in&lt;br /&gt;
  &amp;quot;inventory&amp;quot; under the OpenSimulator bin directory).&lt;br /&gt;
&lt;br /&gt;
  Written 2011 by Rob Knop aka Prospero Frobozz.  I've only used this on&lt;br /&gt;
  Linux; I have no idea how well it will function on Windows.  If you're&lt;br /&gt;
  on Windows, I recommend http://www.ubuntu.com&lt;br /&gt;
&lt;br /&gt;
  Run updatelibrary.py --help for option listings&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    parser = OptionParser(usage = usage)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;-n&amp;quot;, &amp;quot;--lib-name&amp;quot;, action=&amp;quot;store&amp;quot;, type=&amp;quot;string&amp;quot;,&lt;br /&gt;
                      dest=&amp;quot;libname&amp;quot;, default=&amp;quot;New Library&amp;quot;,&lt;br /&gt;
                      help=&amp;quot;The name of your library as it appears in the viewer&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;-s&amp;quot;, &amp;quot;--short-name&amp;quot;, action=&amp;quot;store&amp;quot;, type=&amp;quot;string&amp;quot;,&lt;br /&gt;
                      dest=&amp;quot;shortname&amp;quot;, default=&amp;quot;NewLibrary&amp;quot;,&lt;br /&gt;
                      help=&amp;quot;A name without spaces of your library for filename purposes.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;-w&amp;quot;, &amp;quot;--wipe-inventory&amp;quot;, action=&amp;quot;store_true&amp;quot;, default=False,&lt;br /&gt;
                      dest=&amp;quot;wipeinv&amp;quot;,&lt;br /&gt;
                      help=&amp;quot;Wipe &amp;amp; start over the inventory? (Safe! Use this if you've removed things.)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;-a&amp;quot;, &amp;quot;--asset-dir&amp;quot;, action=&amp;quot;store&amp;quot;,&lt;br /&gt;
                      type=&amp;quot;string&amp;quot;, dest=&amp;quot;asset_dir&amp;quot;,&lt;br /&gt;
                      default=None,&lt;br /&gt;
                      help=&amp;quot;Directory where your .j2k, .txt, and .lsl files are, and which will &amp;quot;+&lt;br /&gt;
                      &amp;quot;serve as the Assset Set in the OpenSimulator library.  Defaults to assets/[shortname]AssetSet&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;-i&amp;quot;, &amp;quot;--inv-dir&amp;quot;, action=&amp;quot;store&amp;quot;, type=&amp;quot;string&amp;quot;,&lt;br /&gt;
                      dest=&amp;quot;inv_dir&amp;quot;, default=None,&lt;br /&gt;
                      help=&amp;quot;Directory in which to put the inventory XML files.  Defaults to &amp;quot;+&lt;br /&gt;
                      &amp;quot;inventory/[shortname]&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;&amp;quot;, &amp;quot;--asset-xmlfile&amp;quot;, action=&amp;quot;store&amp;quot;,&lt;br /&gt;
                      type=&amp;quot;string&amp;quot;, dest=&amp;quot;asset_xmlfile&amp;quot;, default=None,&lt;br /&gt;
                      help=&amp;quot;Name of Asset XML file.  Defaults to [shortname]AssetSet.xml&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;&amp;quot;, &amp;quot;--folders-xmlfile&amp;quot;, action=&amp;quot;store&amp;quot;,&lt;br /&gt;
                      type=&amp;quot;string&amp;quot;, dest=&amp;quot;folders_xmlfile&amp;quot;, default=None,&lt;br /&gt;
                      help=&amp;quot;Name of Inventory Folders XML file.  Defaults to [shortname]InvFolders.xml&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;&amp;quot;, &amp;quot;--items-xmlfile&amp;quot;, action=&amp;quot;store&amp;quot;,&lt;br /&gt;
                      type=&amp;quot;string&amp;quot;, dest=&amp;quot;items_xmlfile&amp;quot;, default=None,&lt;br /&gt;
                      help=&amp;quot;Name of Inventory Folders XML file.  Defaults to [shortname]InvItems.xml&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    parser.add_option(&amp;quot;&amp;quot;, &amp;quot;--skip&amp;quot;, action=&amp;quot;append&amp;quot;, type=&amp;quot;string&amp;quot;,&lt;br /&gt;
                      dest=&amp;quot;skip_patterns&amp;quot;,&lt;br /&gt;
                      default=['^\.hg$', '^\.git$', '^\.svn$'],&lt;br /&gt;
                      help=&amp;quot;Regex for filenames to not process&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if len(sys.argv) &amp;lt; 2:&lt;br /&gt;
        parser.print_usage()&lt;br /&gt;
        sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
    options, args = parser.parse_args()&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        generator = LibraryGenerator(options.libname, options.shortname)&lt;br /&gt;
&lt;br /&gt;
        if options.skip_patterns:&lt;br /&gt;
            generator.set_skip_patterns(options.skip_patterns)&lt;br /&gt;
&lt;br /&gt;
        if options.asset_dir != None:&lt;br /&gt;
            generator.set_asset_dir(options.asset_dir)&lt;br /&gt;
&lt;br /&gt;
        if options.inv_dir != None:&lt;br /&gt;
            generator.set_inv_dir(options.inv_dir)&lt;br /&gt;
&lt;br /&gt;
        if options.asset_xmlfile != None:&lt;br /&gt;
            generator.set_asset_xmlfile(options.asset_xmlfile)&lt;br /&gt;
&lt;br /&gt;
        if options.folders_xmlfile != None:&lt;br /&gt;
            generator.set_folders_xmlfile(options.folders_xmlfile)&lt;br /&gt;
&lt;br /&gt;
        if options.items_xmlfile != None:&lt;br /&gt;
            generator.set_items_xmlfile(options.items_xmlfile)&lt;br /&gt;
&lt;br /&gt;
        if options.wipeinv:&lt;br /&gt;
            generator.wipe_inventory()&lt;br /&gt;
&lt;br /&gt;
        generator.run()&lt;br /&gt;
&lt;br /&gt;
    except Exception:&lt;br /&gt;
        print &amp;quot;FAIL&amp;quot;&lt;br /&gt;
        traceback.print_exc()&lt;br /&gt;
        sys.exit(20)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# **********************************************************************&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    sys.exit(main())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/UnofficialDebPackages</id>
		<title>UnofficialDebPackages</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/UnofficialDebPackages"/>
				<updated>2012-03-04T07:02:20Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial .deb (i386) packages ==&lt;br /&gt;
&lt;br /&gt;
Currently tested with:&lt;br /&gt;
&lt;br /&gt;
    * Debian lenny&lt;br /&gt;
    * Ubuntu Hardy (8.04)&lt;br /&gt;
    * Ubuntu Intrepid (8.10)&lt;br /&gt;
    * Ubuntu Jaunty (9.04) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These are packages I (coyled) created and use to run an assortment of regions in OSGrid (though there's nothing OSGrid-specific in these packages). You're welcome to use, but please back up your OpenSim.ini, *.xml, *.db, and other important files before installing, just in case. But I use these packages on a regular basis, and they work fine for me.&lt;br /&gt;
&lt;br /&gt;
Here you'll find repositories of three different flavors:&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;releases&amp;quot;&lt;br /&gt;
        -- official versioned releases (e.g. 0.6.3)&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;testing&amp;quot;&lt;br /&gt;
        -- the SVN revision number which is &amp;quot;recommended&amp;quot; for OSGrid&lt;br /&gt;
           region admins each week during the OpenSimulator developer office&lt;br /&gt;
           hours on Wright Plaza&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;unstable&amp;quot;&lt;br /&gt;
        -- an SVN revision number close to HEAD, usually no more than&lt;br /&gt;
           a couple days old&lt;br /&gt;
        -- this may contain untested changes and/or breakage&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
For Debian users, depending on which repository you choose above, add one of:&lt;br /&gt;
&lt;br /&gt;
    deb http://pkg.knifejaw.com/debian opensim releases modules&lt;br /&gt;
or:&lt;br /&gt;
    deb http://pkg.knifejaw.com/debian opensim testing modules&lt;br /&gt;
or:&lt;br /&gt;
    deb http://pkg.knifejaw.com/debian opensim unstable modules&lt;br /&gt;
&lt;br /&gt;
to your /etc/apt/sources.list .&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
For Ubuntu users, depending on which repository you choose above, add one of:&lt;br /&gt;
&lt;br /&gt;
    deb http://pkg.knifejaw.com/ubuntu opensim releases modules&lt;br /&gt;
or:&lt;br /&gt;
    deb http://pkg.knifejaw.com/ubuntu opensim testing modules&lt;br /&gt;
or:&lt;br /&gt;
    deb http://pkg.knifejaw.com/ubuntu opensim unstable modules&lt;br /&gt;
&lt;br /&gt;
to your /etc/apt/sources.list .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run:&lt;br /&gt;
&lt;br /&gt;
   # apt-get update&lt;br /&gt;
   # apt-get install opensimulator&lt;br /&gt;
&lt;br /&gt;
OpenSimulator will be installed in /usr/lib/opensim , logs will appear in /var/log/opensim , and it'll create an opensim user &amp;amp; group. It doesn't install any start/stop scripts, as people tend to have different preferences on how to do that.&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Universal_Time_in_OpenSim</id>
		<title>Universal Time in OpenSim</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Universal_Time_in_OpenSim"/>
				<updated>2012-03-04T07:02:00Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenSimulator Standard Time ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OpenSimulator is based on [[UTC]] (Coordinated Universal Time) and not SLT (Second Life Time) which is based on PST (Pacific Standard Time). Due to the very nature of OpenSimulator being a metaverse, UTC was a natural choice due to its use throughout the Earth as the standard starting point for all timezones. Going forward it will be much easier to plan events and use standard toolsets in OpenSimulator and any metaverses based on it.&lt;br /&gt;
&lt;br /&gt;
[[Category:Standards]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/UXSimStatus</id>
		<title>UXSimStatus</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/UXSimStatus"/>
				<updated>2012-03-04T07:01:49Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As of OpenSimulator svn 9529 the xtended stats reporting will return a jsonp&lt;br /&gt;
callback to allow popular javascript toolkits to use the returned data to&lt;br /&gt;
create ajax monitoring applications in the browser. This is an advantage&lt;br /&gt;
because after the page is loaded, the browser will interact directly with&lt;br /&gt;
the region, eliminating traffic through the website (polling the region and&lt;br /&gt;
servicing the browser). It also allows the creation of mashups to create&lt;br /&gt;
mini-monitor apps in other pages.&lt;br /&gt;
&lt;br /&gt;
To enable your stats reporting, set the following in your OpenSim.ini...&lt;br /&gt;
&lt;br /&gt;
    ; Simulator Stats URI&lt;br /&gt;
    ; Enable JSON simulator data by setting a URI name (case sensitive)&lt;br /&gt;
    Stats_URI = &amp;quot;jsonSimStats&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...the URI can be anything you want, and is case sensitive. You can query&lt;br /&gt;
the URI directly to return a json string to use in php, python, java, etc.&lt;br /&gt;
or you may use one of the popular javascript toolkits to have OpenSimulator&lt;br /&gt;
generate a callback for jsonp. The json serialization carries the following&lt;br /&gt;
data...&lt;br /&gt;
&lt;br /&gt;
  {&amp;quot;AssetsInCache&amp;quot;:5.0,&amp;quot;TimeAfterCacheMiss&amp;quot;:0.0,&amp;quot;BlockedMissingTextureRequests&amp;quot;:0.0,&amp;quot;AssetServiceRequestFailures&amp;quot;:0.0,&lt;br /&gt;
 &amp;quot;abnormalClientThreadTerminations&amp;quot;:0.0,&amp;quot;InventoryServiceRetrievalFailures&amp;quot;:0.0,&amp;quot;Dilatn&amp;quot;:0.967380821704865,&amp;quot;SimFPS&amp;quot;:55.0,&lt;br /&gt;
 &amp;quot;PhyFPS&amp;quot;:47.1628913879395,&amp;quot;AgntUp&amp;quot;:0.0,&amp;quot;RootAg&amp;quot;:0.0,&amp;quot;ChldAg&amp;quot;:0.0,&amp;quot;Prims&amp;quot;:0.0,&amp;quot;AtvPrm&amp;quot;:0.0,&amp;quot;AtvScr&amp;quot;:0.0,&amp;quot;ScrLPS&amp;quot;:0.0,&lt;br /&gt;
 &amp;quot;PktsIn&amp;quot;:0.0,&amp;quot;PktOut&amp;quot;:0.0,&amp;quot;PendDl&amp;quot;:0.0,&amp;quot;PendUl&amp;quot;:0.0,&amp;quot;UnackB&amp;quot;:0.0,&amp;quot;TotlFt&amp;quot;:0.0,&amp;quot;NetFt&amp;quot;:0.0,&amp;quot;PhysFt&amp;quot;:0.0,&amp;quot;OthrFt&amp;quot;:0.0,&lt;br /&gt;
 &amp;quot;AgntFt&amp;quot;:0.0,&amp;quot;ImgsFt&amp;quot;:0.0,&amp;quot;Memory&amp;quot;:&amp;quot;8&amp;quot;,&amp;quot;Uptime&amp;quot;:&amp;quot;05:12:19.0365590&amp;quot;,&amp;quot;Version&amp;quot;:&amp;quot;OpenSimulator Server  0.6.4.9533 &amp;quot;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;JSON Test&amp;lt;/title&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;http://ascent.bluewallgroup.com/jquery-1.3.2.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;http://ascent.bluewallgroup.com/timer.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://www.google.com/jsapi&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  SimFPS = 0;&lt;br /&gt;
  PhyFPS = 0;&lt;br /&gt;
  Memory = 0;&lt;br /&gt;
  RootAg = 0;&lt;br /&gt;
  ChldAg = 0;&lt;br /&gt;
  Uptime = &amp;quot;&amp;quot;;&lt;br /&gt;
  Version = &amp;quot;&amp;quot;;&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  $.timer(15000, function(timer) {&lt;br /&gt;
  $.getJSON(&amp;quot;http://ascent.bluewallgroup.com:9300/jsonSimStats/?callback=?&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
  function(data){&lt;br /&gt;
&lt;br /&gt;
      SimFPS = Math.round(data.SimFPS);&lt;br /&gt;
      PhyFPS = Math.round(data.PhyFPS);&lt;br /&gt;
      Memory = Math.round(data.Memory);&lt;br /&gt;
      ChldAg = data.ChldAg;&lt;br /&gt;
      RootAg = data.RootAg;&lt;br /&gt;
      Uptime = data.Uptime;&lt;br /&gt;
      Version = data.Version;&lt;br /&gt;
      drawChart();&lt;br /&gt;
      setTags();&lt;br /&gt;
      timer.reset(15000);&lt;br /&gt;
  });&lt;br /&gt;
  });&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  google.load(&amp;quot;visualization&amp;quot;, &amp;quot;1&amp;quot;, {packages:[&amp;quot;gauge&amp;quot;]});&lt;br /&gt;
  google.setOnLoadCallback(drawChart);&lt;br /&gt;
  function drawChart() {&lt;br /&gt;
    var cdata = new google.visualization.DataTable();&lt;br /&gt;
    cdata.addColumn('string', 'Label');&lt;br /&gt;
    cdata.addColumn('number', 'Value');&lt;br /&gt;
    cdata.addRows(3);&lt;br /&gt;
    cdata.setValue(0, 0, 'SimFPS');&lt;br /&gt;
    cdata.setValue(0, 1, SimFPS);&lt;br /&gt;
    cdata.setValue(1, 0, 'PhyFPS');&lt;br /&gt;
    cdata.setValue(1, 1, PhyFPS);&lt;br /&gt;
    cdata.setValue(2, 0, 'Memory');&lt;br /&gt;
    cdata.setValue(2, 1, Memory);&lt;br /&gt;
&lt;br /&gt;
    var chart = new&lt;br /&gt;
 google.visualization.Gauge(document.getElementById('chart_div'));&lt;br /&gt;
    var options = {width: 400, height: 120, redFrom: 90, redTo: 100,&lt;br /&gt;
        yellowFrom:75, yellowTo: 90, minorTicks: 5};&lt;br /&gt;
    chart.draw(cdata, options);&lt;br /&gt;
  }&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
   function setTags() {&lt;br /&gt;
      $(&amp;quot;#par-uptime&amp;quot;).text(&amp;quot;Uptime: &amp;quot;  + Uptime);&lt;br /&gt;
      $(&amp;quot;#par-ragent&amp;quot;).text(&amp;quot;Root Agent: &amp;quot; + RootAg);&lt;br /&gt;
      $(&amp;quot;#par-version&amp;quot;).text(&amp;quot;Version: &amp;quot; + Version);&lt;br /&gt;
      $(&amp;quot;#par-cagent&amp;quot;).text(&amp;quot;Child Agent: &amp;quot; + ChldAg);&lt;br /&gt;
   }&lt;br /&gt;
 &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/head&amp;gt;&lt;br /&gt;
 &amp;lt;body&amp;gt;&lt;br /&gt;
= BlueWall Development Region =&lt;br /&gt;
 &amp;lt;table&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
 &amp;lt;div id=&amp;quot;par-version&amp;quot;&amp;gt;version&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
 &amp;lt;div id=&amp;quot;par-ragent&amp;quot;&amp;gt;root agent&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
 &amp;lt;div id=&amp;quot;par-uptime&amp;quot;&amp;gt;uptime&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
 &amp;lt;div id=&amp;quot;par-cagent&amp;quot;&amp;gt;child agent&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;/table&amp;gt;&lt;br /&gt;
 &amp;lt;div id=&amp;quot;chart_div&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/body&amp;gt;&lt;br /&gt;
 &amp;lt;/html&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[SSL in OpenSim]]&lt;br /&gt;
&lt;br /&gt;
== JSON Grid Simstats ==&lt;br /&gt;
&lt;br /&gt;
Python example to gain the region data from a grid service&lt;br /&gt;
 - should work but this version not tested -&lt;br /&gt;
         *reference material* &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 import hashlib&lt;br /&gt;
 import urllib2&lt;br /&gt;
&lt;br /&gt;
 ''' value shown is an example, get this from your grid database each time - regions.regionSecret '''&lt;br /&gt;
 regionsecret = 'fe21314b-6267-44f7-aa1e-6047e1c3f94a'&lt;br /&gt;
&lt;br /&gt;
 ''' My region host '''&lt;br /&gt;
 hostName =  myregion.host.net&lt;br /&gt;
&lt;br /&gt;
 ''' My region port '''&lt;br /&gt;
 hostPort = 9000&lt;br /&gt;
&lt;br /&gt;
 ''' create an *UPPERCASE* SHA1 hash from the regionSecret '''&lt;br /&gt;
 resourceName = str(hashlib.sha1(regionsecret).hexdigest()).upper()&lt;br /&gt;
&lt;br /&gt;
 regionuri = hostName + &amp;quot;:&amp;quot; + hostPort + &amp;quot;/&amp;quot; + resourceName + &amp;quot;/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 ''' data includes TimeZoneName , TimeZoneOffs, UxTime, Memory, Version and OSStatsURI '''&lt;br /&gt;
 regiondata = simplejson.load(urllib2.urlopen(regionuri))&lt;br /&gt;
&lt;br /&gt;
 ''' OSStatsURI is the uri to query the OpenSimulator instance. return same data as the user set uri '''&lt;br /&gt;
 simuri = regiondata['OSStatsURI']&lt;br /&gt;
&lt;br /&gt;
 simdata = simplejson.load(urllib2.urlopen(simuri))&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Troubleshooting</id>
		<title>Troubleshooting</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Troubleshooting"/>
				<updated>2012-03-04T07:01:42Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
This page gives any system-specific configuration settings that may be useful, and advice for problems that might be encountered.&lt;br /&gt;
__TOC__&lt;br /&gt;
{{clear}}&lt;br /&gt;
== General tips ==&lt;br /&gt;
&lt;br /&gt;
If OpenSimulator does startup to a point where you can type commands in the region console, then you can find out what your current configuration is by using the &amp;quot;config get&amp;quot; and &amp;quot;config save&amp;quot; commands as detailed at [[Server Commands]] (and by typing help on the console). This can be useful for eliminating a bad configuration when diagnosing some issues.&lt;br /&gt;
&lt;br /&gt;
Also make sure that you are running the correct versions of the .NET runtime and database. See the [[Configuration#Database]] for notes about database versions, and you must use .NET 3.5 or later. .NET 2.0 doesn't have a System.Core. If you are using Windows .NET, simply download the 3.5 or 4 Update. If you are using Mono, you'll need to update your mono version.&lt;br /&gt;
&lt;br /&gt;
== System-specific configuration ==&lt;br /&gt;
&lt;br /&gt;
=== CentOS 5 (64bit) ===&lt;br /&gt;
If you are running Mono 2.2 compiled from source on CentOS 5.2 64bit (not sure if it applies to other scenarios as well), you need to take these steps:&lt;br /&gt;
 sudo yum install libgdiplus&lt;br /&gt;
 sudo yum install libexif&lt;br /&gt;
 sudo ln -s /usr/lib64/libgdiplus.so.0 /usr/lib64/libgdiplus.so&lt;br /&gt;
 ldconfig&lt;br /&gt;
&lt;br /&gt;
That finally enabled me to run OpenSimulator without errors, and even connect to other grids.&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
some Mono dependency &amp;amp; latest Mono itself may use &amp;quot;~x86&amp;quot; masked packages (assuming x86 is your platform, change may be made to reflect your ex:&amp;quot;~amd64&amp;quot; for 64bits). You could check for USE parameter with:&lt;br /&gt;
&lt;br /&gt;
 ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge -vp subversion nant mono libgdiplus&lt;br /&gt;
&lt;br /&gt;
Then install with:&lt;br /&gt;
&lt;br /&gt;
 ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; emerge subversion nant mono libgdiplus&lt;br /&gt;
&lt;br /&gt;
N.B: The ACCEPT_KEYWORDS=&amp;quot;~x86&amp;quot; can be set in Gentoo /etc/make.conf file, but that turn up all the emerges in testing/unstable, using it at the begining of emerge command line use it only for current emerge process&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
If you get errors about the 2.0 framework not being supported, you may need to update your &amp;lt;tt&amp;gt;pkg-config&amp;lt;/tt&amp;gt; path.&lt;br /&gt;
For example, you can set this in &amp;lt;tt&amp;gt;~/.bash_profile&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PKG_CONFIG_PATH=&amp;quot;/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/:${PKG_CONFIG_PATH}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Errors and fixes ==&lt;br /&gt;
&lt;br /&gt;
=== Build workarounds due to non-functionality or bugs: ===&lt;br /&gt;
&lt;br /&gt;
==== Disappearing prims due to duplicate UID's ====&lt;br /&gt;
&lt;br /&gt;
Generally this problem occurs when a save-xml/load-xml file is loaded into the same sim without using the -newUID switch to generate new UUID's for the objects. See [[Server Commands]] for detailed information. (&amp;lt;nowiki&amp;gt;load-xml &amp;lt;filename&amp;gt; -newUID&amp;lt;/nowiki&amp;gt;). But if this does not work, the other way is to shift-copy your build and drag it up into the air.. then delete the one in the air, (which is actually the copy). This will generate new UID's on all your prims.. you can now leave that build, and load your original load-xml file in another region. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Exception and loss of ode physics (System.EntryPointNotFoundException: dSpaceLockQuery) ===&lt;br /&gt;
&lt;br /&gt;
The following error is usually caused by using the wrong version of ''libode'': &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: none repeat scroll 0% 0% LavenderBlush; color: black;&amp;quot; | &lt;br /&gt;
[SCENE] [02-01 22:20:40] System.EntryPointNotFoundException: dSpaceLockQuery &lt;br /&gt;
&lt;br /&gt;
:at (wrapper managed-to-native) Ode.NET.d:SpaceLockQuery (intptr) &lt;br /&gt;
:at OpenSim.Region.Physics.OdePlugin.OdeScene.waitForSpaceUnlock (IntPtr space) [0x00000] &lt;br /&gt;
:at OpenSim.Region.Physics.OdePlugin.OdeCharacter.AvatarGeomAndBodyCreation (Single npositionX, Single npositionY, Single npositionZ, Single tensor) [0x00000] &lt;br /&gt;
:at OpenSim.Region.Physics.OdePlugin.OdeCharacter..ctor (System.String avName, OpenSim.Region.Physics.OdePlugin.OdeScene parent_scene, OpenSim.Region.Physics.Manager.PhysicsVector pos) [0x00000] &lt;br /&gt;
:at OpenSim.Region.Physics.OdePlugin.OdeScene.AddAvatar (System.String avName, OpenSim.Region.Physics.Manager.PhysicsVector position) [0x00000] &lt;br /&gt;
:at OpenSim.Region.Environment.Scenes.ScenePresence.AddToPhysicalScene () [0x00000] &lt;br /&gt;
:at OpenSim.Region.Environment.Scenes.ScenePresence.MakeRootAgent (LLVector3 pos, Boolean isFlying) [0x00000] &lt;br /&gt;
:at OpenSim.Region.Environment.Scenes.Scene.AgentCrossing (UInt64 regionHandle, LLUUID agentID, LLVector3 position, Boolean isFlying) [0x00000]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
First try searching your filesystem to see if you have other copies of the ode physics engine: &lt;br /&gt;
&lt;br /&gt;
 find / -name &amp;quot;libode.so&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then make sure you have the latest version. &lt;br /&gt;
&lt;br /&gt;
=== MySQL connection errors after about 6-8 hours ===&lt;br /&gt;
&lt;br /&gt;
MySQL has a timeout which drops the connection after 28,800 seconds (8 hours) of inactivity, which will probably result in failure to login after the User server has been sitting idle for an extended period. If you have this problem, increase the timeout to something larger, like 604800 (1 week) or 31536000 (1 year). From the mysql console, type: &lt;br /&gt;
&lt;br /&gt;
 set global wait_timeout=604800;&lt;br /&gt;
&lt;br /&gt;
=== System.DllNotFoundException: gdiplus.dll ===&lt;br /&gt;
&lt;br /&gt;
First, check to make sure that &amp;lt;tt&amp;gt;libgdiplus.so&amp;lt;/tt&amp;gt; is known to the dynamic linker: &lt;br /&gt;
&lt;br /&gt;
 /sbin/ldconfig -p | grep libgdiplus&lt;br /&gt;
&lt;br /&gt;
If nothing is found, make sure that the directory libgdiplus.so exists in is either in your &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; environment variable or listed in a *.conf file (e.g., gdiplus.conf) in /etc/ld.so.conf.d/. Then run &amp;lt;tt&amp;gt;ldconfig&amp;lt;/tt&amp;gt; to update the cache. Then it should be able to find the library. &lt;br /&gt;
&lt;br /&gt;
You may still have the above error, however, since libgdiplus also depends on other dynamic libraries, and if they fail to load, libgdiplus will fail. To test for this, run OpenSimulator with debugging information turned on: &lt;br /&gt;
&lt;br /&gt;
 MONO_LOG_LEVEL=debug mono OpenSim.exe&lt;br /&gt;
&lt;br /&gt;
On Mac OS X - check the following file exists... /opt/local/lib/libgdiplus.dylib if it does then as root user edit the file /opt/local/etc/mono/config and add the line &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;dllmap dll=&amp;quot;gdiplus.dll&amp;quot; target=&amp;quot;/opt/local/lib/libgdiplus.dylib&amp;quot; os=&amp;quot;!windows&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Migrating Opensim / MySQL database from Windows to Linux ===&lt;br /&gt;
&lt;br /&gt;
==== MySql.Data.MySqlClient.MySqlException: Table 'opensim.UserAccounts' doesn't exist ====&lt;br /&gt;
&lt;br /&gt;
'''Environment:''' Opensim Server 0.7.0.2 behind Linux Ubuntu 8.0.4 with mono 2.8 and MySQL 5.0 installed. &lt;br /&gt;
&lt;br /&gt;
When you migrates a Opensim 0.7 database working with MySQL 5.0 on Windows to Linux, when logging a user in Opensim server, you may receive the following exception in the Opensim server console: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: none repeat scroll 0% 0% LavenderBlush; color: black;&amp;quot; | &lt;br /&gt;
  03:11:10 - [LLOGIN SERVICE]: Exception processing login for (user_name): MySql.Data.MySqlClient.MySqlException: Table 'opensim.UserAccounts' doesn't exist&lt;br /&gt;
 at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
 at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64&amp;amp;amp; affectedRows, System.Int64&amp;amp;amp; lastInsertId) [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
 at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
 at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000] in &amp;lt;filename unknown&amp;gt;:0    at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
 at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64&amp;amp;amp; affectedRows, System.Int64&amp;amp;amp; lastInsertId) [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
 at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
 at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000] in &amp;lt;filename unknown&amp;gt;:0&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
On the client, you also receive the following error: &lt;br /&gt;
&lt;br /&gt;
 Login Failed&lt;br /&gt;
 Error generating Login Response&lt;br /&gt;
&lt;br /&gt;
This exception is caused by the way MySQL store the table names. On a Windows MySQL server, the table names are not case sensitive, but '''all tables in MySQL Linux are case sensitive by default''', so when OpenSimulator will find them in the database with names in first capital letters, it can not find it. &lt;br /&gt;
&lt;br /&gt;
One solution would be to change the names of the tables required by opensim (ALTER TABLE's), but the cleanest solution is changing MySQL config, checking the option “'''lower_case_sensitive = 1'''” in the file &amp;quot;'''/etc/mysql/my.cnf'''&amp;quot;, section '''[mysqld]'''. &lt;br /&gt;
&lt;br /&gt;
 # sudo nano /etc/mysql/my.cnf&lt;br /&gt;
 &lt;br /&gt;
 ..........................&lt;br /&gt;
 [mysqld]&lt;br /&gt;
 ..........................&lt;br /&gt;
 lower_case_sensitive=1&lt;br /&gt;
 ..........................&lt;br /&gt;
&lt;br /&gt;
This makes MySQL translate to lowercase the table names automatically. After restarting MySQL server and OpenSim, the tables are loaded without problems. &lt;br /&gt;
&lt;br /&gt;
Warning: don’t try to clear the table '''migration''' to force opensim re-migrate your database, because '''it will provoke a blight on your database'''.&lt;br /&gt;
&lt;br /&gt;
=== Errors from incomplete data migrations ===&lt;br /&gt;
&lt;br /&gt;
This can happen during version upgrades if for some reason a database migration fails when there is a change in the way OpenSimulator stores data. &lt;br /&gt;
&lt;br /&gt;
You may see errors on the OpenSimulator console like: &lt;br /&gt;
&lt;br /&gt;
  [LLOGIN SERVICE]: Exception processing login for [username]: MySql.Data.MySqlClient.MySqlException: Table 'opensim.UserAccounts' doesn't exist&lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] &lt;br /&gt;
  at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64&amp;amp;amp; affectedRows, System.Int64&amp;amp;amp; lastInsertId) [0x00000] &lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] &lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000]    at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000] &lt;br /&gt;
  at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64&amp;amp;amp; affectedRows, System.Int64&amp;amp;amp; lastInsertId) [0x00000] &lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000] &lt;br /&gt;
  at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000] &lt;br /&gt;
&lt;br /&gt;
In this case the 'users' table had not been migrated to the 'UserAccounts' table which OpenSimulator was expecting, also resulting in the viewerside error: &lt;br /&gt;
&lt;br /&gt;
  Login Failed&lt;br /&gt;
 Error generating Login Response&lt;br /&gt;
&lt;br /&gt;
I solved by fixing the filesystem permissions that were causing the migration to fail (on my Linux box '/var/lib/mysql/...' had got itself messed up), then dropping the 'migration' table and running the server again (from the [non-critical] migration warnings encountered there was probably a more precise way to do this, but I was fully backed up so I did it quick-and-dirty). Other than loosing terrain data refs. and current shape/clothing/attachment data (easily restored in-sim) all was now good for me.&lt;br /&gt;
&lt;br /&gt;
=== When installing mono or libgdiplus0 you may get dependency missing libexif.so.9 ===&lt;br /&gt;
&lt;br /&gt;
This was noticed on Centos5 but may occur on other systems, download ftp://rpmfind.net/linux/conectiva/snapshot/i386/RPMS.extra/libexif9-0.5.12-47547cl.i386.rpm and install problem solved. You will now be able to install mono (as long as nothing else goes wrong )&lt;br /&gt;
&lt;br /&gt;
=== The assembly mscorlib.dll was not found or could not be loaded ===&lt;br /&gt;
&lt;br /&gt;
This indicates that you are missing one of the mscor libs that comes with nant. This is easily solved by getting NAnt, which comes with both versions 1.0 and 2.0 of the required lib.&lt;br /&gt;
&lt;br /&gt;
 apt-get install nant&lt;br /&gt;
&lt;br /&gt;
=== External Program Failed: /usr/lib/pkgconfig/../../lib/mono/2.0/gmcs.exe ===&lt;br /&gt;
&lt;br /&gt;
This is quickly fixed by retrieving mono-gmcs.&lt;br /&gt;
&lt;br /&gt;
 apt-get install mono-gmcs&lt;br /&gt;
&lt;br /&gt;
=== The type or namespace name JScript does not exist in the namespace Microsoft ===&lt;br /&gt;
&lt;br /&gt;
Note that it says JScript over and over again. Hint perhaps?&lt;br /&gt;
&lt;br /&gt;
 apt-get install mono-mjs libmono-microsoft8.0-cil&lt;br /&gt;
&lt;br /&gt;
On Fedora and OpenSUSE, the needed package is &amp;quot;mono-jscript&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== The type or namespace name Tcp does not exist in the namespace System.Runtime.Remoting.Channels ===&lt;br /&gt;
&lt;br /&gt;
This one is taken care of with a quick install:&lt;br /&gt;
&lt;br /&gt;
 apt-get install libmono-system-runtime2.0-cil&lt;br /&gt;
&lt;br /&gt;
=== Missing: libopenjpeg-libsl-2.1.2.0-x86_64.so ===&lt;br /&gt;
&lt;br /&gt;
You are probably on a 64-bit linux machine and may need to follow these instructions:&lt;br /&gt;
&lt;br /&gt;
* [[Installing and running on x86-64]] &lt;br /&gt;
&lt;br /&gt;
=== error while loading shared libraries: libgthread-2.0.so.0: cannot open shared object file ===&lt;br /&gt;
&lt;br /&gt;
If you start with a base Debian system as we did at the top of the page, but instead of using the apt version of mono you use the installer from their website, then you may encounter this issue.&lt;br /&gt;
&lt;br /&gt;
After getting the .bin file from http://www.mono-project.com/Downloads, and executing it as per its instructions, upon finishing, you may find that if you try to run `mono --version` you are presented with this message. This one means you need to install libglib2.0-0.&lt;br /&gt;
&lt;br /&gt;
 apt-get install libglib2.0-0&lt;br /&gt;
&lt;br /&gt;
=== The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file. ===&lt;br /&gt;
&lt;br /&gt;
This one seems to be fixed by retrieving the apt version of nant.&lt;br /&gt;
&lt;br /&gt;
 apt-get install nant&lt;br /&gt;
&lt;br /&gt;
This can also be due to &amp;lt;tt&amp;gt;pkg-config&amp;lt;/tt&amp;gt; not being able to locate the &amp;lt;tt&amp;gt;mono.pc&amp;lt;/tt&amp;gt; file. Adding the directory containing this file to the environment variable &amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt; may solve this.&lt;br /&gt;
&lt;br /&gt;
== Networking and config issues ==&lt;br /&gt;
&lt;br /&gt;
See also the wiki page:&lt;br /&gt;
* [[Network Settings]]&lt;br /&gt;
* [[Firewall Settings]]&lt;br /&gt;
* [[Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== You are able to log in, but not connect to a Region from a remote client ===&lt;br /&gt;
&lt;br /&gt;
Look in your OpenSimulator/bin/Regions folder: &lt;br /&gt;
# Try '''0.0.0.0''' for the InternalAddress in your Regions.ini file.&lt;br /&gt;
# '''ExternalHostName=127.0.0.1''' will be needed to change its name to the asscssable DNS name such as &amp;quot;opensim.example-host.com&amp;quot; or &amp;quot;71.6.131.152&amp;quot; (your public accessable ip)&lt;br /&gt;
&lt;br /&gt;
If you still have the same problem, it might be a firewall issue. Check if your firewall is active and configure it. See [[Firewall Settings]] for detailed instructions.&lt;br /&gt;
&lt;br /&gt;
== Building OpenSimulator ==&lt;br /&gt;
=== I can't find any build files or solution files ===&lt;br /&gt;
* If you're on Windows, run&lt;br /&gt;
 runprebuild.bat&lt;br /&gt;
* on Linux/Mac/FreeBSD, run &lt;br /&gt;
 runprebuild.sh&lt;br /&gt;
&lt;br /&gt;
=== VS2005 won't open the .sln file ===&lt;br /&gt;
* Try running VS2005 C#. You are probably running VS2005 C++. This is a C# project.&lt;br /&gt;
&lt;br /&gt;
== Running OpenSimulator ==&lt;br /&gt;
=== Running OpenSim.exe from a Cygwin shell has access denied for some dll's ===&lt;br /&gt;
* Do a '&amp;lt;tt&amp;gt;cd bin&amp;lt;/tt&amp;gt;' followed by '&amp;lt;tt&amp;gt;chmod a+x *&amp;lt;/tt&amp;gt;' to make all dll files executable.&lt;br /&gt;
&lt;br /&gt;
=== How to do a clean rebuild? (e.g. after 'APPLICATION EXCEPTION DETECTED' after rebuild with updated source) ===&lt;br /&gt;
&lt;br /&gt;
When you build from source, then update the source, rebuild and try to run, you get strange runtime exceptions like that:&lt;br /&gt;
&lt;br /&gt;
  APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs&lt;br /&gt;
  Exception: System.MissingMethodException&lt;br /&gt;
&lt;br /&gt;
When you build the source, it's 'compiled' into runnable files called 'dlls' or Dynamic Link Libraries.&lt;br /&gt;
These have the extension .dll and are added to your local installation, and are not governed by source control.&lt;br /&gt;
When we change where these dlls are created, the 'old' ones, from previous builds, will still be there.&lt;br /&gt;
This will cause the program to try and load these old dlls, with unexpected results.&lt;br /&gt;
&lt;br /&gt;
Usually, any of these remedies should fix the problem:&lt;br /&gt;
* Do a 'nant clean' if you're using Nant then rebuild and run.&lt;br /&gt;
* Remove all OpenSim.*.dll (only files that starts with &amp;quot;OpenSim.&amp;quot; and ends in &amp;quot;.dll&amp;quot;, like &amp;quot;OpenSim.Framework.dll&amp;quot;) recursively from your installation directory. This is what &amp;quot;nant clean&amp;quot; does above. Finally, rebuild and run.&lt;br /&gt;
* Do a clean checkout, build that from scratch, then copy over all data files (*.db, *.ini) from your old installation, rebuild and run.&lt;br /&gt;
&lt;br /&gt;
If all else fails, join #opensim on freenode, or send an email to the [https://lists.berlios.de/mailman/listinfo/opensim-users opensim-users] mailing list.&lt;br /&gt;
&lt;br /&gt;
=== OpenSim.exe console input is scrambled when run with mono on Windows ===&lt;br /&gt;
&lt;br /&gt;
This is because OpenSimulator uses modified console which emulates cursor control and context help. It is intended to use on _nix console, so if you use it in dos console, it occurs.&lt;br /&gt;
&lt;br /&gt;
Try starting like that. It will use &amp;quot;basic&amp;quot; console without additional features.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mono OpenSim.exe -console=basic&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Something Has Gone Wrong! ==&lt;br /&gt;
=== I get errors concerning 'owner_uuid' when starting up my grid after updating from svn beyond r3254 ===&lt;br /&gt;
When updating to recent revisions after r3254, we are now using the unused owner_uuid. There are some grids whose mysql tables were created during a time when this field was inadvertently removed from the .sql script that initializes the regions table. Logging in to your mysql instance and executing this SQL query to add the missing owner_uuid should solve this issue:&lt;br /&gt;
 alter table `regions` add column `owner_uuid` varchar(36) default '00000000-0000-0000-0000-000000000000' not null, comment 'Rev.2';&lt;br /&gt;
The punctuation around regions and owner_uuid is &amp;quot;grave accent&amp;quot;. The punctuation around the default value and the comment is the single quote. The &amp;quot;grave accent&amp;quot; is the one generally to the left of the One button, under the tilde and the single-quote, is, well, underneath the double quote. I think this matters to mysql.&lt;br /&gt;
&lt;br /&gt;
=== I get errors concerning 'State' when starting up my grid after updating from svn beyond r3786 ===&lt;br /&gt;
After r3786, a new 'State' field has been added to the 'primshapes' table on SQLite. This field is used to persist trees and grass.&lt;br /&gt;
You may have an empty region at startup, because OpenSimulator does not find this 'State' field and does not know what to do.&lt;br /&gt;
The best is to use SQLiteBrowser or another SQLite table editor (download it at [http://sqlitebrowser.sourceforge.net/ http://sqlitebrowser.sourceforge.net/]) to create the missing field:&lt;br /&gt;
 alter table primshapes add column State integer default 0&lt;br /&gt;
Just launch SQLiteBrowser, use File/Open database, then browse to OpenSim.db file and open it. Then, go to the &amp;quot;Execute SQL&amp;quot; tab, copy/paste the command above in the &amp;quot;SQL string&amp;quot; textbox, then hit the &amp;quot;Execute query&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
=== I get a timeout during region handshake ===&lt;br /&gt;
* Do you have the correct IP in your Regions\* config files?&lt;br /&gt;
* Do you have multiple interfaces on the server running OpenSim? OpenSimulator will not bind outgoing UDP packets to a specific IP, its default IP to reach you will be what the Region answers UDP with. If you have configured the region for another IP you will get a timeout during connect.&lt;br /&gt;
&lt;br /&gt;
=== I cannot connect to my OpenSimulator ===&lt;br /&gt;
* See [[Connecting]] or [[Firewall Settings]]&lt;br /&gt;
&lt;br /&gt;
=== I can connect but cannot move ===&lt;br /&gt;
If the client connects but the avatar can only spin in place and not move, then the sim is not correctly configured. It completed the initial login function, but packets are not being exchanged between the client and the sim, probably due to a network configuration error on the sim.&lt;br /&gt;
* See [[Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== From time to time my Avatar seems to get stuck ===&lt;br /&gt;
Right now there is a bottle neck when syncing prims off to the database. This will cause small (5 - 10 second) apparent hangs of the Avatar, but it will recover fine once the data is synced. It is a known issue based on legacy architecture of some of the data storage code. We hope this will be removed soon.&lt;br /&gt;
&lt;br /&gt;
=== I have problems with viewing the worldmap ===&lt;br /&gt;
* This may happen when running OpenSimulator on a Linux server, both in grid or standalone mode.&lt;br /&gt;
* Symptoms: when opening the worldmap window in the SL-viewer, the sims are not displayed grahically in the worldmap, the server console shows some error related to openjpeg, the current session freezes...&lt;br /&gt;
* Reason: your svn source trunk does not have the correct (or whatever...) &amp;lt;tt&amp;gt;libopenjpeg-libsl&amp;lt;/tt&amp;gt; library.&lt;br /&gt;
* Other reason: the file &amp;quot;defaultstripe.png&amp;quot; does not exists in the same OpenSimulator folder, or is corrupted.&lt;br /&gt;
* Solution: get the newest code from libsecondlife (&amp;lt;tt&amp;gt;svn co svn://opensecondlife.org/libsl/trunk&amp;lt;/tt&amp;gt;), '&amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;' manually in the subdir &amp;lt;tt&amp;gt;openjpeg-libsl&amp;lt;/tt&amp;gt;, and copy the resulting &amp;lt;tt&amp;gt;libopenjpeg-libsl-2.1.2.0.so&amp;lt;/tt&amp;gt; into your OpenSimulator &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; subdir, overwriting the existing one.&lt;br /&gt;
* Recompile &amp;amp; restart OpenSimulator&lt;br /&gt;
&lt;br /&gt;
== Exceptions on the Console ==&lt;br /&gt;
This is a list of Exceptions that you may see on the console, what they mean, and if they are a problem.&lt;br /&gt;
&lt;br /&gt;
=== System.DllNotFoundException: ./libopenjpeg-libsl-2.1.2.0.so ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
Failed generating terrain map: System.DllNotFoundException: ./libopenjpeg-libsl-2.1.2.0.so&lt;br /&gt;
: at (wrapper managed-to-native) OpenJPEGNet.OpenJPEG:LibslAllocDecoded OpenJPEGNet.OpenJPEG/LibslImage&amp;amp;)&lt;br /&gt;
: at OpenJPEGNet.OpenJPEG.Encode (System.Byte[] decoded, Int32 width, Int32 height, Int32 components, Boolean lossless) [0x00000]&lt;br /&gt;
:at OpenJPEGNet.OpenJPEG.EncodeFromImage (System.Drawing.Bitmap bitmap, Boolean lossless) [0x00000]&lt;br /&gt;
:at OpenSim.Region.Terrain.TerrainEngine.ExportJpegImage (System.String gradientmap) [0x00000]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You are on Linux, and the native lib libopenjpeg-libsl-2.1.2.0.so is not compatible with your system for one of the following reasons:&lt;br /&gt;
* You have an old processor (libopenjpeg has been compiled with optimizations)&lt;br /&gt;
* You are running in 64bit mode (none of the native libs are built for 64bit)&lt;br /&gt;
&lt;br /&gt;
You can rebuild your own libopenjpeg from source, or run in a compatible environment.&lt;br /&gt;
You can do this by:&lt;br /&gt;
 svn co svn://openmv.org/libsl/libopenmetaverse/trunk libsl&lt;br /&gt;
 cd libsl/openjpeg-libsl/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
then copy libopenjpeg-libsl-2.1.2.0.so into OpenSimulator bin-folder.&lt;br /&gt;
&lt;br /&gt;
=== System.NullReferenceException at OpenSim.Region.Communications.Local.LocalLoginService.PrepareLoginToRegion ===&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
[LOGIN END]: XMLRPC Login failed, System.NullReferenceException: Object reference not set to an instance of an object&lt;br /&gt;
:at OpenSim.Region.Communications.Local.LocalLoginService.PrepareLoginToRegion (OpenSim.Framework.RegionInfo regionInfo, OpenSim.Framework.UserProfileData user, OpenSim.Framework.Communications.LoginResponse response) [0x00000] in /home/sim/svn/opensim/OpenSim/Region/Communications/Local/LocalLoginService.cs:293&lt;br /&gt;
:at OpenSim.Region.Communications.Local.LocalLoginService.CustomiseResponse (OpenSim.Framework.Communications.LoginResponse response, OpenSim.Framework.UserProfileData theUser, System.String startLocationRequest) [0x00520] in /home/sim/svn/opensim/OpenSim/Region/Communications/Local/LocalLoginService.cs:253&lt;br /&gt;
:at OpenSim.Framework.Communications.LoginService.XmlRpcLoginMethod (Nwc.XmlRpc.XmlRpcRequest request) [0x00369] in /home/sim/svn/opensim/OpenSim/Framework/Communications/LoginService.cs:252&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Your first startup of OpenSimulator has failed for example due to giving non existent domain name when prompted for region external host name. This causes only partial initialization. You need to delete bin folder, do svn update, rebuild and purge database to resolve this issue.&lt;br /&gt;
&lt;br /&gt;
=== Exception: System.NotImplementedException: The requested feature is not implemented. ===&lt;br /&gt;
  &lt;br /&gt;
If your exception starts as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
|Exception: System.NotImplementedException: The requested feature is not implemented.&lt;br /&gt;
  at (wrapper managed-to-native) System.Threading.Interlocked:Add (int&amp;amp;,int)&lt;br /&gt;
  at System.Threading.ReaderWriterLockSlim.TryEnterReadLock (Int32 millisecondsTimeout) [0x000e3] in&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You probably unwittingly passed the option '''--optimize=-all''' to mono. The problem is that Mono compiles in an &amp;quot;optimized&amp;quot; version of the System.Threading.Interlocked class's methods; these optimizations are done using raw assembler for your architecture (automatically detected at build time). When you pass '''--optimize=-all''', the runtime detects that these functions are optimized, and disables them. So the next time a class tries to call these functions, the runtime finds that there is no native implementation of the methods! This affects almost all synchronization primitives System.Threading. Since OpenSimulator relies heavily on threading and locking mechanisms, we can't do without this functionality. Perhaps a future Mono version will allow you to pass '''--optimize=-all''', and provide an unoptimized implementation (e.g. pthreads), rather than throwing an exception.&lt;br /&gt;
&lt;br /&gt;
If you're looking to debug a low level problem with mono (such as an error in native code), passing '''--optimize=-all''' is not the way to go about it. Instead, set the environment variable MONO_LOG_LEVEL=debug and run your program with the '''--debug''' switch passed to mono. You can also run mono under gdb, just like any other process.&lt;br /&gt;
&lt;br /&gt;
=== Command error: System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, culture=neutral,PublicKeyToken=b77a5c561934e089' or one of its dependencies. ===&lt;br /&gt;
&lt;br /&gt;
A missing System.Core indicates that you are using an old version of the .NET Runtime. &lt;br /&gt;
&lt;br /&gt;
You must use .NET 3.5 or later. .NET 2.0 doesn't have a System.Core. If you are using Windows .NET, simply download the 3.5 or 4 Update. If you are using Mono, you'll need to update your mono version.&lt;br /&gt;
&lt;br /&gt;
== Grid Mode ==&lt;br /&gt;
&lt;br /&gt;
=== I start the sim and it doesn't connect to any grid ===&lt;br /&gt;
&lt;br /&gt;
When OpenSimulator is first started, it needs configuration.&lt;br /&gt;
&lt;br /&gt;
* See [[Configuration]].&lt;br /&gt;
&lt;br /&gt;
=== My grid works fine with one user but when two users login in the same time both get stuck ===&lt;br /&gt;
* Make sure you have export MONO_THREADS_PER_CPU=&amp;quot;100&amp;quot; in your environment&lt;br /&gt;
&lt;br /&gt;
=== After ~20 minutes my region starts to take 100% cpu and region(s) hang ===&lt;br /&gt;
* If you have mono 1.9.1 or lower upgrade to mono 2.2.&lt;br /&gt;
&lt;br /&gt;
== Hypergrid ==&lt;br /&gt;
=== After starting OpenSimulator with Hypergrid enabled my inventory wont load! ===&lt;br /&gt;
* If you're running in grid mode, first check your OpenSim.ini to make sure that the dns names or addresses for your grid servers are accessible to both you and the public.&lt;br /&gt;
* Check the XML config files for your UGAIM servers to make sure that everything is running off of a publicly accessible IP address.&lt;br /&gt;
** If this is the case and you have to change your UGAIM addresses you will need to run a few quick and dirty SQL queries on your database in order to update your grid's user accounts so that they now point to the new IP addresses of your UGAIM.&lt;br /&gt;
&lt;br /&gt;
Log into your sql server and change over to the database for your grid. The following will update your user's home inventory and asset URIs after changing the addresses of your UGAIM services in the XML configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align = center&amp;gt;'''!!!!WARNING!!!! - Be smart! Always make a backup of your databases before making any changes to OpenSim! - !!!!WARNING!!!!'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     update users set userInventoryURI=&amp;quot;http://new.UGAIM.address:8004&amp;quot; where userInventoryURI = &amp;quot;http://old.UGAIM.address:8004&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     update users set userAssetURI=&amp;quot;http://new.UGAIM.address:8003&amp;quot; where userAssetURI = &amp;quot;http://old.UGAIM.address:8003&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* If you're running in standalone mode... - Anyone familiar with standalone want to fill this in? -&lt;br /&gt;
== Physics Issues ==&lt;br /&gt;
=== Problems using OpenDynamicsEngine (ODE) on *nix ===&lt;br /&gt;
If you have problems using the OpenDynamicsEngine on *nix, try setting your stack reserve level higher than the default with the following command; ulimit -s 262144 Or, run the opensim-ode.sh to start up OpenSimulator. &lt;br /&gt;
&lt;br /&gt;
== ScriptEngine Issues ==&lt;br /&gt;
=== Got &amp;quot;Primitive: Error compiling script: unknown char: . error&amp;quot; when compiling script ===&lt;br /&gt;
When trying to compile a script ( using [[DotNetEngine]] or [[XEngine]] ) you could have this error :&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
Primitive: Error compiling script:&lt;br /&gt;
unknown char: .&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
And on the console :&lt;br /&gt;
{|&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
11:06:37 - [ScriptEngine.DotNetEngine]: Unloading script&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - Exception in MaintenanceLoopThread. Thread will recover after 5 sec throttle. Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.&lt;br /&gt;
:at System.Collections.Generic.Dictionary`2[OpenSim.Region.ScriptEngine.Interfaces.IEventReceiver, OpenSim.Region.ScriptEngine.Shared.Api.Plugins.Dataserver].get_Item (IEventReceiver key) [0x00000]&lt;br /&gt;
:at OpenSim.Region.ScriptEngine.Shared.Api.AsyncCommandManager.RemoveScript (IEventReceiver engine, UInt32 localID, UUID itemID) [0x00000]&lt;br /&gt;
:at OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager._StopScript (UInt32 localID, UUID itemID) [0x00000]&lt;br /&gt;
:at OpenSim.Region.ScriptEngine.DotNetEngine.ScriptManager.DoScriptLoadUnload () [0x00000]&lt;br /&gt;
:at OpenSim.Region.ScriptEngine.DotNetEngine.MaintenanceThread.MaintenanceLoop () [0x00000]&lt;br /&gt;
11:06:37 - [ScriptEngine.DotNetEngine]: Loading script&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - [ScriptEngine.DotNetEngine]: ScriptManager StartScript: localID: 720001, itemID: 88c9d28c-6004-4609-a707-717190de044a&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - [Compiler]: Compiled new assembly for fad15951-f9aa-493f-be68-2aaf5ff8a3c9&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - [SCRIPT]: Compiled assetID fad15951-f9aa-493f-be68-2aaf5ff8a3c9: ScriptEngines/a83150da-1ab1-11dd-89fb-0014853ee9da/CommonCompiler_compiled_fad15951-f9aa-493f-be68-2aaf5ff8a3c9.dll&amp;lt;br /&amp;gt;&lt;br /&gt;
11:06:37 - [ScriptEngine.DotNetEngine]: AppDomain Loading: OpenSim.Region.ScriptEngine.Shared, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This happens on '''linux''' when your locales are not set to default ( &amp;quot;C&amp;quot; ).&lt;br /&gt;
* You could refer to [http://opensimulator.org/mantis/view.php?id=2088 Mantis #2088] and [http://opensimulator.org/mantis/view.php?id=2015 Mantis #2015] for a workaround to run opensim.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
env LANG=C mono --debug OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* You could also change your locale setup. Here is what I use in my '.bash_profile' :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export LC_ALL=C&lt;br /&gt;
export LANG=C&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
I know it's a ugly way to setup locales on a linux box, but it works fine on my '''Linux From Scratch''' box.&lt;br /&gt;
&lt;br /&gt;
'''Rq''': I saw Melanie has corrected some parts of the source code a few weeks ago to avoid such problems.&lt;br /&gt;
&lt;br /&gt;
=== Get &amp;quot;Primitive: Error compiling script: ApplicationName='gmcs', ...&amp;quot; when compiling script ===&lt;br /&gt;
When trying to compile a script ( using DotNetEngine or XEngine ) you have an error something like :&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;background:LavenderBlush; color:black&amp;quot; |&lt;br /&gt;
Primitive: Error compiling script:&amp;lt;br /&amp;gt;&lt;br /&gt;
ApplicationName='gmcs', CommandLine='/target:library /debug+ /optimize- /out:&lt;br /&gt;
:&amp;quot;ScriptEngines/430c29d0-c5c6-11dd-ad8b-0800200c9a66/CommonCompiler_compiled_fbe5e682-afae-4f1a-805b-0125031101f7.dll&amp;quot; &lt;br /&gt;
:/r:&amp;quot;/usr/lib/opensim/bin/OpenSim.Region.ScriptEngine.Shared.dll&amp;quot;&lt;br /&gt;
:/r:&amp;quot;/usr/lib/opensim/bin/OpenSim.Region.ScriptEngine.Shared.Api.Runtime.dll&amp;quot;  -- &lt;br /&gt;
:&amp;quot;/tmp/11b81aac/594d02ce.0.cs&amp;quot; ', CurrentDirectory=''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Other features include &amp;quot;Touch&amp;quot; being disabled on the right click menu wheel.&lt;br /&gt;
&lt;br /&gt;
You might have a broken mono install (i.e. discovered as mono but not gmcs installed on a Ubuntu 8.10 Intrepid machine.)&lt;br /&gt;
&lt;br /&gt;
Check mono-gmcs (sudo apt-get install mono-gmcs) is correctly installed.&lt;br /&gt;
&lt;br /&gt;
=== Get &amp;quot;gmcs: Cannot find the specified file&amp;quot; when compiling script ===&lt;br /&gt;
Just install &amp;quot;mono-gmcs&amp;quot; package on your system. See [[Dependencies]] for details.&lt;br /&gt;
&lt;br /&gt;
== Locales Issues ==&lt;br /&gt;
Well, some of us, OpenSimulator users, ran into random crash of the OpenSimulator Region server in grid mode ... &lt;br /&gt;
&lt;br /&gt;
I have made many tests to find a solution about that problem.&lt;br /&gt;
&lt;br /&gt;
I first ran into this problem with OpenSIM SVN.6660 ... Even if I have no users connected, my OpenSimulator region server randomly crash ( after 1 hour, or 5 hours, ... ).&lt;br /&gt;
&lt;br /&gt;
My first idea was to upgrade to the latest SVN release, no chance, same problem. So I made a test with a previous SVN release ( SVN.6575 ) which is running fine on another server ( same OS, same parameters, same mono release, ... ) : No chance, same problem.&lt;br /&gt;
&lt;br /&gt;
Then, I tried to play with locales, recompile the '''screen''' unix command line utility I use to run my servers, ... No chance again.&lt;br /&gt;
&lt;br /&gt;
So, I checked the memory usage on my Server, and I discovered that with the last SVN release, the amount of memory needed to run OpenSimulator server in multi-region/grid mode increased :) ... So, I have tuned my MySQL server to use less memory. Was better, but my OpenSimulator region server still randomly crash ( but could stay alive longer than before ).&lt;br /&gt;
&lt;br /&gt;
Then, trying to play with the '''screen''' command line options ... And all my tests shows that the '''--debug''' option impact the stability of the server.&lt;br /&gt;
&lt;br /&gt;
Initially, I used such command line to run OpenSimulator :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/screen -S Region-service -d -m --debug mono OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Without the '''--debug''' option, everything seems to be more stable.&lt;br /&gt;
&lt;br /&gt;
About locales, if you read mantis and threads in opensim-dev / opensim-users, you know that there are issues on system that are not &amp;quot;en_US&amp;quot; or &amp;quot;C&amp;quot; local compliant.&lt;br /&gt;
&lt;br /&gt;
I have re-setup my server to be full &amp;quot;en_US.UTF8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On my Ubuntu 8.0.4 server :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /etc/default/locale&lt;br /&gt;
LANG=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# cat /var/lib/locales/supported.d/local&lt;br /&gt;
fr_FR.UTF-8 UTF-8&lt;br /&gt;
en_US.UTF-8 UTF-8&lt;br /&gt;
&lt;br /&gt;
# cat /etc/environment&lt;br /&gt;
PATH=&amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games&amp;quot;&lt;br /&gt;
LANG=&amp;quot;en_US&amp;quot;&lt;br /&gt;
LANGUAGE=&amp;quot;en_US&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And maybe you should need :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, the resulting '''screen''' command line options should be :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
screen -S Region-service -d -m -U mono OpenSim.exe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allow me to run OpenSimulator SVN.6575 without crash during more than 48 hours, and also SVN.6735 ... &lt;br /&gt;
&lt;br /&gt;
Hope those informations could help peoples.&lt;br /&gt;
&lt;br /&gt;
Just for your information : &lt;br /&gt;
&lt;br /&gt;
Here is my '''OpenSimulator Startup script''' :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;User-Service...&amp;quot;&lt;br /&gt;
/usr/local/bin/screen -S User-service -d -m -U mono OpenSim.Grid.UserServer.exe&lt;br /&gt;
sleep 5&lt;br /&gt;
echo &amp;quot;Grid-Service...&amp;quot;&lt;br /&gt;
/usr/local/bin/screen -S Grid-service -d -m -U mono OpenSim.Grid.GridServer.exe&lt;br /&gt;
sleep 5&lt;br /&gt;
echo &amp;quot;Asset-Service...&amp;quot;&lt;br /&gt;
/usr/local/bin/screen -S Asset-service -d -m -U mono OpenSim.Grid.AssetServer.exe&lt;br /&gt;
sleep 10&lt;br /&gt;
echo &amp;quot;Inventory-Service...&amp;quot;&lt;br /&gt;
/usr/local/bin/screen -S Inventory-service -d -m -U mono OpenSim.Grid.InventoryServer.exe&lt;br /&gt;
sleep 5&lt;br /&gt;
echo &amp;quot;Region-Service...&amp;quot;&lt;br /&gt;
/usr/local/bin/screen -S Region-service -d -m -U mono OpenSim.exe&lt;br /&gt;
sleep 5&lt;br /&gt;
echo &amp;quot; &amp;quot;&lt;br /&gt;
echo &amp;quot; &amp;quot;&lt;br /&gt;
/usr/local/bin/screen -list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is also a small script that give you a menu to connect to the '''screen(s)''' sessions :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use Term::Menu;&lt;br /&gt;
&lt;br /&gt;
my $EXIT = 1;&lt;br /&gt;
&lt;br /&gt;
my $MainTitle = &amp;quot;+-----------------------------------------------------+\n&amp;quot;;&lt;br /&gt;
$MainTitle .= &amp;quot;|        Connexion SCREEN aux Serveurs OPENSIM        |\n&amp;quot;;&lt;br /&gt;
$MainTitle .= &amp;quot;|                                                     |\n&amp;quot;;&lt;br /&gt;
$MainTitle .= &amp;quot;|    ( Type CTRL+A+D to exit the Screen Console. )    |\n&amp;quot;;&lt;br /&gt;
$MainTitle .= &amp;quot;+-----------------------------------------------------+\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
while ( $EXIT == 1 )&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  system(&amp;quot;screen -list | grep service &amp;gt; /tmp/osg.services&amp;quot;);&lt;br /&gt;
  my %LIST = ();&lt;br /&gt;
  open(IN, &amp;quot;/tmp/osg.services&amp;quot;);&lt;br /&gt;
  while ( my $i = &amp;lt;IN&amp;gt; )&lt;br /&gt;
  {&lt;br /&gt;
    chomp($i);&lt;br /&gt;
&lt;br /&gt;
    $i =~ s/\./#/g;&lt;br /&gt;
    $i =~ s/\-service\t/#/g;&lt;br /&gt;
    $i =~ s/\t//g;&lt;br /&gt;
    $i =~ s/\(//g;&lt;br /&gt;
    $i =~ s/\)//g;&lt;br /&gt;
&lt;br /&gt;
    my @STATUS = split(/#/, $i);&lt;br /&gt;
    $LIST{$STATUS[1]} = $STATUS[2];&lt;br /&gt;
  }&lt;br /&gt;
  close(IN);&lt;br /&gt;
&lt;br /&gt;
  my %LIST2 = ();&lt;br /&gt;
  my @indices = ('User', 'Grid', 'Asset', 'Inventory', 'Region');&lt;br /&gt;
&lt;br /&gt;
  foreach my $key ( @indices )&lt;br /&gt;
  {&lt;br /&gt;
    # print &amp;quot;$key --&amp;gt; $LIST{$key}\n&amp;quot;;&lt;br /&gt;
    if ( $LIST{$key} =~ /Attached/ )&lt;br /&gt;
    {&lt;br /&gt;
      $LIST2{$key} = &amp;quot;[X]&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
      $LIST2{$key} = &amp;quot;[ ]&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( $LIST{'User'} =~ /Attached/ )&lt;br /&gt;
  {&lt;br /&gt;
    $LIST2{'USER'} = &amp;quot;X&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    $LIST2{'USER'} = &amp;quot;-&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  system ('clear');&lt;br /&gt;
  my $prompt = new Term::Menu (&lt;br /&gt;
    spaces =&amp;gt; 3,&lt;br /&gt;
    aftertext =&amp;gt; &amp;quot;\nChoisir une option : &amp;quot;,&lt;br /&gt;
    beforetext =&amp;gt; ${MainTitle},&lt;br /&gt;
    delim =&amp;gt; &amp;quot;. &amp;quot;,&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
  my $SEP = &amp;quot;                   &amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  my $answer = $prompt-&amp;gt;menu(&lt;br /&gt;
                osg_user       =&amp;gt; [&amp;quot;OpenSimulator User Server       $SEP$LIST2{'User'}&amp;quot;,  '1'],&lt;br /&gt;
                osg_grid       =&amp;gt; [&amp;quot;OpenSimulator Grid Server       $SEP$LIST2{'Grid'}&amp;quot;,  '2'],&lt;br /&gt;
                osg_asset      =&amp;gt; [&amp;quot;OpenSimulator Asset Server      $SEP$LIST2{'Asset'}&amp;quot;,  '3'],&lt;br /&gt;
                osg_inventory  =&amp;gt; [&amp;quot;OpenSimulator Inventory Server  $SEP$LIST2{'Inventory'}&amp;quot;,  '4'],&lt;br /&gt;
                osg_region     =&amp;gt; [&amp;quot;OpenSimulator Region Server     $SEP$LIST2{'Region'}\n&amp;quot;,  '5'],&lt;br /&gt;
                osg_shutdown   =&amp;gt; [&amp;quot;Shutdown Servers (Manual)&amp;quot;,'6'],&lt;br /&gt;
                osg_shutdown2  =&amp;gt; [&amp;quot;Shutdown Servers (Hard)\n&amp;quot;,'7'],&lt;br /&gt;
                quit    =&amp;gt; [&amp;quot;Quitter&amp;quot;, 'q'],&lt;br /&gt;
                            );&lt;br /&gt;
&lt;br /&gt;
  if ( &amp;quot;${answer}&amp;quot; eq &amp;quot;quit&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    $EXIT = 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( &amp;quot;${answer}&amp;quot; eq &amp;quot;osg_user&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    system(&amp;quot;screen -d -r -S User-service&amp;quot;);&lt;br /&gt;
    $EXIT = 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( &amp;quot;${answer}&amp;quot; eq &amp;quot;osg_grid&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    system(&amp;quot;screen -d -r -S Grid-service&amp;quot;);&lt;br /&gt;
    $EXIT = 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( &amp;quot;${answer}&amp;quot; eq &amp;quot;osg_asset&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    system(&amp;quot;screen -d -r -S Asset-service&amp;quot;);&lt;br /&gt;
    $EXIT = 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( &amp;quot;${answer}&amp;quot; eq &amp;quot;osg_inventory&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    system(&amp;quot;screen -d -r -S Inventory-service&amp;quot;);&lt;br /&gt;
    $EXIT = 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( &amp;quot;${answer}&amp;quot; eq &amp;quot;osg_region&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    system(&amp;quot;screen -d -r -S Region-service&amp;quot;);&lt;br /&gt;
    $EXIT = 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( &amp;quot;${answer}&amp;quot; eq &amp;quot;osg_shutdown&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    system(&amp;quot;screen -d -r -S Region-service&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -d -r -S Inventory-service&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -d -r -S Asset-service&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -d -r -S Grid-service&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -d -r -S User-service&amp;quot;);&lt;br /&gt;
    $EXIT = 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ( &amp;quot;${answer}&amp;quot; eq &amp;quot;osg_shutdown2&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    # system(&amp;quot;/OPENSIM/shutdownGrid.py&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -S Region-service -r -m -X quit&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -S Inventory-service -r -m -X quit&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -S Asset-service -r -m -X quit&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -S Grid-service -r -m -X quit&amp;quot;);&lt;br /&gt;
    system(&amp;quot;screen -S User-service -r -m -X quit&amp;quot;);&lt;br /&gt;
    $EXIT = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Regards, &lt;br /&gt;
Ursula Matova.&lt;br /&gt;
&lt;br /&gt;
[[Category:Users]]&lt;br /&gt;
[[Category:Users]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Tips</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Tips"/>
				<updated>2012-03-04T07:01:31Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Terrain Tidbits ==&lt;br /&gt;
=== How can I flatten a region? ===&lt;br /&gt;
When you have multiple regions, that you need to terraform to a certain height, the quickest way to do it is by selecting a region, and fill the terrain to the specified height:&lt;br /&gt;
&lt;br /&gt;
 (as of version 0.6.3.8730)&lt;br /&gt;
 change region YourRegionName&lt;br /&gt;
 terrain fill 20&lt;br /&gt;
&lt;br /&gt;
''Note:'' Remember to change to the region you wish to modify if that is the only region wish to make changes to. Without using the change-region command, you may very well end up flattening multiple regions!&lt;br /&gt;
&lt;br /&gt;
As of SVN 4061&lt;br /&gt;
  terrain fill 25&lt;br /&gt;
=== What programs can I use to create terrains for OpenSim? ===&lt;br /&gt;
&lt;br /&gt;
If you are after simple terrain files (jpg, gif, etc), you can use Photoshop or any number of freeware programs, like [http://www.gimp.org/ Gimp]. If you want more complex terrains, you will need programs that output to standard 3d raw format (aka r32 or r64). [http://www.bundysoft.com/L3DT/ L3DT] and [http://www.planetside.co.uk/terragen/ Terragen] are two of the top commercial programs for this. (anyone know of a freeware one?), or you could, with some practice, use [http://www.blender.org/ Blender]. The free version of L3DT can make terrains up to 2048x2048 in size, or 8x8 regions. You can use `terrain load IMG yourfile.png` to load '''greyscale''' PNG files. Remember to use something like `terrain rescale 0 25` to make it visible. Here is some info on [[Using L3DT]] to make a terrain. &lt;br /&gt;
&lt;br /&gt;
You can also use http://lab.parkstudio.ru/terra/ if you know a bit about heightmaps and how they work. Just set the custom landscape texture gradient to pure black and pure white and turn off water. And here are some [[Free Terrains]] that you can use. Enjoy! &lt;br /&gt;
&lt;br /&gt;
Additional Terrain Related Info: [[Artist Home#Terrain]]&lt;br /&gt;
&lt;br /&gt;
=== Where do I put the files for my terrains? ===&lt;br /&gt;
This one is actually pretty simple, but first the 'hard' answer: anywhere in the PATH will work. Lost? yeah, I was too, so... just drop the file into the &amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt; directory (right where your &amp;lt;tt&amp;gt;OpenSim.exe&amp;lt;/tt&amp;gt; file is).&lt;br /&gt;
&lt;br /&gt;
=== How do I change the terrain for a group of sims? ===&lt;br /&gt;
First, the file must be in f32 (or f64?) format. This is easy to do with L3DT's export feature. (Use the RAW format and set the options to &amp;lt;tt&amp;gt;Y flipped = true&amp;lt;/tt&amp;gt; and at the bottom, change it to read 'float' instead of 'ushort'). It also needs to be a file that will cover each sim in a 256x256 layer (so, for 2x2 regions, you need a 512x512 file), It is very important that you rename the file extension to .r32 for the import to properly work.&lt;br /&gt;
Then, once you have it saved, on the &amp;lt;tt&amp;gt;OpenSim.exe&amp;lt;/tt&amp;gt; console, type in:&lt;br /&gt;
 script terrain load-tile &amp;lt;filename&amp;gt; &amp;lt;image X&amp;gt; &amp;lt;image y&amp;gt; &amp;lt;bottomleftsim X&amp;gt; &amp;lt;bottomleftsim y&amp;gt;&lt;br /&gt;
For example, I run a square of 4 sims in a 2x2 pattern. I started my sim placement at 0, 0 and ended at 1, 1. my line reads:&lt;br /&gt;
 &amp;lt;strike&amp;gt;script terrain load-tile simalpha.r32 512 512 0 0&amp;lt;/strike&amp;gt;&lt;br /&gt;
 script terrain load-tile simalpha.r32 2 2 0 0 ([[User:Oudrun|Oudrun]])&lt;br /&gt;
New syntax is using number of tiles instead of imagesize (one tile 256x256 pix). Above example is for a 2x2 region terrainfile.&lt;br /&gt;
&lt;br /&gt;
Next, before you log in, you may want to go to type in: *(THIS FUNCTION MAY NOT WORK)&lt;br /&gt;
 script terrain multiply 0.4&lt;br /&gt;
This should scale it down from the nearly 300 meters altitude I ran into to something a little more reasonable for the minimap.&lt;br /&gt;
&lt;br /&gt;
=== How do I load a terrain file on startup? ===&lt;br /&gt;
Edit the file &amp;lt;tt&amp;gt;startup_commands.txt&amp;lt;/tt&amp;gt; in the bin directory and add the above commands &amp;quot;&amp;lt;tt&amp;gt;script terrain load-tile ...&amp;lt;/tt&amp;gt;&amp;quot; and &amp;quot;&amp;lt;tt&amp;gt;script terrain multiply ...&amp;lt;/tt&amp;gt;&amp;quot; one per line.&lt;br /&gt;
&lt;br /&gt;
*** Notice this method is no longer required and should be considered a legacy function, Terrain persistance is now working 100%.&lt;br /&gt;
&lt;br /&gt;
Terrain Tidbits brought to you by Tilde, with a few questions in IRC :) - [[User:Tildeampersand|Tilde]] 10:32, 15 August 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== How do I import into OpenSimulator the terrain shape of my Second Life sim? ===&lt;br /&gt;
First, assure you are in the right region if you have more than one, by using: &lt;br /&gt;
&lt;br /&gt;
 change region &amp;lt;nowiki&amp;gt;&amp;lt;regionname&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then use the command (file extension now determines the format, use .r32 for L3DT terrains)&lt;br /&gt;
&lt;br /&gt;
 script terrain load &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Watch [http://archimedix.wordpress.com/2007/11/26/opensim/ this video] for a step-by-step tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Other useless or useful info depending on who reads it ===&lt;br /&gt;
&lt;br /&gt;
* I found out that each point on the grey scale (0 to 255) equals approximately .23 to .25 meters in terrain height. - [[CharlieO]]&lt;br /&gt;
* Also for those who want to manually edit a png file, you need at minimum 3 different shades of grey. and one has to be drastically different than the other 2 in order to have the height show correctly. - [[CharlieO]]&lt;br /&gt;
 example:&lt;br /&gt;
  1) 0,0,0 &lt;br /&gt;
  2) 223, 233, 233 &lt;br /&gt;
  3) 255, 255, 255&lt;br /&gt;
&lt;br /&gt;
=== Importing SL RAW Terrain Files (using Photoshop) ===&lt;br /&gt;
&lt;br /&gt;
1. Open Photoshop and:&lt;br /&gt;
&lt;br /&gt;
   (a) Load desired SL RAW terrain file&lt;br /&gt;
&lt;br /&gt;
   (b) Select canvas and then flip vertically, NOT&lt;br /&gt;
       horizontally&lt;br /&gt;
&lt;br /&gt;
   (c) save file as a RAW file&lt;br /&gt;
&lt;br /&gt;
If the SL RAW terrain file name is &amp;quot;[region name]_256_256.raw&amp;quot;&lt;br /&gt;
then save the new RAW file as &amp;quot;[region name]_flipv_256x256.raw&amp;quot;&lt;br /&gt;
or any other name to distinguish it from the SL RAW terrain&lt;br /&gt;
file. The expression &amp;quot;flipv&amp;quot; stands for flipped vertically and&lt;br /&gt;
256x256 is the size for the 13-channel interlaced 8-bit RAW&lt;br /&gt;
file.&lt;br /&gt;
&lt;br /&gt;
2. Move the new RAW file or files to the Opensim bin folder&lt;br /&gt;
   &lt;br /&gt;
   (a) navigate to&lt;br /&gt;
&lt;br /&gt;
       C:\Program Files\Opensim\bin [or whatever the path is]&lt;br /&gt;
&lt;br /&gt;
   (b) copy each new RAW terrain file into that directory&lt;br /&gt;
&lt;br /&gt;
3. Run opensim and in the console on the last line type:&lt;br /&gt;
&lt;br /&gt;
   (a) change region [enter region name]&lt;br /&gt;
&lt;br /&gt;
   (b) terrain load [enter name of new RAW terrain file]&lt;br /&gt;
&lt;br /&gt;
   (c) terrain elevate [enter meters to elevate]&lt;br /&gt;
   &lt;br /&gt;
Do not type the square brackets and repeat the above commands&lt;br /&gt;
for each region.&lt;br /&gt;
&lt;br /&gt;
If the above commands are entered when the region is set to&lt;br /&gt;
[root], then each region on the simulator will be affected.&lt;br /&gt;
The only useful command in this case would be the terrain&lt;br /&gt;
elevate command but only if the terrain is to be elevated&lt;br /&gt;
by the same amount in each region.&lt;br /&gt;
&lt;br /&gt;
How much to elevate the terrain depends on the multiplier&lt;br /&gt;
used for the SL RAW terrain file (e.g. elevate terrain by&lt;br /&gt;
1.474 meters if the multiplier is 0.1016; i.e. value 12&lt;br /&gt;
in the green channel of the RAW file).&lt;br /&gt;
&lt;br /&gt;
== General Setup Tricks ==&lt;br /&gt;
=== Changing viewer start webpage in standalone mode ===&lt;br /&gt;
&lt;br /&gt;
In order to change the page that the viewer starts in /opensim/bin/ there is a http_loginform.html.example page. Removing the .example will make this page be the start webpage which you can edit etc. Since the login html code is no longer needed this can be modified at will.&lt;br /&gt;
&lt;br /&gt;
=== Placing data away from the code ===&lt;br /&gt;
A good set up, separates the code (replaced often in this project) from the data (&amp;quot;unique&amp;quot; and more valuable for the user). Things to do:&lt;br /&gt;
* separate your region definitions by using the ''regionload_regionsdir'' value in the OpenSim.ini&lt;br /&gt;
 e.g. regionload_regionsdir=&amp;quot;../OSHirvi/Regions&amp;quot; places the Regions directory besides the &amp;quot;code directory&amp;quot; in a folder called OSHirvi&lt;br /&gt;
* make your data persistent in a database (see above), this requires (again) to edit your OpenSim.ini file. You might use unique names to separate multiple setups within the database server you use.&lt;br /&gt;
 e.g. ''storage_connection_string=''&amp;quot;Data Source=localhost;Database=OSHirvi;User ID=OSHirvi;Password=password;&amp;quot;; &lt;br /&gt;
* the next step is copying/cutting OpenSim.ini itself away from the code&lt;br /&gt;
 p.e. place this file in ../OSHirvi/OpenSim.1.ini &lt;br /&gt;
* to point from your place ../ to your wanted runtime directory create a link (or some call it shortcut). If you download a newer build just change the link.&lt;br /&gt;
 e.g. ln -s opensimservercode opensim-0.5.8.5695&lt;br /&gt;
&lt;br /&gt;
Now create a script, and call it startHirvi.sh that:&lt;br /&gt;
 a) gets it current directory in the code directory, found by the link&lt;br /&gt;
 b) starts up OpenSim.exe with the required .ini file, by using the ''-inifile'' startup option. You can still add other options. &lt;br /&gt;
 cd ../opensimservercode&lt;br /&gt;
 mono OpenSim.exe -inifile ../OSHirvi/OpenSim.1.ini -gridmode=true&lt;br /&gt;
&lt;br /&gt;
Oke, done this you are left with a code directory still filled with runtime data, but this is just persistent temporary stuff that the server automatic rebuilds if it is deleted. Still a pitty there is no way to get it separate. &lt;br /&gt;
 ./addin-db-00&lt;br /&gt;
 ./addins&lt;br /&gt;
 ./OpaenSim.log and many others if you run in grid-mode&lt;br /&gt;
 ./estate_settings.xml and many other configuration settings&lt;br /&gt;
&lt;br /&gt;
=== Deleting a few recently created prims ===&lt;br /&gt;
Occaisionally, one ends up with one or more prims that one would like to delete on a region but doesnt know where they are. Here is one possible solution to that problem.&lt;br /&gt;
&lt;br /&gt;
Given the site, http://epochconverter.com, one can enter a human date and get a binary such as an epoch. For instance, 4/21/2008 19:00:34GMT is &amp;quot;1208797234&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then, from a sqlite3 prompt or a mysql prompt, one can do:&lt;br /&gt;
 select CreationDate from prims where CreationDate&amp;gt;&amp;quot;1208797234&amp;quot;;&lt;br /&gt;
 delete from prims where CreationDate&amp;gt;&amp;quot;1208797234&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
[[Category:Users]]&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Testing</id>
		<title>Testing</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Testing"/>
				<updated>2012-03-04T07:01:21Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quicklinks}}&lt;br /&gt;
{{content}}&lt;br /&gt;
&lt;br /&gt;
= Automated Testing =&lt;br /&gt;
For information on the current continuous integration system for OpenSimulator go to [[Automated Testing]].&lt;br /&gt;
&lt;br /&gt;
For information about debugging the test cases go to [[Debugging Unit Tests]].&lt;br /&gt;
&lt;br /&gt;
= Current functionality =&lt;br /&gt;
&lt;br /&gt;
* [[Features Currently Supported]]&amp;lt;br /&amp;gt;&lt;br /&gt;
* [[Priorities and Test Plans]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Check [[LSL Status]] Page for currently implemented scripting features.&amp;lt;br /&amp;gt;&lt;br /&gt;
Note: not all scripting features are supported yet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Standalone region tested with svn version 9379&lt;br /&gt;
* Grid region tested with svn version 9379&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Account ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| login&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| logout&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| relog&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Home - Login Start Location&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK - Configurable by Region&lt;br /&gt;
|- &lt;br /&gt;
| Alt Home - if Home unavailable&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Alternate Region hardset by GRID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== World ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| day / night cycle&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| windlight&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| clouds&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|- &lt;br /&gt;
| wind&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|- &lt;br /&gt;
| water and water texture&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| terrain and terrain textures&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|}&lt;br /&gt;
== Accounts and permissions ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| multiple account creation&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| permissions per account&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| account has inventory&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| sim supports multiple logins&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|}&lt;br /&gt;
== Avatar ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| teleport within region&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | partially working (always facing north after teleport)&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | partially working (go inside ground when teleport from low to high position,always facing north after teleport)&lt;br /&gt;
|- &lt;br /&gt;
| teleport between regions&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| built-in animations (walking, flying, sitting)&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | partially working&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | partially working&lt;br /&gt;
|- &lt;br /&gt;
| uploaded animations / gestures&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| uploaded sounds&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| can wear clothes&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| can attach items&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| profile&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | pics &amp;amp; text&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | pics &amp;amp; text&lt;br /&gt;
|- &lt;br /&gt;
| DRAG / CTRL DRAG objects&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|}&lt;br /&gt;
== Building ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| create prim&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| change prim type&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| change prim transparency&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| change prim colour&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| change prim texture (including uploaded textures)&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| change prim size, cut, hollow, etc&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| prim light, fullbright and flexi&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| link prims&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| unlink prims&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| permissions&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|- &lt;br /&gt;
| objects persist in world across login / logoff and server restart&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| parcel support&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK See Parcels Below&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK See Parcels Below&lt;br /&gt;
|}&lt;br /&gt;
== Terraforming ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| select land&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| raise land&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| lower land&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| flatten land&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| roughen land&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| smooth land&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|}&lt;br /&gt;
== Land and parcels ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| subdivide&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|- &lt;br /&gt;
| join&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|- &lt;br /&gt;
| buy and sell&lt;br /&gt;
|  bgcolor=&amp;quot;orange&amp;quot; | Partial, sell and buy, but no money recieved. (Set helper uri to IP ADDRESS AND PORT:9000&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working (when using a 3rd party module)&lt;br /&gt;
|- &lt;br /&gt;
| Set Land To Group&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Allow Deed To Group&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Owner Makes Contribution With Deed&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working (when using a 3rd party module)&lt;br /&gt;
|- &lt;br /&gt;
| Buy Pass - (Temporary Paid Access)&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|- &lt;br /&gt;
| Buy For Group&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;row&amp;quot; colspan=&amp;quot;3&amp;quot;| '''Covenants'''&lt;br /&gt;
|- &lt;br /&gt;
| Buy For Group&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Estate Owner&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;row&amp;quot; colspan=&amp;quot;3&amp;quot;| '''Land Objects'''&lt;br /&gt;
|- &lt;br /&gt;
| Sim Usage&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Prims on Parcel&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Return Parcel Primitives&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| AutoReturn of Prims&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Show Owners (Land Menu)&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;row&amp;quot; colspan=&amp;quot;3&amp;quot;| '''Land Options'''|&lt;br /&gt;
|- &lt;br /&gt;
| Show Owners (Land Menu)&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;row&amp;quot; colspan=&amp;quot;3&amp;quot;| '''Land Media'''&lt;br /&gt;
|- &lt;br /&gt;
| Replace Texture With Media&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Music Stream URL&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Restrict Spatialized Sounds to Parcel&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;row&amp;quot; colspan=&amp;quot;3&amp;quot;| '''Land Access'''&lt;br /&gt;
|- &lt;br /&gt;
| Show Owners (Land Menu)&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;row&amp;quot; colspan=&amp;quot;3&amp;quot;| '''Land Bans'''&lt;br /&gt;
|- &lt;br /&gt;
| Limit Access to Group&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Yes&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Yes&lt;br /&gt;
|- &lt;br /&gt;
| Limit Access by Avatar&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Individual Avatar Ban&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Working - Grid can disable feature gridwide&lt;br /&gt;
|}&lt;br /&gt;
== UI ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| friends list&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| uploads&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK, jpg, bmp,tga (alpha)&lt;br /&gt;
|- &lt;br /&gt;
| edit profile&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK, but not complete&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK, but not complete&lt;br /&gt;
|- &lt;br /&gt;
| search&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | partially working(User, Groups, Parcel, Region)&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | Working(User, Groups, Land Sales, Events, Classifieds)&lt;br /&gt;
|- &lt;br /&gt;
| large map&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| minimap&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| money&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Works if using IP ADDRESS AND PORT:9000&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Works if using IP ADDRESS AND PORT:9000&lt;br /&gt;
|- &lt;br /&gt;
| HUD attachments&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|}&lt;br /&gt;
== Friends ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| add&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| remove&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| permissions&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| mapping&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| online visibility&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| can edit my objects&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| send teleport&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|}&lt;br /&gt;
== Groups ==&lt;br /&gt;
Groups are implemented, but must be enabled in opensim.ini&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| create&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| join&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| description&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| graphic&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| notices&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| vote&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|- &lt;br /&gt;
| invite&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| remove&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| members&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| group list&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| publish&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|- &lt;br /&gt;
| set title&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| change active title&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| enrollment fee&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|- &lt;br /&gt;
| open enrollment&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| set mature flag&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| group land&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|}&lt;br /&gt;
=== Group Roles ===&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| create&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| edit&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| remove&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| add person&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| remove person&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| abilities&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | Partially Implemented&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | Partially Implemented&lt;br /&gt;
|}&lt;br /&gt;
== Chat, IM, Voice ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| local chat&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK - Plus Configurable Distance (server)&lt;br /&gt;
|- &lt;br /&gt;
| Shout&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK - Plus Configurable Distance (server)&lt;br /&gt;
|- &lt;br /&gt;
| send / receive IM&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| offline IM&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| group IM&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK, but groups must be enabled&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK, but groups must be enabled&lt;br /&gt;
|- &lt;br /&gt;
| multiple friend IM&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|- &lt;br /&gt;
| participant list&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | Not Yet Implemented&lt;br /&gt;
|- &lt;br /&gt;
| voice&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Must enable and use freeswitch voice&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Must enable and use freeswitch voice&lt;br /&gt;
|- &lt;br /&gt;
| IRC bridge&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK (Configurable on Server)&lt;br /&gt;
|}&lt;br /&gt;
== Physics / Collision ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;150&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;150&amp;quot; | basicphysics&lt;br /&gt;
!  width=&amp;quot;150&amp;quot; | POS&lt;br /&gt;
!  width=&amp;quot;150&amp;quot; | OpenDynamicsEngine&lt;br /&gt;
!  width=&amp;quot;150&amp;quot; | modified_BulletX&lt;br /&gt;
!  width=&amp;quot;150&amp;quot; | RealPhysX&lt;br /&gt;
!  width=&amp;quot;150&amp;quot; | BulletDotNET&lt;br /&gt;
|- &lt;br /&gt;
| walk on ground&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | partially working (ground is very slippery)&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| fly&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| sit on ground&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| sit on object&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | partially working (autopilot has trouble getting to the right spot 'try phantom prim')&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| walk on object&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| bump into object&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Collidable Linksets&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Avatar Land on Prim&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| prim physics&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| Physical (active) Linksets&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| cut/hollow/dimpled prim (non)collisions&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK with Meshmerizer&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| physical vehicles&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK, but friction is much too high.&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|}&lt;br /&gt;
== Scripting ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| create LSL script&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK, see supported commands&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK, see supported commands&lt;br /&gt;
|- &lt;br /&gt;
| add script to object&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | Drag from inventory into prim&lt;br /&gt;
|- &lt;br /&gt;
| execute script in object&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|}&lt;br /&gt;
Note: not all scripting features are supported yet.&lt;br /&gt;
Check [[LSL Status]] for currently implemented features.&lt;br /&gt;
== Inventory ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid&lt;br /&gt;
|- &lt;br /&gt;
| create new items (folder, notes, body, clothes, prims, scripts)&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| delete prims -&amp;gt; trash&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| delete items -&amp;gt; trash&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| trash folder functions (restore, purge)&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| search inventory&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| &amp;quot;recent items&amp;quot; list&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | not working&lt;br /&gt;
|  bgcolor=&amp;quot;yellow&amp;quot; | half, only new uploaded and self created stuff, but acctepted inventory offers not listed (8814)&lt;br /&gt;
|- &lt;br /&gt;
| inventory persists across logout / login&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| drag items to / from world&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|- &lt;br /&gt;
| give inventory items to other avatars&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | OK&lt;br /&gt;
Inventory should not yet be treated as permanent, whilst development is still occurring.&lt;br /&gt;
|}&lt;br /&gt;
== Permissions ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone - Allowed User&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Standalone - Denied User&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid - Allowed User&lt;br /&gt;
!  width=&amp;quot;200&amp;quot; | Grid - Denied User&lt;br /&gt;
|- &lt;br /&gt;
| Run Script - Estate Disabled&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | no&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | no&lt;br /&gt;
|- &lt;br /&gt;
| Run Script - Parcel Disabled&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | no&lt;br /&gt;
|- &lt;br /&gt;
| Rez Object - Estate Disabled&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | N/A&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | N/A&lt;br /&gt;
|- &lt;br /&gt;
| Rez Object - Parcel Disabled&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|- &lt;br /&gt;
| Edit Estate Settings&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | no&lt;br /&gt;
|- &lt;br /&gt;
| Edit Terrain&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|- &lt;br /&gt;
| Duplicate (Drag-Duplicate AND Ctrl-D) Object&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|- &lt;br /&gt;
| Take Object&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|- &lt;br /&gt;
| Move Object&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|- &lt;br /&gt;
| Copy Object&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|- &lt;br /&gt;
| Edit Object&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|- &lt;br /&gt;
| Delete Object&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|- &lt;br /&gt;
| Add/Remove to Object's Inventory&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;grey&amp;quot; | unknown&lt;br /&gt;
|  bgcolor=&amp;quot;lime&amp;quot; | yes&lt;br /&gt;
|  bgcolor=&amp;quot;red&amp;quot; | yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
-- note --&lt;br /&gt;
new objects had to be rezzed for each change in permissions for a test - new permissions settings did not apply to existing objects&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Teleports</id>
		<title>Teleports</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Teleports"/>
				<updated>2012-03-04T07:01:10Z</updated>
		
		<summary type="html">&lt;p&gt;MakoBot: Robot: Replacing 'OpenSim' to 'OpenSimulator', which is the precise name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Quicklinks}}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page explains the several flavors of teleports in and around opensim. It reflects the code as of the creation of this page. Likely will need updating soon.&lt;br /&gt;
&lt;br /&gt;
== Grid Teleport Procedure ==&lt;br /&gt;
&lt;br /&gt;
[[Image:GridTeleports.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Hypergrid Teleport Procedure ==&lt;br /&gt;
&lt;br /&gt;
[[Image:HypergridTeleports.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Open Grid Protocol Teleport Procedure ==&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.secondlife.com/wiki/OGP_Explained#Teleport OGP Explained &amp;quot;Teleport&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Related ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Child-event-queue.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== Teleports in OpenSimulator as of 2009-02-06 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Teleport.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Teleport Study (2009-03-05) ==&lt;br /&gt;
&lt;br /&gt;
The following four pictures compare the current agent transfer scheme with 3 possible agent transfer schemes. The different schemes have slightly different requirements with respect to authentication.&lt;br /&gt;
&lt;br /&gt;
[[Image:TPCurrent.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Image:TPScenarioA.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Image:TPScenarioB.JPG]]&lt;br /&gt;
&lt;br /&gt;
[[Image:TPScenarioC.JPG]]&lt;/div&gt;</summary>
		<author><name>MakoBot</name></author>	</entry>

	</feed>