
Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 235

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 274

Warning: Undefined array key "media" in /volume1/web/wiki/feed.php on line 385
<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://live.spdns.org/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>move IT Home Base</title>
        <description></description>
        <link>http://live.spdns.org/wiki/</link>
        <lastBuildDate>Sat, 04 Apr 2026 12:19:01 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>http://live.spdns.org/wiki/lib/tpl/peanutbutter2/images/favicon.ico</url>
            <title>move IT Home Base</title>
            <link>http://live.spdns.org/wiki/</link>
        </image>
        <item>
            <title>Installation FreeSwitch</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/konfiguration/freeswitch?do=revisions&amp;rev=1575021528</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;installation_freeswitch&quot;&gt;Installation FreeSwitch&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Mit FreeSwitch können Sie die Voice-Funktion in OpenSIM nutzen um sich nicht nur über die Tastatur im Chat mit anderen Avataren zu unterhalten, sondern auch über ein Mikrofon mit Ihrer Stimme.
&lt;/p&gt;

&lt;p&gt;
Erste Informationen zu FreeSwitch erhalten Sie auf der offiziellen Webseite: &lt;a href=&quot;http://www.freeswitch.org&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.freeswitch.org&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.freeswitch.org&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation FreeSwitch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_freeswitch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-338&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;linux_installationsuse_3264-bit&quot;&gt;Linux Installation: Suse 32/64-bit&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Installation und Konfiguration von Freeswitch für OpenSim unter Linux&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Wichtige Links:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://wiki.freeswitch.org/wiki/Main_Page&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://wiki.freeswitch.org/wiki/Main_Page&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://wiki.freeswitch.org/wiki/Main_Page&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.freeswitch.de&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.freeswitch.de&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.freeswitch.de&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://opensimulator.org/wiki/Freeswitch_Module&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://opensimulator.org/wiki/Freeswitch_Module&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://opensimulator.org/wiki/Freeswitch_Module&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
FreeSwitch ist eine Kommunikationsplattform die unter MLP 1.1 lizensiert ist. Der Vorteil ist der modulare Aufbau und die SIP-Funktionalität die wir hier nutzen um Voice (Sprachkommunikation) in OpenSim zu integrieren. Die native Unterstützung der gängigen Viewer ist dabei das Schmankerl. Auf die Kompilierung von FreeSwitch werde ich hier nicht näher eingehen da sie ausreichend auf der FreeSwitch Website erläutert wird. Es gibt auch je nach Distribution fertig kompilierte Pakete die sich einfacher installieren lassen. Bitte vorher alle Abhängigkeiten überprüfen damit ein reibungsloses kompilieren möglich ist. Beim installieren von FreeSwitch ist dringend auf folgende Einstellungen zu achten damit es erfolgreich funktioniert:
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Linux Installation: Suse 32\/64-bit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;linux_installationsuse_3264-bit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;339-1352&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;herunterladen_von_freeswitch&quot;&gt;Herunterladen von Freeswitch&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ich empfehle die svn in folgendes Verzeichnis zu laden:
&lt;/p&gt;

&lt;p&gt;
/opt/scr/
&lt;/p&gt;

&lt;p&gt;
der Ordner scr muss noch angelegt werden da er meistens nicht vorhanden ist.
&lt;/p&gt;

&lt;p&gt;
md scr 
&lt;/p&gt;

&lt;p&gt;
dann FreeSwitch herunterladen:
&lt;/p&gt;

&lt;p&gt;
svn checkout &lt;a href=&quot;http://svn.freeswitch.org/svn/freeswitch/trunk&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://svn.freeswitch.org/svn/freeswitch/trunk&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://svn.freeswitch.org/svn/freeswitch/trunk&lt;/a&gt; freeswitch
&lt;/p&gt;

&lt;p&gt;
Der Quellcode befindet sich dann in:
&lt;/p&gt;

&lt;p&gt;
/opt/scr/freeswitch
&lt;/p&gt;

&lt;p&gt;
nach der Installation (make install) in:
&lt;/p&gt;

&lt;p&gt;
/opt/freeswitch
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Herunterladen von Freeswitch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;herunterladen_von_freeswitch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1353-1769&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;wichtige_schritte&quot;&gt;Wichtige Schritte&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Da FreeSwitch modular aufgebaut ist sind in der Grundkonfiguration nicht alle Module aktiviert. Manche werden auch erst nach der Aktivierung kompiliert. Für den reibungslosen Ablauf brauchen wir zwei dieser Module die nicht automatisch kompiliert werden:
&lt;/p&gt;

&lt;p&gt;
codecs/mod_siren ←– siren 14 Codec (sozusagen die Sprachkomprimierung)
xml_int/mod_xml_curl ←– Ein Modul um automatische Konfiguration von FreeSwitch über XML zu ermöglichen.
&lt;/p&gt;

&lt;p&gt;
Nach dem Herunterladen von FreeSwitch und der Vorbereitung der Kompilierung:
&lt;/p&gt;

&lt;p&gt;
./bootstrap.sh
./configure –prefix=/usr/local/freeswitch ←– entspricht dem Pfad der späteren Installierung
&lt;/p&gt;

&lt;p&gt;
muss man diese Module in:
&lt;/p&gt;

&lt;p&gt;
../freeswitch/conf/autoload_configs/modules.conf.xml 
&lt;/p&gt;

&lt;p&gt;
aktivieren indem man die „#“ vor den entsprechenden Modulen entfernt.
&lt;/p&gt;

&lt;p&gt;
Danach kann man den Quellcode mit
&lt;/p&gt;

&lt;p&gt;
make
make install
make sounds-install
make moh-install
make samples
&lt;/p&gt;

&lt;p&gt;
kompilieren und installieren. Hat das alles soweit erfolgreich funktioniert müssen noch 3 Konfigurationsdateien angepasst werden:
&lt;/p&gt;

&lt;p&gt;
../freeswitch/conf/autoload_configs/modules.conf.xml
&lt;/p&gt;

&lt;p&gt;
Hier müssen die beiden Module die wir gerade kompiliert haben aktiviert werden. Dazu entfernt man einfach die Auskommentierung.
&lt;/p&gt;

&lt;p&gt;
Vorher:
&amp;lt;!– „&amp;lt;load module=„mod_xml_curl“/&amp;gt;–&amp;gt;
&amp;lt;!– &amp;lt;load module=„mod_siren“/&amp;gt;/&amp;gt;–&amp;gt;
&lt;/p&gt;

&lt;p&gt;
Nachher:
&lt;em&gt;&amp;lt;load module=„mod_xml_curl“/&amp;gt;
&amp;lt;load module=„mod_siren“/&amp;gt;&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Dann müssen wir noch den Codec aktivieren. Dazu müssen wir folgende XML editieren:
&lt;/p&gt;

&lt;p&gt;
../ freeswitch/conf/vars.xml
&lt;/p&gt;

&lt;p&gt;
In dieser XML gibt es eine Zeile
&lt;/p&gt;

&lt;p&gt;
Vorher:
&amp;lt;X-PRE-PROCESS cmd=„set“ data=„global_codec_prefs= G722,PCMU,PCMA,GSM“/&amp;gt;
dieser fügt bitte folgendes hinzu
G7221@32000h,G722
&lt;/p&gt;

&lt;p&gt;
Nachher:
&lt;em&gt;&amp;lt;X-PRE-PROCESS cmd=„set“ data=„global_codec_prefs=G7221@32000h,G722,PCMU,PCMA,GSM“/&amp;gt;&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Dann nur noch die Anbindung an OpenSim. Dazu editieren wir die XML:
&lt;/p&gt;

&lt;p&gt;
../ freeswitch/conf/autoload_configs/xml_curl.conf.xml
&lt;/p&gt;

&lt;p&gt;
Bitte ersetzt folgendes mit dem kompletten Inhalt und achtet darauf das Ihr die IP Eures OpenSim-Servers an den dafür vorgesehenen Platz einfügt.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;&amp;lt;configuration name=„xml_curl.conf“ description=„cURL XML Gateway“&amp;gt;
 &amp;lt;bindings&amp;gt;
       &amp;lt;binding name=„example“&amp;gt;
               &amp;lt;param name=„gateway-url“ value=„&lt;a href=&quot;http://EureOpenSimIP:9000/api/freeswitch-config&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://EureOpenSimIP:9000/api/freeswitch-config&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://EureOpenSimIP:9000/api/freeswitch-config&lt;/a&gt;“ bindings=„directory“/&amp;gt;
               &amp;lt;param name=„disable-100-continue“ value=„true“/&amp;gt;
       &amp;lt;/binding&amp;gt;
       &amp;lt;binding name=„local“&amp;gt;
               &amp;lt;param name=„gateway-url“ value=„&lt;a href=&quot;http://EureOpenSimIP:9000/api/freeswitch-config&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://EureOpenSimIP:9000/api/freeswitch-config&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://EureOpenSimIP:9000/api/freeswitch-config&lt;/a&gt;“ bindings=„dialplan“/&amp;gt;
               &amp;lt;param name=„disable-100-continue“ value=„true“/&amp;gt;
       &amp;lt;/binding&amp;gt;
 &amp;lt;/bindings&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Der Port 9000 ist natürlich auch an Eure Sim anzupassen falls dieser vom Standard abweicht. Danach könnt Ihr FreeSwitch starten.
&lt;/p&gt;

&lt;p&gt;
../freeswitch/bin/./freeswitch
&lt;/p&gt;

&lt;p&gt;
Der Freeswitch-Service sollte immer vor dem OpenSim-Service gestartet sein.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Wichtige Schritte&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;wichtige_schritte&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1770-4638&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;opensim_konfiguration&quot;&gt;OpenSim Konfiguration&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Hier müssen wir nur in der OpenSim.ini folgendes ergänzen:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;[FreeSwitchVoice]
   enabled = true
   ;FreeSwitch server is going to contact us and ask us all
   ;sorts of things.
   freeswitch_server_user = freeswitch
   freeswitch_server_pass = password
   freeswitch_api_prefix = /api
   ;The  IP address of your opensim voice region
   freeswitch_service_server = IP_Adresse_des_OpenSimServers
   ;the port your region is running on
   freeswitch_service_port = 9000 
   ;your freewitch IP address
   freeswitch_realm = IP_Adresse_des_FreeSwitch_Services
   freeswitch_sip_proxy = IP_Adresse_des_FreeSwitch_Services:5060
   freeswitch_attempt_stun = false
   freeswitch_stun_server = IP_Adresse_des_FreeSwitch_Services
   freeswitch_echo_server = IP_Adresse_des_FreeSwitch_Services
   freeswitch_echo_port = 50505
   freeswitch_well_known_ip = IP_Adresse_des_FreeSwitch_Services
   freeswitch_default_timeout = 5000
   freeswitch_subscribe_retry = 120&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Achtet auch hier bitte auf den Port Eurer Sim ! Danach einfach den OpenSim-Server starten.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;WICHTIG&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Der Freeswitch-Service ist nur in den aktuellsten Versionen von OpenSim möglich. Achtet darauf das beim starten von OpenSim im CLI ein [FreeSwitchVoice] Eintrag zu sehen ist. Dann nur noch InWorld auf der Region bei den Landeinstellungen Voice aktivieren und dann solltet Ihr diesen putzigen Punkt über dem Kopf sehen und wenn Ihr alleine auf der Region seit eine Warteschleifenmusik hören. Zum testen empfand ich diese als sehr hilfreich. Diese kann man folgendermassen ausschalten:
&lt;/p&gt;

&lt;p&gt;
../ freeswitch/conf/autoload_configs/conference.conf.xml
&lt;/p&gt;

&lt;p&gt;
einfach die Sounds auskommentieren:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;    […]
      &amp;lt;!– File to play if you are alone in the conference –&amp;gt;
      &amp;lt;!– &amp;lt;param name=„alone-sound“ value=„conference/conf-alone.wav“/&amp;gt; –&amp;gt;
      […]
      &amp;lt;!– File to play when you&amp;#039;re alone (music on hold)–&amp;gt;
      &amp;lt;!– &amp;lt;param name=„moh-sound“ value=„$${hold_music}“/&amp;gt; –&amp;gt;
      &amp;lt;!– File to play when you join the conference –&amp;gt;
      &amp;lt;!– &amp;lt;param name=„enter-sound“ value=„tone_stream:&lt;em&gt;%(200,0,500,600,700)“/&amp;gt; [^] –&amp;gt;
      &amp;lt;!– File to play when you leave the conference –&amp;gt;
      &amp;lt;!– &amp;lt;param name=„exit-sound“ value=„tone_stream:&lt;/em&gt;%(500,0,300,200,100,50,25)“/&amp;gt; [^] –&amp;gt;
      &amp;lt;!– File to play when you ae ejected from the conference –&amp;gt;
      &amp;lt;!– &amp;lt;param name=„kicked-sound“ value=„conference/conf-kicked.wav“/&amp;gt; –&amp;gt;
      […]&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Natürlich auch an die Firewall denken um die von FreeSwitch benötigten Ports zu öffnen:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Port(s)     &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Protokoll &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Bezeichnung                                                                         &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 1719        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; H.323 Gatekeeper RAS-Port                                                           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 1720        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TCP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; H.323 Call Signalling                                                               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 3478        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; STUN Service, für NAT traversal                                                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 3479        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; STUN Service, für NAT traversal                                                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5002        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TCP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; MLP Protocol Server                                                                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5003        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Neighborhood Service                                                                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5060        &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; UDP &amp;amp; TCP &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; SIP UAS, für SIP Signalisierung (Standard SIP-Port, für default intern Profil)      &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5070        &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; UDP &amp;amp; TCP &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; SIP UAS, für SIP Signalisierung (für default „NAT“ Profil)                          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5080        &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; UDP &amp;amp; TCP &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; SIP UAS, für SIP Signalisierung (für default „External“ Profil)                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 16384-32768 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; RTP/RTCP Multimedia Streaming, für Audio/Video Daten in SIP und anderen Protokollen &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7163-8425&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;OpenSim Konfiguration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;opensim_konfiguration&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4639-8426&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;linux_installationubuntu_32-bit&quot;&gt;Linux Installation: Ubuntu 32-bit&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Linux Installation: Ubuntu 32-bit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;linux_installationubuntu_32-bit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;8427-8473&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;vorbereitung&quot;&gt;1. Vorbereitung&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
apt-get update
&lt;/p&gt;

&lt;p&gt;
apt-get install -y autoconf automake libtool build-essential subversion libxml2
apt-get install -y libxml2-dev libtiff4 libtiff4-dev php5 php5-cli
apt-get install -y php5-common php5-mcrypt php5-mysql php5-gd php5-pgsql php-pear php-db
apt-get install -y libmysqlclient15-dev curl sox libssl-dev libncurses5-dev bison
apt-get install -y libaudiofile-dev libnewt-dev libcurl4-gnutls-dev 
apt-get install -y libnet-ssleay-perl openssl ssl-cert libauthen-pam-perl
apt-get install -y libio-pty-perl libmd5-perl
apt-get install -y libpg-perl libdbd-pg-perl  sqlite3
apt-get install -y libsqlite3-dev openssl ssl-cert
apt-get install -y libapache2-mod-php5 libmcrypt-dev
&lt;/p&gt;

&lt;p&gt;
mkdir /home/opensim/freeswitch
cd  /home/opensim/freeswitch
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1. Vorbereitung&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vorbereitung&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;8474-9243&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;freeswitch_installation&quot;&gt;2. FreeSwitch Installation&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
svn checkout &lt;a href=&quot;http://svn.freeswitch.org/svn/freeswitch/trunk&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://svn.freeswitch.org/svn/freeswitch/trunk&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://svn.freeswitch.org/svn/freeswitch/trunk&lt;/a&gt; freeswitch
&lt;/p&gt;

&lt;p&gt;
cd freeswitch
cd build
cp modules.conf.in modules.conf
&lt;/p&gt;

&lt;p&gt;
vi modules.conf
&lt;/p&gt;

&lt;p&gt;
Suchen Sie die Zeile:
&lt;/p&gt;

&lt;p&gt;
#codecs/mod_siren
&lt;/p&gt;

&lt;p&gt;
und entfernen Sie das # Zeichen.
&lt;/p&gt;

&lt;p&gt;
Suchen Sie die Zeile:
&lt;/p&gt;

&lt;p&gt;
#xml_int/mod_xml_curl
&lt;/p&gt;

&lt;p&gt;
und entfernen Sie das # Zeichen.
&lt;/p&gt;

&lt;p&gt;
Speichern Sie die Datei.
&lt;/p&gt;

&lt;p&gt;
cd ..
AUTOCONF=/usr/bin/autoconf ./bootstrap.sh
&lt;/p&gt;

&lt;p&gt;
Warten Sie bis die Operationen abgeschlossen sind, dann weiter mit:
&lt;/p&gt;

&lt;p&gt;
./configure –prefix=/usr/local/freeswitch
&lt;/p&gt;

&lt;p&gt;
Warten Sie wieder bis alles abgeschlossen ist, dann weiter mit:
&lt;/p&gt;

&lt;p&gt;
make
&lt;/p&gt;

&lt;p&gt;
Warten Sie wiederrum bis alles abgeschlossen ist, dann weiter mit:
&lt;/p&gt;

&lt;p&gt;
make install
make mod_siren-install
&lt;/p&gt;

&lt;p&gt;
make mod_xml_curl-install
make sounds-install
&lt;/p&gt;

&lt;p&gt;
make sounds-install
&lt;/p&gt;

&lt;p&gt;
make moh-install
make moh-install
&lt;/p&gt;

&lt;p&gt;
Bitte beachten Sie das die obige Wiederholung des Kommandos kein Fehler ist ! Dann weiter mit:
&lt;/p&gt;

&lt;p&gt;
make samples
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2. FreeSwitch Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;freeswitch_installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;9244-10160&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;freeswitch_konfiguration_fuer_opensim&quot;&gt;3. FreeSwitch Konfiguration für OpenSIM&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Wir nehmen bei der folgenden Konfiguration folgendes an. Bei Abweichungen auf Ihrem Computer und Netzwerk müssen Sie entsprechend anders konfigurieren. Dies ist quasi nur ein Beispiel von vielen möglichen Konfigurationen:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; der Server ist direkt an das Internet angeschlossen und verfügt über die öffentliche IP-Adresse 192.111.222.33&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; es gibt keine Firewall die den ein- und ausgehenden Datenfluss irgendwie einschränkt&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; OpenSIM läuft auf dem TCP-Port 9000 und ist auf demselben Computer installiert wie FreeSwitch&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Geben Sie nun folgendes ein:
&lt;/p&gt;

&lt;p&gt;
cd /usr/local/freeswitch/conf/autoload_configs/
&lt;/p&gt;

&lt;p&gt;
vi modules.conf.xml
&lt;/p&gt;

&lt;p&gt;
Suchen Sie die Zeile:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;!– &amp;lt;load module=„mod_xml_curl“/&amp;gt; –&amp;gt;
&lt;/p&gt;

&lt;p&gt;
und ändern Sie diese in:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;load module=„mod_xml_curl“/&amp;gt;
&lt;/p&gt;

&lt;p&gt;
Suchen Sie die Zeile:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;!–&amp;lt;load module=„mod_siren“/&amp;gt;–&amp;gt;
&lt;/p&gt;

&lt;p&gt;
und ändern Sie diese in:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;load module=„mod_siren“/&amp;gt;
&lt;/p&gt;

&lt;p&gt;
Speichern Sie die Datei. Weiter mit:
&lt;/p&gt;

&lt;p&gt;
cd /usr/local/freeswitch/conf/autoload_configs
&lt;/p&gt;

&lt;p&gt;
vi xml_curl.conf.xml
&lt;/p&gt;

&lt;p&gt;
Gehen Sie eine Zeile unter diese:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;binding name=„example“&amp;gt;
&lt;/p&gt;

&lt;p&gt;
und tauschen die dort noch vorhandene Beispiel-Konfiguration mit Ihrer Konfiguration:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;configuration name=„xml_curl.conf“ description=„cURL XML Gateway“&amp;gt;
&amp;lt;bindings&amp;gt;
&amp;lt;binding name=„example“&amp;gt;
&amp;lt;param name=„gateway-url“ value=„&lt;a href=&quot;http://192.111.222.33:9000/api/freeswitch-config&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://192.111.222.33:9000/api/freeswitch-config&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://192.111.222.33:9000/api/freeswitch-config&lt;/a&gt;“ bindings=„directory“/&amp;gt;
&amp;lt;param name=„disable-100-continue“ value=„true“/&amp;gt;
&amp;lt;/binding&amp;gt;
&amp;lt;binding name=„local“&amp;gt;
&amp;lt;param name=„gateway-url“ value=„&lt;a href=&quot;http://192.111.222.33:9000/api/freeswitch-config&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://192.111.222.33:9000/api/freeswitch-config&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://192.111.222.33:9000/api/freeswitch-config&lt;/a&gt;“ bindings=„dialplan“/&amp;gt;
&amp;lt;param name=„disable-100-continue“ value=„true“/&amp;gt;
&amp;lt;/binding&amp;gt;
&amp;lt;/bindings&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/p&gt;

&lt;p&gt;
Tauschen Sie die oben verwendete Beispiel IP-Adresse 192.111.222.33 mit Ihrer eigenen öffentlichen IP-Adresse aus. Falls Sie einen anderen Port als den Standard-Port 9000 verwenden, passen Sie auch diesen an den bei Ihnen verwendeten Port an.
&lt;/p&gt;

&lt;p&gt;
Speichern Sie die Datei. Weiter geht es mit:
&lt;/p&gt;

&lt;p&gt;
cd /usr/local/freeswitch/conf/
&lt;/p&gt;

&lt;p&gt;
vi vars.xml
&lt;/p&gt;

&lt;p&gt;
Suchen Sie die Zeile:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;X-PRE-PROCESS cmd=„set“ data=„global_codec_prefs=G722,PCMU,PCMA,GSM“/&amp;gt;
&lt;/p&gt;

&lt;p&gt;
und ändern Sie diese in:
&lt;/p&gt;

&lt;p&gt;
&amp;lt;X-PRE-PROCESS cmd=„set“ data=„global_codec_prefs=G7221@32000h,G722,PCMU,PCMA,GSM“/&amp;gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3. FreeSwitch Konfiguration f\u00fcr OpenSIM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;freeswitch_konfiguration_fuer_opensim&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;10161-12376&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;starten_von_freeswitch&quot;&gt;4. Starten von FreeSwitch&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
screen -S voice
&lt;/p&gt;

&lt;p&gt;
cd /usr/local/freeswitch/bin/
./freeswitch
&lt;/p&gt;

&lt;p&gt;
Ignorieren Sie die rot markierten Fehlermeldungen und Warnungen. Weiter mit:
&lt;/p&gt;

&lt;p&gt;
[CTRL][A][D]
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;4. Starten von FreeSwitch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;starten_von_freeswitch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;12377-12566&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;opensim-konfiguration&quot;&gt;5. OpenSIM-Konfiguration&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Editieren Sie die OpenSIM-Konfigurationsdatei und fügen Sie am Ende der Datei folgende Zeilen ein:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[FreeSwitchVoice]
   enabled = true
   ;FreeSwitch server is going to contact us and ask us all
   ;sorts of things.
   freeswitch_server_user = freeswitch
   freeswitch_server_pass = password
   freeswitch_api_prefix = /api
   ;The  IP address of your opensim voice region
   freeswitch_service_server = IP_Adresse_des_OpenSimServers
   ;the port your region is running on
   freeswitch_service_port = 9000 
   ;your freewitch IP address
   freeswitch_realm = IP_Adresse_des_FreeSwitch_Services
   freeswitch_sip_proxy = IP_Adresse_des_FreeSwitch_Services:5060
   freeswitch_attempt_stun = false
   freeswitch_stun_server = IP_Adresse_des_FreeSwitch_Services
   freeswitch_echo_server = IP_Adresse_des_FreeSwitch_Services
   freeswitch_echo_port = 50505
   freeswitch_well_known_ip = IP_Adresse_des_FreeSwitch_Services
   freeswitch_default_timeout = 5000
   freeswitch_subscribe_retry = 120&lt;/pre&gt;

&lt;p&gt;
Starten Sie jetzt den OpenSIM-Server. Ab diesem Moment ist Voice in OpenSIM grundsätzlich möglich. Um aber Voice nutzen zu können muß in den Estate-Einstellungen und den Region-Einstellungen auch Voice aktiviert werden. Ausserdem müssen die Avatare einen 3D-Viewer ab Version 1.22 oder später benutzen.
&lt;/p&gt;

&lt;p&gt;
Sollte es dennoch nicht funktionieren haben Sie möglicherweise eine zu alte OpenSIM-Server Version. Voice wird derzeit nur in sehr aktuellen Trunk-Versionen unterstützt.
&lt;/p&gt;

&lt;p&gt;
Natürlich auch an die Firewall denken um die von FreeSwitch benötigten Ports zu öffnen:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit13&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Port(s)     &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Protokoll &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Bezeichnung                                                                         &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 1719        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; H.323 Gatekeeper RAS-Port                                                           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 1720        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TCP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; H.323 Call Signalling                                                               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 3478        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; STUN Service, für NAT traversal                                                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 3479        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; STUN Service, für NAT traversal                                                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5002        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; TCP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; MLP Protocol Server                                                                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5003        &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Neighborhood Service                                                                &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5060        &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; UDP &amp;amp; TCP &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; SIP UAS, für SIP Signalisierung (Standard SIP-Port, für default intern Profil)      &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5070        &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; UDP &amp;amp; TCP &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; SIP UAS, für SIP Signalisierung (für default „NAT“ Profil)                          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 5080        &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; UDP &amp;amp; TCP &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; SIP UAS, für SIP Signalisierung (für default „External“ Profil)                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 16384-32768 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; UDP       &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; RTP/RTCP Multimedia Streaming, für Audio/Video Daten in SIP und anderen Protokollen &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;14188-15450&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;5. OpenSIM-Konfiguration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;opensim-konfiguration&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;12567-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:konfiguration</category>
            <pubDate>Fri, 29 Nov 2019 10:58:48 +0000</pubDate>
        </item>
        <item>
            <title>Sounds</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/sounds?do=revisions&amp;rev=1575021526</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;sounds&quot;&gt;Sounds&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Sound-Clips für OpenSIM dürfen maximal 10 Sekunden lang sein und müssen im Dateiformat .WAV vorliegen, bei einer Samplingrate von 44,1 kHZ, Mono oder Stereo. Um sich passende Sound-Clips zurechtzuschneiden, zu konvertieren, mit Effekten versehen wie z.B. Hall, oder Loop (Endlosschleife) und für OpenSIM zu speichern, eignet sich unter anderem das kostenlose Audio-Programm „&lt;a href=&quot;http://audacity.sourceforge.net/?lang=de&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://audacity.sourceforge.net/?lang=de&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Audacity&lt;/a&gt;“.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sounds&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sounds&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-456&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;sound-sammlungen&quot;&gt;Sound-Sammlungen&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.computermusictutorials.com&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.computermusictutorials.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.computermusictutorials.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.soundsnap.com&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.soundsnap.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.soundsnap.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.delamar.de/category/free-samples&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.delamar.de/category/free-samples&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.delamar.de/category/free-samples&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.light2art.de/downloads.html&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.light2art.de/downloads.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.light2art.de/downloads.html&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sound-Sammlungen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sound-sammlungen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;457-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads</category>
            <pubDate>Fri, 29 Nov 2019 10:58:46 +0000</pubDate>
        </item>
        <item>
            <title>Audio</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/media/audio?do=revisions&amp;rev=1575021531</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;audio&quot;&gt;Audio&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SecondCast - &lt;a href=&quot;http://www.secondcast.com&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://www.secondcast.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.secondcast.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:media</category>
            <pubDate>Fri, 29 Nov 2019 10:58:51 +0000</pubDate>
        </item>
        <item>
            <title>Freeview Media Screen</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/downloads/scripts/freeview_media_screen?do=revisions&amp;rev=1575021520</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;freeview_media_screen&quot;&gt;Freeview Media Screen&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;//XEngine:
//FreeView 1.2 WebGuide (revision 3) - By CrystalShard Foo
//Multifunctional Picture viewer and Video control script with webguide support
//This script is distributed for free and must stay that way. 

//              *** DO NOT SELL THIS SCRIPT UNDER ANY CIRCUMSTANCE. ***

//Help for using this script can be obtained at: http://www.slguide.com/help

//Feel free to modify this script and post your improvement. Leave the credits intact but feel free to add your name at its bottom.
 
//Whats new:
//- Now using FULL_BRIGHT instead of PRIM_MATERIAL_LIGHT for the screen display
//- Added an ownership-change code to handle cases where FreeView gets deeded to group post Video Init.
//- Renamed WebGuide to TV-Guide to reflect what this thing does better.
//- Added a &amp;#039;Fix Scale&amp;#039; button to Picture mode to help against user texture-scale changes.
//- Additional minor help-tips and code improvements

//Enjoy!


//Constants
integer PICTURE_ROTATION_TIMER = 60;   //In whole seconds

integer DISPLAY_ON_SIDE = ALL_SIDES; //Change this to change where the image will be displayed

key VIDEO_DEFAULT = &amp;quot;71b8ff26-087d-5f44-285b-d38df2e11a81&amp;quot;;  //Test pattern - Used as default video texture when one is missing in parcel media
key BLANK = &amp;quot;5748decc-f629-461c-9a36-a35a221fe21f&amp;quot;; //Blank texture - Used when there are no textures to display in Picture mode
string NOTECARD = &amp;quot;bookmarks&amp;quot;;  //Used to host URL bookmarks for video streams

integer VIDEO_BRIGHT = TRUE;    //FULL_BRIGHT status for Video
integer PICTURE_BRIGHT = TRUE;  //FULL_BRIGHT status for Picture

integer REMOTE_CHANNEL = 9238742;

integer mode = 0;           //Freeview mode.
                            //Mode 0 - Power off
                            //Mode 1 - Picture viewer
                            //Mode 2 - Video

integer listenHandle = -1;      //Dialog menu listen handler
integer listenUrl = -1;         //listen handler for channel 1 for when a URL is being added
integer listenTimer = -1;       //Timer variable for removing all listeners after 2 minutes of listener inactivity
integer listenRemote = -1;      //listen handler for the remote during initial setup
integer encryption = 0;
integer numberofnotecardlines = 0;  //Stores the current number of detected notecard lines.
integer notecardline = 0;       //Current notecard line

integer loop_image = FALSE;     //Are we looping pictures with a timer? (picture mode)
integer current_texture = 0;    //Current texture number in inventory being displayed (picture mode)
integer chan;                   //llDialog listen channel
integer notecardcheck = 0;
key video_texture;              //Currently used video display texture for parcel media stream

string moviename;
string tempmoviename;
key notecardkey = NULL_KEY;
key tempuser;                   //Temp key storge variable
string tempurl;                 //Temp string storge variable

integer isGroup = TRUE;
key groupcheck = NULL_KEY;
key last_owner;
key XML_channel;

pictures()      //Change mode to Picture Viewer
{
    //Initilize variables
    
    //Change prim to Light material while coloring face 0 black to prevent light-lag generation.
    llSetPrimitiveParams([PRIM_BUMP_SHINY, DISPLAY_ON_SIDE, PRIM_SHINY_NONE, PRIM_BUMP_NONE, PRIM_COLOR, DISPLAY_ON_SIDE, &amp;lt;1,1,1&amp;gt;, 1.0, PRIM_MATERIAL, PRIM_MATERIAL_PLASTIC, PRIM_FULLBRIGHT, DISPLAY_ON_SIDE, PICTURE_BRIGHT]);

    integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
     
    if(check == 0)
    {
        report(&amp;quot;No pictures found.&amp;quot;);
        llSetTexture(BLANK,DISPLAY_ON_SIDE);
        return;
    }
    else    
        if(current_texture &amp;gt; check)
            //Set to first texture if available
            current_texture = 0;
            
    display_texture(current_texture);
}

video()         //Change mode to Video
{
    //Change prim to Light material while coloring face 0 black to prevent light-lag generation.
    llSetPrimitiveParams([PRIM_BUMP_SHINY, DISPLAY_ON_SIDE, PRIM_SHINY_NONE, PRIM_BUMP_NONE, PRIM_COLOR, DISPLAY_ON_SIDE, &amp;lt;1,1,1&amp;gt;, 1.0, PRIM_MATERIAL, PRIM_MATERIAL_PLASTIC, PRIM_FULLBRIGHT, DISPLAY_ON_SIDE, VIDEO_BRIGHT, PRIM_TEXTURE, DISPLAY_ON_SIDE, &amp;quot;62dc73ca-265f-7ca0-0453-e2a6aa60bb6f&amp;quot;, llGetTextureScale(DISPLAY_ON_SIDE), llGetTextureOffset(DISPLAY_ON_SIDE), llGetTextureRot(DISPLAY_ON_SIDE)]);
    
    report(&amp;quot;Video mode&amp;quot;+moviename+&amp;quot;: Stopped&amp;quot;);
    if(finditem(NOTECARD) != -1)
        tempuser = llGetNumberOfNotecardLines(NOTECARD);
    video_texture = llList2Key(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_TEXTURE]),0);
    if(video_texture == NULL_KEY)
    {
        video_texture = VIDEO_DEFAULT;
        llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_TEXTURE,VIDEO_DEFAULT]);
        llSay(0,&amp;quot;No parcel media texture found. Setting texture to default: &amp;quot;+(string)VIDEO_DEFAULT);
        if(llGetLandOwnerAt(llGetPos()) != llGetOwner())
            llSay(0,&amp;quot;Error: Cannot modify parcel media settings. &amp;quot;+llGetObjectName()+&amp;quot; is not owned by parcel owner.&amp;quot;);
    }
    
    llSetTexture(video_texture,DISPLAY_ON_SIDE);
}

off()
{
    report(&amp;quot;Click to power on.&amp;quot;);
    llSetPrimitiveParams([PRIM_BUMP_SHINY, DISPLAY_ON_SIDE, PRIM_SHINY_LOW, PRIM_BUMP_NONE, PRIM_COLOR, DISPLAY_ON_SIDE, &amp;lt;0.1,0.1,0.1&amp;gt;, 1.0,PRIM_MATERIAL, PRIM_MATERIAL_PLASTIC, PRIM_FULLBRIGHT, DISPLAY_ON_SIDE, FALSE, PRIM_TEXTURE, DISPLAY_ON_SIDE, BLANK, llGetTextureScale(DISPLAY_ON_SIDE), llGetTextureOffset(DISPLAY_ON_SIDE), llGetTextureRot(DISPLAY_ON_SIDE)]);
}

integer finditem(string name)   //Finds and returns an item&amp;#039;s inventory number
{
    integer i;
    for(i=0;i&amp;lt;llGetInventoryNumber(INVENTORY_NOTECARD);i++)
        if(llGetInventoryName(INVENTORY_NOTECARD,i) == NOTECARD)
            return i;
    return -1;
}

seturl(string url, key id)  //Set parcel media URL
{
    if(mode != 2)
    {
        video();
        mode = 2;
    }
    moviename = tempmoviename;
    if(moviename)
        moviename = &amp;quot; [&amp;quot;+moviename+&amp;quot;]&amp;quot;;
    tempmoviename = &amp;quot;&amp;quot;;
    string oldurl = llList2String(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_URL]),0);
    if(oldurl != &amp;quot;&amp;quot;)
        llOwnerSay(&amp;quot;Setting new media URL. The old URL was: &amp;quot;+oldurl);

    llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL,url]);
    if(id!=NULL_KEY)
        menu(id);
    else
    {
        report(&amp;quot;Video mode&amp;quot;+moviename+&amp;quot;: Playing&amp;quot;);
        llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PLAY]);
    }
       
    if(isGroup)
        llSay(0,&amp;quot;New media URL set.&amp;quot;);
    else
        llOwnerSay(&amp;quot;New media URL set: &amp;quot;+url);
}

string mediatype(string ext)    //Returns a string stating the filetype of a file based on file extension
{
    ext = llToLower(ext);
    if(ext == &amp;quot;swf&amp;quot;)
        return &amp;quot;Flash&amp;quot;;
    if(ext == &amp;quot;mov&amp;quot; || ext == &amp;quot;avi&amp;quot; || ext == &amp;quot;mpg&amp;quot; || ext == &amp;quot;mpeg&amp;quot; || ext == &amp;quot;smil&amp;quot;)
        return &amp;quot;Video&amp;quot;;
    if(ext == &amp;quot;jpg&amp;quot; || ext == &amp;quot;mpeg&amp;quot; || ext == &amp;quot;gif&amp;quot; || ext == &amp;quot;png&amp;quot; || ext == &amp;quot;pict&amp;quot; || ext == &amp;quot;tga&amp;quot; || ext == &amp;quot;tiff&amp;quot; || ext == &amp;quot;sgi&amp;quot; || ext == &amp;quot;bmp&amp;quot;)
        return &amp;quot;Image&amp;quot;;
    if(ext == &amp;quot;txt&amp;quot;)
        return &amp;quot;Text&amp;quot;;
    if(ext == &amp;quot;mp3&amp;quot; || ext == &amp;quot;wav&amp;quot;)
        return &amp;quot;Audio&amp;quot;;
    return &amp;quot;Unknown&amp;quot;;
}

browse(key id)      //Image browser function for picture viewer mode
{
    integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
    string header;
    if(check &amp;gt; 0)
        header = &amp;quot;(&amp;quot;+(string)(current_texture+1)+&amp;quot;/&amp;quot;+(string)check+&amp;quot;) &amp;quot;+llGetInventoryName(INVENTORY_TEXTURE,current_texture);
    else
        header = &amp;quot;No pictures found.&amp;quot;;
    llDialog(id,&amp;quot;** Monitor Control **\n Picture Viewer mode\n- Image browser\n- &amp;quot;+header,[&amp;quot;Back&amp;quot;,&amp;quot;Next&amp;quot;,&amp;quot;Menu&amp;quot;],chan);
    extendtimer();
}

report(string str)
{
    llSetObjectDesc(str);
}

extendtimer()       //Add another 2 minute to the Listen Removal timer (use when a Listen event is triggered)
{
    if(listenHandle == -1)
        listenHandle = llListen(chan,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;);
    listenTimer = (integer)llGetTime() + 120;
    if(loop_image == FALSE)
        llSetTimerEvent(45);
}

config(key id)      //Configuration menu
{
    extendtimer();
    llDialog(id,&amp;quot;Current media URL:\n&amp;quot;+llList2String(llParcelMediaQuery([PARCEL_MEDIA_COMMAND_URL]),0)+&amp;quot;\nTip: If the picture is abit off, try &amp;#039;Align ON&amp;#039;&amp;quot;,[&amp;quot;Set URL&amp;quot;,&amp;quot;Align ON&amp;quot;,&amp;quot;Align OFF&amp;quot;,&amp;quot;Menu&amp;quot;,&amp;quot;Set Remote&amp;quot;],chan);
}

tell_remote(string str)
{
    llShout(REMOTE_CHANNEL,llXorBase64Strings(llStringToBase64((string)encryption + str), llStringToBase64((string)encryption)));
}

menu(key id)        //Dialog menus for all 3 modes
{
    list buttons = [];
    string title = &amp;quot;** Monitor control **&amp;quot;;
    
    extendtimer();

    if(mode != 0)
    {
        if(mode == 1)       //Pictures menu
        {
            title+=&amp;quot;\n  Picture Viewer mode&amp;quot;;
            buttons+=[&amp;quot;Browse&amp;quot;];
            if(loop_image == FALSE)
                buttons+=[&amp;quot;Loop&amp;quot;];
            else
                buttons+=[&amp;quot;Unloop&amp;quot;];
            buttons+=[&amp;quot;Video&amp;quot;,&amp;quot;Power off&amp;quot;,&amp;quot;Help&amp;quot;,&amp;quot;Fix scale&amp;quot;];
        }
        else                //Video menu
        {
            title+=&amp;quot;\n Video display mode\n&amp;quot;+moviename+&amp;quot;\nTip:\nClick &amp;#039;TV Guide&amp;#039; to view the Online bookmarks.&amp;quot;;
            buttons+=[&amp;quot;Pictures&amp;quot;,&amp;quot;Configure&amp;quot;,&amp;quot;Power off&amp;quot;,&amp;quot;Loop&amp;quot;,&amp;quot;Unload&amp;quot;,&amp;quot;Help&amp;quot;,&amp;quot;Play&amp;quot;,&amp;quot;Stop&amp;quot;,&amp;quot;Pause&amp;quot;,&amp;quot;TV Guide&amp;quot;,&amp;quot;Bookmarks&amp;quot;,&amp;quot;Set URL&amp;quot;];
        }
    }
    else
        buttons += [&amp;quot;Pictures&amp;quot;,&amp;quot;Video&amp;quot;,&amp;quot;Help&amp;quot;];
    
    llDialog(id,title,buttons,chan);
}

display_texture(integer check)  //Display texture and set name in description (picture mode)
{                               //&amp;quot;Check&amp;quot; holds the number of textures in contents. The function uses &amp;quot;current_texture&amp;quot; to display.
    string name = llGetInventoryName(INVENTORY_TEXTURE,current_texture);
    llSetTexture(name,DISPLAY_ON_SIDE);
    report(&amp;quot;Showing picture: &amp;quot;+name+&amp;quot; (&amp;quot;+(string)(current_texture+1)+&amp;quot;/&amp;quot;+(string)check+&amp;quot;)&amp;quot;);
}
    

next()  //Change to next texture (picture mode)
{       //This function is used twice - by the menu and timer. Therefor, it is a dedicated function.
    current_texture++;
    integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
    if(check == 0)
    {
        llSetTexture(BLANK,DISPLAY_ON_SIDE);
        current_texture = 0;
        report(&amp;quot;No pictures found.&amp;quot;);
        return;
    }
    if(check == current_texture)
        current_texture = 0;
    
    display_texture(check);
    return;
}

default
{
    state_entry()
    {
        chan = (integer)llFrand(1000) + 1000;   //Pick a random listen channel for the listener
        if(PICTURE_ROTATION_TIMER &amp;lt;= 0)         //Ensure the value is no less or equal 0
            PICTURE_ROTATION_TIMER = 1;
        llListenRemove(listenHandle);
        listenHandle = -1;
        last_owner = llGetOwner();
        groupcheck = llRequestAgentData(llGetOwner(),DATA_NAME);
        off();
        llOpenRemoteDataChannel();
    }
    
    on_rez(integer i)
    {
        llResetScript();
    }

    touch_start(integer total_number)
    {
        //-------------------------------------------------------------------------------
        //Listen only to owner or group member. Edit this code to change access controls.
        if(llDetectedKey(0) != llGetOwner() &amp;amp;&amp;amp; llDetectedGroup(0) == FALSE)
            return;
        //-------------------------------------------------------------------------------

        if(llGetOwnerKey(llGetKey()) != last_owner)  //Sense if object has been deeded to group for Web Guide function
        {
            isGroup = TRUE;
            last_owner = llGetOwner();
            groupcheck = llRequestAgentData(llGetOwner(),DATA_NAME);
            
            if(mode == 2)
            {
                llSay(0,&amp;quot;Detected change in ownership. Attempting to obtain current parcel media texture...&amp;quot;);
                video();
            }
        }

        menu(llDetectedKey(0));
    }
    
    changed(integer change)
    {
        if(change == CHANGED_INVENTORY) //If inventory change
            if(mode == 1)   //If picture mode
            {
                integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
                if(check != 0)
                {
                    current_texture = 0;
                    display_texture(check);
                }
                else
                {
                    llSetTexture(BLANK,DISPLAY_ON_SIDE);
                    report(&amp;quot;No pictures found.&amp;quot;);
                }
            }
            else
                if(mode == 2)   //If video mode
                    if(finditem(NOTECARD) != -1)    //And bookmarks notecard present
                        if(notecardkey != llGetInventoryKey(NOTECARD))
                            tempuser = llGetNumberOfNotecardLines(NOTECARD);    //Reload number of lines
    }
    
    listen(integer channel, string name, key id, string message)
    {
        if(message == &amp;quot;Pictures&amp;quot;)
        {
            if(mode == 2)
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_STOP]);
            pictures();
            mode = 1;
            menu(id);
            return;
        }
        if(message == &amp;quot;Video&amp;quot;)
        {
            video();
            mode = 2;
            menu(id);
            return;
        }
        if(message == &amp;quot;Power off&amp;quot;)
        {
            if(mode == 2)
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_UNLOAD]);
            off();
            mode = 0;
            return;
        }
        if(message == &amp;quot;Help&amp;quot;)
        {
            llSay(0,&amp;quot;Help documentation is available at: http://www.slguide.com/help&amp;quot;);
            if(isGroup)
            {
                if(id == NULL_KEY)
                {
                    llSay(0,&amp;quot;FreeView cannot load help pages while set to group without the remote.&amp;quot;);
                    llSay(0,&amp;quot;For further assistance, please consult: http://slguide.com/help&amp;quot;);
                }
                else
                    tell_remote(&amp;quot;HELP&amp;quot;+(string)id+(string)XML_channel);
            }
            else
                llLoadURL(id,&amp;quot;Help pages for FreeView&amp;quot;,&amp;quot;http://www.slguide.com?c=&amp;quot;+(string)XML_channel+&amp;quot;&amp;amp;help=1&amp;quot;);
        }
        if(mode == 1)
        {
            if(message == &amp;quot;Browse&amp;quot;)
            {
                loop_image = FALSE;
                browse(id);
                return;
            }
            if(message == &amp;quot;Next&amp;quot;)
            {
                extendtimer();
                next();
                browse(id);
            }
            if(message == &amp;quot;Back&amp;quot;)
            {
                extendtimer();
                current_texture--;
                integer check = llGetInventoryNumber(INVENTORY_TEXTURE);
                if(check == 0)
                {
                    llSetTexture(BLANK,DISPLAY_ON_SIDE);
                    current_texture = 0;
                    report(&amp;quot;No pictures found.&amp;quot;);
                    return;
                }
                if(current_texture &amp;lt; 0)
                    current_texture = check - 1;
                
                display_texture(check);
                
                browse(id);
                return;
            }
            if(message == &amp;quot;Menu&amp;quot;)
            {
                menu(id);
                return;
            }
            if(message == &amp;quot;Loop&amp;quot;)
            {
                llSetTimerEvent(PICTURE_ROTATION_TIMER);
                loop_image = TRUE;
                llOwnerSay(&amp;quot;Picture will change every &amp;quot;+(string)PICTURE_ROTATION_TIMER+&amp;quot; seconds.&amp;quot;);
                return;
            }
            if(message == &amp;quot;Unloop&amp;quot;)
            {
                loop_image = FALSE;
                llOwnerSay(&amp;quot;Picture loop disabled.&amp;quot;);
                return;
            }
            if(message == &amp;quot;Fix scale&amp;quot;)
            {
                llSay(0,&amp;quot;Setting display texture to 1,1 repeats and 0,0 offset.&amp;quot;);
                llScaleTexture(1, 1, DISPLAY_ON_SIDE);
                llOffsetTexture(0, 0, DISPLAY_ON_SIDE);
                return;
            }
        }
        if(mode == 2)
        {
            if(channel == REMOTE_CHANNEL)
            {
                if(encryption == 0)
                    encryption = (integer)message;
                llListenRemove(listenRemote);
                listenRemote = -1;
                llSay(0,&amp;quot;Remote configured (&amp;quot;+(string)id+&amp;quot;)&amp;quot;);
            }
                
            if(message == &amp;quot;TV Guide&amp;quot;)
            {
                if(isGroup)
                {
                    if(!encryption)
                    {
                        llSay(0,&amp;quot;** Error - This FreeView object has been deeded to group. You must use a Remote control to open the TV Guide.&amp;quot;);
                        llSay(0,&amp;quot;You can set up the remote control from the Video -&amp;gt; Configuration menu. Please refer to the notecard for further assistance.&amp;quot;);
                        return;
                    }
                    tell_remote((string)id+(string)XML_channel+(string)llGetOwner());
                }
                else
                    llLoadURL(id, &amp;quot;Come to the Guide to Start Your Viewer Playing!&amp;quot;, &amp;quot;http://slguide.com/index.php?v=&amp;quot; + (string)llGetKey() + &amp;quot;&amp;amp;c=&amp;quot; + (string)XML_channel + &amp;quot;&amp;amp;o=&amp;quot; + (string)llGetOwner() + &amp;quot;&amp;amp;&amp;quot;);
                return;
            }

            string header = &amp;quot;Video mode&amp;quot;+moviename+&amp;quot;: &amp;quot;;
            
            if(message == &amp;quot;&amp;lt;&amp;lt; Prev&amp;quot;)
            {
                notecardline--;
                if(notecardline &amp;lt; 0)
                    notecardline = numberofnotecardlines - 1;
                tempuser = id;
                llGetNotecardLine(NOTECARD,notecardline);
                return;
            }
            if(message == &amp;quot;Next &amp;gt;&amp;gt;&amp;quot;)
            {
                notecardline++;
                if(notecardline &amp;gt;= numberofnotecardlines)
                    notecardline = 0;
                tempuser = id;
                llGetNotecardLine(NOTECARD,notecardline);
                return;
            }
            if(message == &amp;quot;Use&amp;quot;)
            {
                if(tempurl == &amp;quot;** No URL specified! **&amp;quot;)
                    tempurl = &amp;quot;&amp;quot;;
                seturl(tempurl,id);
                return;
            }
                    
            if(message == &amp;quot;Menu&amp;quot;)
            {
                menu(id);
                return;
            }
            if(message == &amp;quot;Configure&amp;quot;)
            {
                config(id);
                return;
            }
            if(message == &amp;quot;Bookmarks&amp;quot;)
            {
                if(notecardcheck != -1)
                {
                    llDialog(id,&amp;quot;Error: No valid bookmark data found in notecard &amp;#039;&amp;quot;+NOTECARD+&amp;quot;&amp;#039;.&amp;quot;,[&amp;quot;Menu&amp;quot;],chan);
                    return;
                }
                if(finditem(NOTECARD) != -1)                
                {
                    tempuser = id;
                    if(numberofnotecardlines &amp;lt; notecardline)
                        notecardline = 0;
                    llGetNotecardLine(NOTECARD,notecardline);
                }
                else
                    llDialog(id,&amp;quot;Error: No notecard named &amp;quot;+NOTECARD+&amp;quot; found in contents.&amp;quot;,[&amp;quot;Menu&amp;quot;],chan);
                return;
            }
            
            if(llGetLandOwnerAt(llGetPos()) != llGetOwner())    //If we do not have permissions to actually do the following functions
            {
                llSay(0,&amp;quot;Error: Cannot modify parcel media settings. &amp;quot;+llGetObjectName()+&amp;quot; is not owned by parcel owner.&amp;quot;);
                menu(id);
                return; //Abort
            }
            
            if(listenUrl != -1 &amp;amp;&amp;amp; channel == 1) //Incoming data from &amp;quot;Set URL&amp;quot; command (user spoke on channel 1)
            {
                llListenRemove(listenUrl);
                listenUrl = -1;
                tempmoviename = &amp;quot;&amp;quot;;
                seturl(message,id);
            }
            if(message == &amp;quot;Play&amp;quot;)
            {
                report(header+&amp;quot;Playing&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PLAY]);
                return;
            }
            if(message == &amp;quot;Stop&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_STOP]);
                return;
            }
            if(message == &amp;quot;Pause&amp;quot;)
            {
                report(header+&amp;quot;Paused&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_PAUSE]);
                return;
            }
            if(message == &amp;quot;Unload&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_UNLOAD]);
                return;
            }
            if(message == &amp;quot;Loop&amp;quot;)
            {
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_LOOP]);
                return;
            }
            //URL , Auto-Scale, 
            if(message == &amp;quot;Set URL&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                listenUrl = llListen(1,&amp;quot;&amp;quot;,id,&amp;quot;&amp;quot;);
                llDialog(id,&amp;quot;Please type the URL of your choice with /1 in thebegining. For example, /1 www.google.com&amp;quot;,[&amp;quot;Ok&amp;quot;],938);
                return;
            }
            if(message == &amp;quot;Align ON&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_AUTO_ALIGN,TRUE]);
                menu(id);
                return;
            }
            if(message == &amp;quot;Align OFF&amp;quot;)
            {
                report(header+&amp;quot;Stopped&amp;quot;);
                llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_AUTO_ALIGN,FALSE]);
                menu(id);
                return;
            }
            if(message == &amp;quot;Set Remote&amp;quot;)
            {
                llSay(0,&amp;quot;Configuring remote...&amp;quot;);
                encryption = 0;
                llListenRemove(listenRemote);
                listenRemote = llListen(REMOTE_CHANNEL,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;);
                llSay(REMOTE_CHANNEL,&amp;quot;SETUP&amp;quot;);
            }
        }
    }
    
    dataserver(key queryid, string data)
    {
        if(queryid == groupcheck)       //Test if object is deeded to group
        {
            groupcheck = NULL_KEY;
            isGroup = FALSE;
            return;
        }
        
        if(queryid == tempuser) //If just checking number of notecard lines
        {
            numberofnotecardlines = (integer)data;
            notecardkey = llGetInventoryKey(NOTECARD);
            notecardcheck = 0;
            llGetNotecardLine(NOTECARD,notecardcheck);
            return;
        }
        if(notecardcheck != -1)
        {
            if(data != EOF)
            {
                if(data == &amp;quot;&amp;quot;)
                {
                    notecardcheck++;
                    llGetNotecardLine(NOTECARD,notecardcheck);
                }
                else
                {
                    notecardcheck = -1;
                    return;
                }
            }
            else
                return;
        }

        if(data == &amp;quot;&amp;quot; &amp;amp;&amp;amp; notecardline &amp;lt; numberofnotecardlines)    //If user just pressed &amp;quot;enter&amp;quot; in bookmarks, skip
        {
            notecardline++;
            llGetNotecardLine(NOTECARD,notecardline);
            return;
        }
        
        if(data == EOF)
        {
            notecardline = 0;
            llGetNotecardLine(NOTECARD,notecardline);
            return;
        }
        list parsed = llParseString2List(data,[&amp;quot;|&amp;quot;,&amp;quot;| &amp;quot;,&amp;quot; |&amp;quot;,&amp;quot; | &amp;quot;],[]);    //Ensure no blank spaces before &amp;quot;http://&amp;quot;.
        string name = llList2String(parsed,0);
        tempurl = llList2String(parsed,1);
        if(tempurl == &amp;quot;&amp;quot;)
            tempurl = &amp;quot;** No URL specified! **&amp;quot;;
            
        tempmoviename = name;
                
        llDialog(tempuser,&amp;quot;Bookmarks notecard (&amp;quot;+(string)(notecardline+1)+&amp;quot;/&amp;quot;+(string)numberofnotecardlines+&amp;quot;)\n&amp;quot;+name+&amp;quot; (&amp;quot;+mediatype(llList2String(llParseString2List(tempurl,[&amp;quot;.&amp;quot;],[]),-1))+&amp;quot;)\n&amp;quot;+tempurl,[&amp;quot;&amp;lt;&amp;lt; Prev&amp;quot;,&amp;quot;Use&amp;quot;,&amp;quot;Next &amp;gt;&amp;gt;&amp;quot;,&amp;quot;Menu&amp;quot;],chan);
    }
    
    remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval)
    {
        if (type == REMOTE_DATA_CHANNEL)
        {
            XML_channel = channel;
        } 
        else if(type == REMOTE_DATA_REQUEST)
        {
            list media_info = llParseString2List(sval, [&amp;quot;|&amp;quot;], []);
            tempmoviename = llList2String(media_info,0);
            seturl(llList2String(media_info,1),NULL_KEY);
            llRemoteDataReply(channel, message_id, sval, 1);
        }
    }
    
    timer()
    {
        if(llGetTime() &amp;gt; listenTimer)       //If listener time expired...
        {
            llListenRemove(listenHandle);   //Remove listeneres.
            llListenRemove(listenUrl);
            llListenRemove(listenRemote);
            listenHandle = -1;
            listenUrl = -1;
            listenRemote = -1;
            listenTimer = -1;
            if(loop_image == FALSE || mode != 1) //If we&amp;#039;re not looping pictures or are in picture mode at all
                llSetTimerEvent(0.0);   //Remove timer
        }
        
        if(loop_image == TRUE &amp;amp;&amp;amp; mode == 1) //If we&amp;#039;re looping pictures and and we&amp;#039;re in picture mode...
            next(); //Next picture
    }
}&lt;/pre&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:downloads:scripts</category>
            <pubDate>Fri, 29 Nov 2019 10:58:40 +0000</pubDate>
        </item>
        <item>
            <title>Second Life</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/firmen/linden_labs/second_life?do=revisions&amp;rev=1575021526</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;second_life&quot;&gt;Second Life&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Second Life (zu deutsch etwa „zweites Leben“, von Second Life Teilnehmern oft kurz auch einfach nur „SL“ genannt) ist eine Online-3D-Infrastruktur für von Benutzern gestaltete virtuelle Welten, in der Menschen durch Avatare interagieren, spielen, Handel betreiben und anderweitig kommunizieren können. Das seit 2003 online verfügbare System hat inzwischen mehr als elf Millionen registrierte Benutzerkonten, über die rund um die Uhr bis zu 60.000 Nutzer gleichzeitig in das System eingeloggt sind.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Second Life&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;second_life&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-528&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;grundlagen&quot;&gt;Grundlagen&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://live.spdns.org/wiki/_detail/firmen/linden_labs/secondlifeweb.jpg?id=archiv%3Aopensim%3Afirmen%3Alinden_labs%3Asecond_life&quot; class=&quot;media wikilink2&quot; title=&quot;firmen:linden_labs:secondlifeweb.jpg&quot;&gt;&lt;img src=&quot;http://live.spdns.org/wiki/_media/firmen/linden_labs/secondlifeweb.jpg?w=320&amp;amp;tok=770622&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; title=&quot;secondlifeweb.jpg&quot; alt=&quot;secondlifeweb.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; Second Life wurde ab 1999 von Linden Lab in San Francisco entwickelt. Das erklärte Ziel von Linden Lab ist es, eine Welt wie das „Metaversum“ zu schaffen, das in dem Roman Snow Crash beschrieben wird: Eine vom Benutzer bestimmte Parallelwelt von allgemeinem Nutzen, in der Menschen interagieren, spielen, Handel betreiben und anderweitig kommunizieren können. Die erste Präsentation von Second Life fand im Sommer 2002 statt, im Herbst des Jahres begann eine Betatestphase und seit dem 24. Juni 2003 ist Second Life online.
&lt;/p&gt;

&lt;p&gt;
Die Second-Life-„Welt“ existiert in einer großen Serverfarm, die von Linden Labs betrieben und allgemein als das Grid (Gitter) bezeichnet wird. Die Welt wird von der Client-Software als kontinuierliche 3D-Animation dargestellt, die ein Raumgefühl verleiht und in die zusätzliche Audio- und Videostreams eingebunden werden können.
&lt;/p&gt;

&lt;p&gt;
Die Client-Software stellt ihren Nutzern, die als Bewohner[1] bezeichnet werden, Werkzeuge zur Verfügung, um ihren Avatar zu gestalten, Objekte zu erschaffen, durch die Second-Life-Welt zu navigieren, die Welt durch eine erweiterte Kamerasteuerung in komfortabler Weise zu betrachten und mit anderen zu kommunizieren. Die Navigation wird durch eine interne Suchmaschine und die Möglichkeit erleichtert, Landmarken zu setzen, über die man sich durch die Welt teleportieren kann.
&lt;/p&gt;

&lt;p&gt;
Verschiedene Personen und/oder Unternehmen können auf neue Weise miteinander in Kontakt treten und/oder sich gegenseitig virtuelle Waren oder Dienstleistungen anbieten. Die Kommunikation erfolgt per öffentlichem oder privatem Chat, wobei es zahlreiche Darstellungsoptionen für den Chatverlauf gibt. Neuerdings kann auch mündlich über das optionale interne Second Talk kommuniziert werden.
&lt;/p&gt;

&lt;p&gt;
Second Life fungiert auch als Plattform zur sozialen Interaktionen für verschiedenste Communitys. Gleichgesinnte können Gruppen bilden und über den integrierten Instant Messenger nicht nur mit Einzelpersonen, sondern auch mit allen Mitgliedern der jeweiligen Gruppe kommunizieren. Das Programm wurde bereits für Schulungen und virtuelle universitäre Vorlesungen genutzt, sogar Livekonzerte lassen sich virtuell durchführen. Die grafische Anlehnung an Computerspiele erlaubt den Teilnehmern, Second Life auch als Onlinespiel zu nutzen und zu begreifen. Viele Teilnehmer investieren ihre Zeit und ihre Fähigkeiten, die virtuelle 3D-Welt durch neue Gegenstände (Kleidung, Accessoires, Wohnungen, Häuser, Landgestaltung etc.) permanent zu erweitern.
&lt;/p&gt;

&lt;p&gt;
Durch die Einbindung einer virtuellen Währung (L$, Linden-Dollars), die in eine reale Währung (US-$) transferiert werden kann, ist Second Life auch in den realen Wirtschaftskreislauf eingebunden. Alle selbst erschaffenen und die meisten anderen Objekte innerhalb von Second Life können nach freiem Ermessen gehandelt werden. Zahlreiche reale Firmen sind daher bereits im Grid präsent. Wie im Internet allgemein zu beobachten, drängen sich jedoch mehr und mehr sexuelle Angebote in den Vordergrund. Die bislang sehr häufig anzutreffenden Glücksspiele mit Wetteinsatz werden seit 25. Juli 2007 von Linden Lab offiziell nicht mehr geduldet. Es finden allerdings weiterhin Glücksspiele in geringem Umfang statt.
&lt;/p&gt;

&lt;p&gt;
Im Oktober 2006 erreichte die Bevölkerung von Second Life den einmillionsten Bewohner[2]. Nur acht Wochen später hatte sich die Anzahl auf zwei Millionen verdoppelt[3]; mittlerweile wurden gut 9,5 Millionen Bewohner erreicht (September 2007), wobei allerdings viele Spieler mehrere Bewohneraccounts angemeldet haben. Die Anzahl der aktiven Spieler ist natürlich geringer und ist trotz der ständig stark steigenden Bewohnerzahl seit Mitte 2007 rückläufig (derzeit - Dezember 2007 - ca. 1,5 Millionen aktive Spieler innerhalb von 60 Tagen, vorher relativ konstant ca. 1,7 Millionen). Je nach Tageszeit sind etwa zwischen 15.000 und bis zu 60.000 Personen in Second Life gleichzeitig online.
&lt;/p&gt;

&lt;p&gt;
Gegenwärtig gilt Second Life als bedeutendste Plattform dieser Art in der westlichen Welt. Im asiatischen Raum soll es größere und leistungsstärkere Plattformen geben, wie beispielsweise das chinesische hipihi.com. Zu den Mitbewerbern von Second Life in der westlichen Hemisphäre zählen Active Worlds, von einigen als Gründerfirma des 3-D-Internetkonzepts 1997 betrachtet, Entropia Universe, There und Newcomer wie der Dotsoul Cyberpark.
&lt;/p&gt;

&lt;p&gt;
Seit dem 8. Januar 2007 ist der Quellcode des SL-Clients unter &lt;abbr title=&quot;GNU General Public License&quot;&gt;GPL&lt;/abbr&gt; frei verfügbar.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Grundlagen&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;grundlagen&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;529-5045&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;teilnahme_und_preise&quot;&gt;Teilnahme und Preise&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Es gibt kostenfreie und kostenpflichtige Second-Life-Accounts. Der Unterschied zwischen den Accounts besteht vor allem darin, dass ein Spieler mit einem kostenfreien Account kein virtuelles Land (auf Mainland Hauptkontinent) kaufen kann, das zur dauerhaften Erstellung von umfangreichen Objekten wie Häusern und Landschaften benötigt wird und das gegenwärtig die bedeutendste Handelsware des Systems ist. Inhaber eines kostenlosen Accounts können nur Land auf privaten Inseln („Estates“) kaufen oder Mainland mieten. Minderjährige sind von der Teilnahme ausgeschlossen, bzw. ihnen steht ein eigenes „Grid“ (Teen Second Life) zur Verfügung.
&lt;/p&gt;

&lt;p&gt;
Die Plattform wird über eine Client-Software bedient, die die Daten der Welt übers Internet bezieht. Dieser Client kann kostenlos heruntergeladen und installiert werden.
&lt;/p&gt;

&lt;p&gt;
Second Life hat verschiedene Mitgliedstarife:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Basic – kostenlos&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Additional Basic – kostenfrei&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Premium – Es gibt drei Optionen für Premium Tarife:&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; Monatlich – US$9,95&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; Vierteljährlich – US$22,50 (US$7,50 pro Monat)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level5&quot;&gt;&lt;div class=&quot;li&quot;&gt; Jährlich – US$72,00 (US$6,00 pro Monat)&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Alle Mitgliedstarife erhalten einen Einschreibebonus, wenn Zahlungsdetails zur Verfügung gestellt werden: L$250 für Basic und Additional Basic, L$1000 für Premium. Premium Accounts können 512 m² Mainland erwerben, ohne dafür an Linden die sonst üblichen 5$ pro Monat Landmiete bezahlen zu müssen. Darüber hinaus bekommen sie ein Stipendium von 300 L$ pro Woche. Zahlungsdetails für Basic und Additional Basic zur Verfügung zu stellen, ist seit 2005 freiwillig. Gleichwohl können Linden-Dollar nur gegen echte Währung verkauft werden, wenn Kreditkarten- oder Paypal-Daten hinterlegt sind. Auf alle Zahlungen an Linden Labs, sowohl die Mitgliedsbeiträge, als auch Landmiete, wird bei Einwohnern der EU inzwischen die im Land des Inhabers geltende Mehrwertsteuer aufgeschlagen. [4]
&lt;/p&gt;

&lt;p&gt;
Die Preisliste für Second Life hat sich mit der Zeit verändert. Frühere Versionen hatten keine kostenlosen erstmaligen Basic-Accounts oder brauchten ein Entgelt für jeden weiteren Basic-Account. Während des Betatests hatten Bewohner die Wahl einer Subskription auf Lebenszeit durch eine einmalige Zahlung von US$225,00. Nach der Veröffentlichung von SL 1.2 und der Einführung von Grundsteuern wandelte sich dies in einen lebenslangen steuerfreien Besitz von 4096 m² um. Bis Februar 2007 gab es so genanntes „First Land“ (vom Betreiber subventionierte Landparzellen) für Premiummitgliedschaften. Da die Landpreise jedoch innerhalb der Gemeinschaft signifikant gestiegen sind, und sich um die subventionierten Parzellen ein reger Handel entwickelt hatte, wurde die Vergabe von „First Land“ mit dem 20. Februar 2007 eingestellt [5].
&lt;/p&gt;

&lt;p&gt;
Additional Basic Accounts sind momentan kostenfrei. Bis zum Spätherbst 2007 waren Additional Basic Acounts kostenpflichtig (einmalig 9,95 US$) und Linden Lab hat gelegentlich Zugänge gesperrt, die im Verdacht standen, ein kostenlos angelegter Zweitaccount zu sein.
&lt;/p&gt;

&lt;p&gt;
Eine ganze Region, oder auch als Kurzform von Simulator SIM genannt, kostet derzeit 1650 US$ und ein monatliches Entgelt von 295 US$. Dem Besitzer wird für diesen Preis zugesichert, dass ein dedizierter Rechner für eine Region von Linden Lab bereitgestellt wird. Eine Region umfasst 65.000 Quadratmeter. Es gibt auch Simulatoren, die gleichzeitig mit anderen auf dem gleichen Server laufen. Die von ihnen verwalteten Regionen haben eine wesentlich geringere Anzahl an Prims, den Grundbausteinen in Second Life, zur Verfügung und werden als Low Prim SIMs oder auch Open SIMs bezeichnet.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Teilnahme und Preise&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;teilnahme_und_preise&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5046-8729&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;das_programm_als_spiel&quot;&gt;Das Programm als Spiel&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Der Schwerpunkt des Programms liegt in der sozialen Interaktion zwischen den Teilnehmern und der Erstellung von Inhalten. Da die Avatare und die Welt, in der sie agieren, nach Belieben gestaltet werden können und der Betreiber keinerlei Regeln vorgibt, haben sich innerhalb der virtuellen Welt zahlreiche thematisch gebundene Rollenspiel-Gemeinschaften gebildet, in denen nach von den Teilnehmern selbst erstellten Regeln agiert wird. Die meisten Teilnehmer treten in humanoiden Avataren auf, es gibt jedoch auch große Gruppen von „Furrys“ ((Pelz-)Tieren mit menschlichen Eigenschaften), Vampiren und Gestalten aus dem Bereich der Sagen- und Drachenwelt. Avatare lassen sich mit über 200 Parametern so unterschiedlich und detailreich gestalten, dass kein Avatar einem anderen gleicht. Dadurch ist eine hohe Identifikation mit dem Avatar möglich. Jedes Körperteil ist durch viele Parameter einstellbar, für den Kopf können z. B. Augenabstand, Augenbrauen, Wangenknochen, Ohren usw. sehr detailreich justiert werden. Zusätzlich können beliebig gestaltbare Kleidungsstücke und Objekte wie Piercings, Ohrringe etc. getragen werden, auch Körperteile können über die normalen Einstellmöglichkeiten hinaus aus Objekten zusammengestellt und getragen werden. Durch die geänderte Körperform notwendige andere Bewegungsabläufe, z. B. beim Gehen auf vier Beinen, werden durch Objekte mit Scripten und Animationen realisiert, die die standardmäßigen Animationen überschreiben („Animation Overrider“).
&lt;/p&gt;

&lt;p&gt;
Die soziale Wertschätzung drückt sich aus durch Gruppenbildung, Freundschaften schließen und das Abspielen von Animationen wie „Hände klatschen“, „Umarmen“, „Pfeifen“, „Ausbuhen“ usw. Die Anzahl der Animationen sind nicht beschränkt, man kann sogar eigene Animationen erfinden und in das System hochladen. Hunderte von Animationen stehen zur Verfügung und sind erweiterbar. Die Animation „Hände klatschen“ kann beispielsweise durch die Eingabe /clap im Chatfenster abgespielt werden. Seit der Voiceintegration gibt es ein Animationset mit Gestikulationen, die automatisch abgespielt werden, sobald der Mensch hinter dem Avatar in das Mikrofon spricht.
&lt;/p&gt;

&lt;p&gt;
Darüber hinaus gibt es auch Gebiete, in denen Waffen verwendet werden dürfen, wodurch Second Life je nach Art der verwendeten Waffen und Skripte zu einem Egoshooter oder Third-Person-Shooter wird oder man beispielsweise in einem an klassische Fantasy-Rollenspiele erinnernden Kellergewölbe mit am Eingang erworbenen Schwertern und Rüstungen auf Monsterjagd gehen kann.
&lt;/p&gt;

&lt;p&gt;
Gerade bei der Nutzung als Spiel zeigt SL eine Vielfalt an Animationen, die von den Lauf- und Flugbewegungen der Avatare über einfache Gesten und komplexere Bewegungen bis hin zu detailreich ausgestalteten Sequenzen geht, die sich vielfach kombinieren und bearbeiten lassen, und die bisher von keinem anderen MMOG erreicht wird, was vor allem daran liegt, dass die Welt fast vollständig von den Bewohnern selbst gestaltet wird.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Das Programm als Spiel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;das_programm_als_spiel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;8730-11745&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;zahlungsmittel&quot;&gt;Zahlungsmittel&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Die Währung des Programms ist der Linden-Dollar (L$). Grundsätzlich benötigt man zur Teilnahme in Second Life kein Guthaben. Linden-Dollars werden jedoch benötigt, um Gegenstände von anderen Teilnehmern zu kaufen, oder für kostenpflichtige Aktivitäten, beispielsweise um selbst erstellte Bilder (Texturen) auf den Server zu übertragen. Jeder Teilnehmer erhält eine bestimmte Menge Linden-Dollars, wenn er unter Angabe von Kreditkarteninformationen zum ersten Mal dem Programm beitritt. Figuren, die vor dem 23. Mai 2006 erzeugt wurden oder deren Teilnehmer ein monatliches Nutzungsentgelt bezahlen, erhalten zudem ein wöchentliches „Taschengeld“.
&lt;/p&gt;

&lt;p&gt;
Um in Second Life Geld zu verdienen, kann man Objekte erstellen und diese dann anschließend anderen Benutzern zum Verkauf anbieten. Es gibt auch Jobangebote (zu nennen wären hier insbesondere DJs und Angebote im Bereich virtueller sexueller Dienstleistungen), für die man dann vom virtuellen Arbeit- oder Auftraggeber eine zuvor ausgehandelte Summe bekommt. Geringe Mengen an Linden-Dollar lassen sich außerdem mit „Campen“ (dem bezahlten Verweilen an bestimmten Orten) verdienen.
&lt;/p&gt;

&lt;p&gt;
Der Betreiber Linden Labs bietet die Möglichkeit, die Linden-Dollar sogar in reale Dollar umzutauschen und umgekehrt, wobei der zulässige Betrag je nach Zugehörigkeitsdauer des Teilnehmers zu Second Life variiert. Der Tauschkurs beträgt ungefähr 270 Linden-Dollar zu 1 US-Dollar bzw. ungefähr 425 Linden-Dollar zu 1 Euro (Stand Juli 2008). Da Gutschriften nur in US$ erfolgen, muss ein Umtausch in Euro über Kreditkarte oder Paypal erfolgen. Linden Labs agiert dabei gegen Provision lediglich als Vermittler zwischen Benutzern, die L$ kaufen und solchen, die L$ verkaufen wollen. Der Betreiber nutzt die Börse jedoch auch um frische L$ ins Spiel zu bringen.
&lt;/p&gt;

&lt;p&gt;
Die Möglichkeit, die virtuelle Spielewährung zu echtem Geld zu machen, hat angeblich dazu geführt, dass schon einige Teilnehmer ihren „realen“ Job gekündigt haben und ihren Lebensunterhalt in der Virtualität als Mitentwickler des Spiels bzw. als Händler und Dienstleister innerhalb der virtuellen Welt zu verdienen trachten. Die realen Verdienstmöglichkeiten werden von Experten jedoch als gering betrachtet. Von den über 400.000 Nutzern, die im Dezember 2006 in Second Life online waren, sollen nur rund 400 mehr als 250.000 Lindendollar (rund 720 Euro) im Monat verdient haben[6].
&lt;/p&gt;

&lt;p&gt;
Obwohl virtuelle Güter vom Online-Auktionshaus eBay wegen des höheren Betrugsrisikos üblicherweise ausgeschlossen sind (Betreiber der meisten Online-Rollenspiele verbieten den eBay-Handel in ihren AGB), bildet Second Life eine ausdrückliche Ausnahme, da eBay die Plattform nicht als Spiel ansieht[7]. Es haben sich sogar mehrere Online-Marktplätze speziell für virtuelle Produkte aus Second Life entwickelt[8][9].
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Zahlungsmittel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;zahlungsmittel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;11746-14607&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;firmen_und_politik_in_second_life&quot;&gt;Firmen und Politik in Second Life&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Firmen nutzen Second Life bislang vor allem für PR-Zwecke. Der Aufbau einer Repräsentanz sichert häufig kostenlose Presseartikel. Auch wird SL direkt für Produkttests und Produktinformationen verwendet. Der Grund hierfür ist äußerst einfach: Firmen können hier ohne große Kosten Artikel erstellen und verbreiten, um zu sehen, ob die Produktinformationen oder das Image bei potenziellen Käufern Anklang finden würden.
&lt;/p&gt;

&lt;p&gt;
So hatte Adidas zum Beispiel ein virtuelles Geschäft aufgebaut, in dem man Schuhe aus der aktuellen Kollektion für seinen Avatar kaufen konnte [10]. Auch BMW, FriendScout24[11], Mercedes Benz[12], Mazda, IBM, Reebok, Sony BMG Music Entertainment, der TÜV_Saarland [13] und andere haben mittlerweile ihre Dependance errichtet. Bis Februar 2008 war auch die Deutsche Post in Second Life vertreten. In der virtuellen Konzernzentrale, dem Post Tower auf Post Island konnten Besucher eigene Postkarten erstellen. Diese wurden von der Deutschen Post weltweit als echte Grußkarte in die reale Welt verschickt.[14] Sony Ericsson hat pünktlich zur CeBIT 2007 eine Region eingerichtet und bewirbt mit einer umfangreichen Cross-World-Kampagne Endgeräte, gekoppelt mit einem Gewinnspiel[15]. JobScout24 verfolgt ebenfalls den Cross-World-Gedanken und erweiterte die hauseigene Jobsuchmaschine jobs.de um den neuen Wohnort „Second Life“, unter dem Jobangebote speziell für Second Life offeriert werden. Per Live-Schnittstelle werden die Jobangebote zudem in die virtuelle Filiale innerhalb der 3D-Welt exportiert[16]. Die Gothaer-Versicherung sucht über Second Life qualifizierte Mitarbeiter für Innen- und Außendienst. Über ein Anzeigenplakat in der Online-Welt werden die Benutzer direkt auf die Gothaer Karriereseiten geleitet.
&lt;/p&gt;

&lt;p&gt;
Die deutschsprachige Presse zeigt sich seit Spätjahr 2006 verstärkt interessiert an Second Life. Während Spiegel-Online einen Avatar (Sponto) erstellt hat und in seinem Netzangebot in Form eines Tagebuchs berichtet, veröffentlicht der Axel Springer Verlag seit Ende 2006 eine virtuelle Boulevard-Wochenzeitung innerhalb von Second Life, den AvaStar. Dieser liegt bislang noch kostenlos aus, soll jedoch künftig kostenpflichtig (150 L$, ca. 0,40 Euro) werden und so das mehrköpfige Redaktionsteam finanzieren. Firmen präsentieren sich nicht nur in Second Life, sondern nutzen das System auch für virtuelle Konferenzen und Schulungen. Architekten nutzen es außerdem zur Simulation von Gebäuden.
&lt;/p&gt;

&lt;p&gt;
Neben Firmen sind inzwischen auch verschiedene private und staatliche Organisationen und Institutionen in SL präsent. So findet man dort u. a. auch ein Büro von Greenpeace, eine virtuelle schwedische Botschaft sowie eine Repräsentanz des deutschen Bundeslandes Baden-Württemberg.
&lt;/p&gt;

&lt;p&gt;
Zunehmend wird Second Life auch als Wahlkampfplattform von Parteien und Politikern genutzt: Neben der französischen rechtsextremen Front National wurden auch die Präsidentschaftskandidaten Ségolène Royal und Nicolas Sarkozy beworben.[17]
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Firmen und Politik in Second Life&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;firmen_und_politik_in_second_life&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;14608-17643&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;links&quot;&gt;Links&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Second Life Startseite Deutsch - &lt;a href=&quot;http://de.secondlife.com&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://de.secondlife.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://de.secondlife.com&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Second Life Wiki Deutsch - &lt;a href=&quot;http://wiki.secondlife.com/wiki/Help:Second_Life_FAQ/de&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://wiki.secondlife.com/wiki/Help:Second_Life_FAQ/de&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://wiki.secondlife.com/wiki/Help:Second_Life_FAQ/de&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;17644-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:firmen:linden_labs</category>
            <pubDate>Fri, 29 Nov 2019 10:58:46 +0000</pubDate>
        </item>
        <item>
            <title>Mike</title>
            <link>http://live.spdns.org/wiki/archiv/opensim/firmen/s-networkx/michael_strunck?do=revisions&amp;rev=1575021526</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;mike&quot;&gt;Mike&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ich heisse Mike und bin seit März 2007 in Second Life. Meine Avatar-Namen sind „&lt;a href=&quot;http://world.secondlife.com/resident/74ada6c0-0607-41bf-9610-b24ccc844c9f&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;http://world.secondlife.com/resident/74ada6c0-0607-41bf-9610-b24ccc844c9f&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Mikebert Miles&lt;/a&gt;“ in Second Life und „Mikebert M34“ in OpenSIM. Im Juni 2008 hört ich das erste Mal von dem Begriff „OpenSIM“ und war von dem Projekt sehr fasziniert. Um erst einmal für mich selber und später auch für andere alle wertvollen Informationen zu OpenSIM in deutscher Schrift zu dokumentieren startete ich am 18.Juli 2008 dieses Ihnen nun vorliegende OpenSIM Wiki auf einem der in unserer Firma S-NetworkX stehenden Server.
&lt;/p&gt;

&lt;p&gt;
Zusätzlich zu Second Life bin ich noch an verschiedene andere VR-Grids angeschlossen und betreibe eigene OpenSIM Server mit eigenen Sims. In Second Life bin ich unter dem Avatar-Namen „Mikebert Miles“ und in anderen VR-Grids ebenfalls mit dem Vornamen „Mikebert“, aber unterschiedlichen Nachnamen (sonst gibt es Probleme mit dem SL-Client) online. Am schnellsten bin ich über den Live-Support auf unserer Website erreichbar. Dort oben rechts auf die Grafikschaltfläche klicken.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://live.spdns.org/wiki/_detail/mikebert-miles.jpg?id=archiv%3Aopensim%3Afirmen%3As-networkx%3Amichael_strunck&quot; class=&quot;media&quot; title=&quot;mikebert-miles.jpg&quot;&gt;&lt;img src=&quot;http://live.spdns.org/wiki/_media/mikebert-miles.jpg&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; title=&quot;mikebert-miles.jpg&quot; alt=&quot;mikebert-miles.jpg&quot; /&gt;&lt;/a&gt; Ich beschäftige mich seit 1983 mit Computern. Damals kaufte ich mir für 999,- DM den für damalige Verhältnisse unglaublichen schnellen Atari 800XL, kurz darauf noch einen Sinclair Spectrum ZX81, zusammen mit 4 Diskettenstationen, einer 128 kB RAM-Disk und einem 300 Baud Datafon Akustikkoppler. Mit diesen Komponenten ausgerüstet konnte man für damalige Verhältnisse schon recht komfortabel online gehen und eine der bereits zahlreichen Mailboxen besuchen.
&lt;/p&gt;

&lt;p&gt;
Die Idee Informationen weltweit zum Abruf online zu stellen, quasi der Vorläufer von Homepages im WWW, reizte mich auch und so sah ich mich nach einem Modem um, denn mit dem Datafon-Akustikkoppler war zwar Auto-Dial aber kein Auto-Answer möglich. In Versandkatalogen wurden allerdings die ersten vollautomatisch arbeitenden Modems angeboten die man direkt in die Telefonleitung einschleifte. Ich kaufte ein für damalige Verhältnisse sehr teures, aber auch sehr komfortables “Lightspeed 1200″ Modem mit Auto-Dial/Auto-Answer und betreibt über mehrere Jahre hinweg und rund um die Uhr die Münchner Mailbox (CBBS) “Night-Light”. Freunde von betrieben die Mailbox “Xanadu” (Frank Steffenhagen) und “IRATA” (Atari rückwärts, von Mike Reyes). Die Mailbox wurde dem technischen Stand der Technik ständig angepasst; so war die Night-Light CBBS lange Zeit die schnellste Mailbox in München. Das erste “Lightspeed 2400″ Modem war u.a. bei Night-Light in Betrieb.
&lt;/p&gt;

&lt;p&gt;
Zu Zeiten als es das Internet bzw. das World Wide Web noch gar nicht gab und sich in den BBS jeweils nur ein Benutzer über eine Telefonleitung einloggen konnte, gab es allerdings schon eine richtige Online-Szene, zu der auch ich unter dem Alias “Chip-Tango” gehörte. Ende der achtziger Jahre wurden BBS durch die massive Zunahme von lokalen Netzwerken auf Ethernetbasis immer uninteressanter und so stellte ich den Betrieb der Mailbox ein. Zuerst enttäuscht über die immer kommerzieller werdende technologische Entwicklung der Datenkommunikation wurde aber mit dem Internet eine völlig neue Perspektive angeboten, die auch viele Jungunternehmer als sogenannte “Start-up´s” nutzen. Für mich ein ideales Betätigungsfeld, denn ich konnte bereits langjährige Erfahrungen als Content-Provider durch den Mailbox-Betrieb vorweisen.
&lt;/p&gt;

&lt;p&gt;
1994 gestaltete ich für ein Münchner Sushi-Restaurant eine meiner ersten Websites mit deutscher .de Domain, dessen Hauptattraktion der Online-Bestellservice und eine täglich aktualisierte Speisekarte gehörte - ein Konzept das bis heute funktioniert. Die damals dazu angemeldete .de Domain gehört mit zu den ältesten bis heute immer noch im Betrieb befindlichen Domains in Deutschland.
&lt;/p&gt;

&lt;p&gt;
1998 übernahm ich für zwei Jahre die Leitung des Internetcafé-Bereichs im renommierten Café “Frundsberg” im Münchner Stadtteil Neuhausen. An sieben Tagen die Woche konnte man an sieben PC-Arbeitsplätzen mit LCD-Flachbildschirm über 128 kBit/sec. ISDN-Standleitung und eigenem Server im World Wide Web surfen. Für die Internetgäste bot ich auch Schulungen und schnelle Hilfestellung bei Problemen an, was gerne und häufig in Anspruch genommen wurde.
&lt;/p&gt;

&lt;p&gt;
2000 gründete ich zusammen mit meiner damaligen Partnerin in Krailling bei München die Internet-Agentur S-NetworkX. Meine damalige Partnerin ist Diplom-Betriebswirtin (FH) und Wirtschaftsinformatikerin und hat meine technischen Erfahrungen ideal um den ebenso sehr wichtigen betriebswirtschaftlichen Teil ergänzt. Im gleichen Jahr noch wurde das Regional-Portal Würmtal Web und das Intranet M34-Netzwerk aufgebaut. Das Würmtal Web mit seinem umfangreichen Web-Index bietet bis heute das besucherstärkste Regional-Portal im gesamten Landkreis Starnberg.
&lt;/p&gt;

&lt;p&gt;
2002 wurde das M34-Netzwerk um drahtlose WLAN Access Points erweitert, welches mobile Benutzer an das immer grösser werdende Intranet anbindet. Im September des gleichen Jahres wurde das WLAN um viele weitere WLAN Access Points in der gesamten Nachbarschaft, später sogar in den angrenzenden Gemeinden und Landkreisen, erweitert - das “Würmtal Wireless Network” war geboren. Das Würmtal Wireless Network ist ein sogenanntes WMAN, ein Wireless Metropolitan Area Network, bestehend aus vielen einzelnen Hotzones. Dieses WMAN ist eines der grössten drahtlosen Netzwerkinfrastrukturen in Deutschland.
&lt;/p&gt;

&lt;p&gt;
Heute bin ich täglich als Netzwerkadministrator, Netzwerktechniker, Content Provider, Wireless Internet Service Provider, Webdesigner und Mediengestalter (Audio, Video und Photo) im Einsatz, biete online wie offline PC- und Netzwerknotdienste an, gestalte neue und überarbeite bereits bestehende Webseiten mit den unterschiedlichsten Techniken, arbeite als Online-Redakteur über Content Management Systeme (&lt;abbr title=&quot;Content Management System&quot;&gt;CMS&lt;/abbr&gt;) bei verschiedenen Fachpublikationen mit und bin begeisterter Wikipedia-Nutzer, der das offene Content-Konzept der Wikipedia als eines der besten Errungenschaften des World Wide Webs hält.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
        <category>archiv:opensim:firmen:s-networkx</category>
            <pubDate>Fri, 29 Nov 2019 10:58:46 +0000</pubDate>
        </item>
    </channel>
</rss>
