OpenSimWorld @opensimworld

Offline

Visit OpenSimWorld to get the latest versions of the OpenSimWorld beacon, the SatyrFarm, SFposer and SFsail


ActiveNPCs: An interactive-NPC controller

<h1>ActiveNPCs NPC Controller</h1>
<p>This is a full-featured controller for creating interactive NPCs , scripting them (through notecards) and creating waypoints of your region so that the NPCs can walk around your region. The controller is extremely lightweight (a single script manages all the NPCs) and the NPCs are interactive (i.e. you can give them commands through the local chat).</p>
<p>You can get the latest package from the OpenSimWorld region:</p>
<p><a href="http://opensimworld.com/hop/74730-OpenSimWorld">http://opensimworld.com/hop/74730-OpenSimWorld&lt;/a&gt;&l...
<p>Hypergrid: hg.osgrid.org:80:OpenSimWorld</p>
<h1>Quickstart</h1>
<p>The controller requires OSSL functions to work. You need to have permission to use the osNpc*() functions and, additionally: , osGetNotecard(), osGetNotecardLines(), osMessageAttachments(), osSetSpeed(). The controller uses the channel 68 to communicate.</p>
<p>To start using the controller:</p>
<ul>
<li>Rez the OSW NPC Controller object somewhere in your region. Make sure your avatar is within distance of 20m or less from the controller</li>
<li>Wear the OSW NPC Listener object (it should attach automatically to your Right Pec!)</li>
<li>Edit the <code>__npc_names</code> notecard, and place first name and last names of each of your NPCs in a line by itself. Example:
<pre><code>Bob TheRobot
Alice TheNPC
</code></pre>
</li>
<li>Touch the controller -> ReConfig</li>
<li>Touch the controller, SaveNPC -> Bob (You should see a message "Saved appearance xxx-xxx -> APP_bob"</li>
<li>Touch the controller -> LoadNPC -> Bob</li>
</ul>
<p>Your npc should now be responding to commands , e.g. "Bob come"</p>
<h1>Controller object Contents</h1>
<ul>
<li>The controller script (..Controller). This is the single script that runs everything.</li>
<li>An example extension script (..Extension). This can be used to add commands to the system (explained below).</li>
<li>The Listener object. All our NPCs must wear this invisible object on their Right Pec. This object listens for commands from the local chat and forwards them to the controller script for processing.</li>
<li>The __npc_names notecard. This notecard contains the names of the NPCs, one in each line . After making changes to this notecard, select "Reconfig" from the controller menu.</li>
<li>The __initcommands notecard. This is a notecard with the commands that are executed when you click "InitCmds" on the controller menu.</li>
<li>The <strong>waypoints notecard. This contains a list of points in your region. The NPCs can walk from one point to the other, if they are connected (via the </strong>links notecard) . <em>You do not need to edit this by hand. There is an HUD for editing the map</em></li>
<li>The __links notecard. This contains a list of pairs of connected points. I.e. if you want to link point 1 to point 2, there will be a line "1,2" in the notecard. <em>You do not need to edit this by hand. There is an HUD for editing the map</em></li>
<li>The __config notecard. This contains configuration ootions.</li>
<li>Command notecards. You can put any list of commands for NPCs a notecard named [command-name].scr. You can then order your NPCs to execute the notecards from the local chat. E.g. if you create a notecard "dance.scr", you can say "Bob dance" to execute it.</li>
<li>Waypoint notecards. Notecards named _1.scr , _2.scr etc are executed automatically when the NPCs reach the waypoint number 1, number 2 etc.</li>
<li>The appearance notecards are stored as APP_[firstname] for each NPC. You can also have multiple appearances per NPC (see below).</li>
<li>The Waypoint HUD is used to edit the map and create/update the <strong>waypoints and </strong>links notecards</li>
</ul>
<h1>Overview of commands</h1>
<p>The NPCs respond to commands that you give to them through the local chat.</p>
<p>Assuming your NPC is named "Bob", you can say the following in the local chat:</p>
<pre><code> Bob come
Bob leave
Bob stop
Bob follow me
Bob fly with me
Bob say hi
...
etc.
</code></pre>
<p>You can put these commands in notecards in order to create complex scenarios.</p>
<p>For more complex behavior, the following control commands are supported in notecards: if, if-not, jump</p>
<p>Example of a scenario notecard:</p>
<pre><code> if name-is Bob Alice
say hi
say I am either Bob or Alice
jump outofhere
end-if
say i am not bob or alice
@outofhere
if-not name-is Bob
say I am definitely not Bob
end-if
say ... and i 'm now leaving
leave
</code></pre>
<p>You can add these commands to a notecard named "test.scr" inside the controller object, and then ask the Bob to execute them by saying "Bob test" in the local chat.</p>
<h1>List of NPC commands</h1>
<p>When giving commands through the local chat, commands must be preceded by the first name of the NPC. Here we assume our NPC is called "Bob"</p>
<pre><code> Bob come : "Come here ". Bob will move close to you
Bob moveto 23 : Walk towards waypoint #23
Bob movetov <23,24,25> : walk towards point with coordinates <23,24,25> (Note, no spaces between vector coordinates)
Bob runtov <23,24,25> : run towards point with coordinates <23,24,25>
Bob flytov <23,24,25> : fly towards point <23,24,25> in region
Bob movetovr <23,24,25> <33,34,25> : walk to a random point between the points <23,24,25> <33,34,25>
Bob runtovr <23,24,25> <33,34,25> : same as above, but run
</code></pre>
<ul>
<li>
<ul>
<li>Note: never leave spaces in coordinate vectors, i.e. <23,24,25> NOT <23, 24, 25> **</li>
</ul>
</li>
</ul>
<pre><code>Bob say hi : Says "hi" on public channel
Bob saych 90 blablah : say "blablah" on channel 90
Bob shout Blah bleh
Bob teleport <23,30,40> : Teleports to a point. REMEMBER: no spaces inside the vector brackets
Bob lookat me : attempts to look at you
Bob lookat <x,y,z> : look towards point x,y,z
Bob anim dance : play animation "dance" . the animation must be in the inventory of the controller object
Bob sound 1c8a3af2-6e5a-4807-a7a3-a42e5744217c 1.0 : The NPC will trigger the sound with the given UUID at the volume specified by the second parameter (1.0 is max volume)
Bob light : turn on/off a light the NPCs have on them
Bob give Apple : Give the object "Apple" from the controller's inventory to the user. For security, only Objects can be given.
Bob follow me
Bob follow Alice : follow the avatar whose first name is 'Alice'
Bob fly with me
Bob fly with alice : fly with another user
Bob stop : Stops his animation and his movement, and stops following you
</code></pre>
<h3>Waypoint and Pathfinding commands</h3>
<p>You need to have set up the map of your region for these commands. That is described elsewhere. The NPC can automatically try to find how to walk from waypoint A to B. Because this is computationally intensive, only paths with less than 15 connections between them are supported.</p>
<pre><code>Bob leave : Start walking randomly between connected waypoints
Bob teleport Bar : Teleports bob to the waypoint named "Bar"
Bob lookat Bar : look towards the waypoint named "Bar"
Bob moveto 1 : Walk to waypoint #1
Bob nearest : Tell me which is the nearest waypoint
Bob setpath 0:1:3:5:1:0 : Walk through the given waypoints, i.e. walk to waypoint 0 , then to 1, then to 3, then to 5 etc.
Bob goto 13 : Will walk between connected waypoints to waypoint #13
Bob go to Bar : Will walk between connected waypoints to the waypoint named "Bar"
: BEWARE! "goto" and "go to" (with space) are different commands
Bob go to : without a destination, Bob will print the names of waypoints he knows
</code></pre>
<h2>Command Notecards</h2>
<p>Multiple commands can be appended to a notecard, and then the NPC can execute them.</p>
<pre><code>Bob run-notecard my_script.scr : Execute the contents of the notecard my_script.scr (the notecard must be in the controller inventory
Bob my_script : Simpler syntax. Same as run-notecard: Starts executing the notecard "my_script.scr"
Bob batch say hi ; wait 10; say bye : Executes multiple commands one after the other. Commands are separated by ";" The commands will be executed as if they were in a notecard
Bob stop-script : Stop executing the notecard script
</code></pre>
<h2>Multiple appearances</h2>
<p>You can have multiple appearance notecards for an NPC by renaming them. The default notecard for NPC Bob is stored in the APP_bob notecard. You can rename the notecard to, e.g. APP_bob_swimming, and then ask bob to load that notecard:</p>
<pre><code>Bob dress swimming : load the appearance from notecard "APP_bob_swimming"
Bob dress : load the NPC's default appearance from notecard "APP_bob"
</code></pre>
<h2>Sitting on objects</h2>
<p>The NPCs can sit on objects with the "use" command.</p>
<pre><code>Bob use chair
</code></pre>
<p>Bob will attempt to find a SCRIPTED object (e.g. a poseball) named "chair" (You can change the Object Name from the properties box when editing it) near him and try to sit on it if its transparency (alpha) is less than 100%. Since by convention poseballs change their transparency to 100% when users sit on them, this ensures that Bob will not sit on an already-occupied poseball. If you just say "Bob use", the NPC will sit on the nearest scripted object.</p>
<pre><code>Bob stand : Bob will stand up if he is sitting
</code></pre>
<h2>Variables</h2>
<p>Variables can be used with IF commands in notecards for more complex behavior.Variables are global and shared between notecards and NPCs.</p>
<pre><code>Bob setvar foo 13 : set variable foo to be "13". Only string variables are supported. Variables can be used with IF blocks
Bob setvar foo : set variable foo to the empty string. (The empty string is the default value if a variable does not exist)
Bob say $foo : Bob says "13"
if var-is foo 13
say foo is thirteen
end-if
if var-is foo
say foo is empty string or not set
end-if
waitvar foo 13 : wait (and do nothing) until the variable foo becomes 13
</code></pre>
<p>The following commands increase and decrease a variable by 1. They are useful in cases where you want 2 or more avatars to be present to proceed:</p>
<pre><code>increase totalAvatarsHere : Increase the variable "totalAvatarsHere" by 1
decrease totalAvatarsHere : Decrease the variable "totalAvatarsHere" by 1
zero totalAvatarsHere : Set variable totalAvatarsHere to 0 (same as setvar totalAvatarsHere 0)
</code></pre>
<p>Example usage in a notecard:</p>
<pre><code>increase totalAvatarsHere
waitvar totalAvatasHere 2
say Now there are 2 of us
anim dance
wait 10
stop
...
say Time to depart
decrease totalAvatarsHere
</code></pre>
<h2>IF commands</h2>
<p>There is support for multiple levels of IF blocks. Blocks must end with "end-if". There is no "else" command, but you can achieve the same effect with "jump" commands</p>
<pre><code>if name-is bob alice : if the npc's name is Bob or alice
say I am either Bob or Alice
if-not name-is Bob
say I must be Alice
end-if
end-if : always end IF blocks with end-if. You can nest if blocks
if-not name-is Bob : Example of negative if
say I am not Bob
end-if
if-prob 0.3 : IF block will be executed with probabilty 0.3 (the if block will be executed 30% of the time)
say This will be heard 30% of the times
end-if
if var-is party 1 : Will execute the IF block if the variable party is "1"
say We are having a party already!
end-if
if var-is party : Will execute the IF block if the variable party is empty or not set
say No party yet, let's start one!
setvar party 1
end-if
</code></pre>
<p>Jump command. You can use the syntax @label to create labels in your notecards. The syntax is:</p>
<pre><code>@myLabel : a label
say This will loop forever
jump myLabel : like "jump" in LSL or "goto" in other languages. the label should be on a line by itself prefixed with '@'
</code></pre>
<h2>WAIT commands</h2>
<pre><code>wait 200 : wait (don't do anything) for 200 seconds
wait 200 300 : wait between 200 and 300 second before executing the next command
waitvar foo 13 : wait until the variable foo gets the value 13
waitvar foo : wait until the variable foo is empty.
</code></pre>
<h2>Other commands</h2>
<pre><code>Bob msgatt attachment_command 12 13 14 15
</code></pre>
<p>Uses osMessageAttachments to send the message "attachment_command" to attachments at attach points 12 13 14 15. This can be useful for scripting NPC attachments. Read the OSSL docs of osMessageAttachments() for more.</p>
<h2>Custom command notecards</h2>
<p>You can extend the list of commands with notecards. To create a command notecard, enter the commands for the NPC to execute in a notecard, and save it into the controller's inventory with the name [command-name].scr</p>
<p>E.g. a dance command notecard would be named "dance.scr" and contain the following</p>
<pre><code>say I love to dance!
anim RockDance
wait 600 800
say oops, I am tired...
stop
</code></pre>
<p>You can then say "Bob dance" to have bob execute the notecard</p>
<h2>Interactive menus</h2>
<p>With interactive menus, your NPCs can ask your visitors to make a choice from a menu in the local chat. The following notecard asks the user if they want apple or an orange and gives an object to them:</p>
<pre><code>say Welcome to the shop!
@prompt
prompt Do you want an [apple] or an [orange]?
say I didn't catch that. Starting over.
jump prompt
@apple
say Here is an apple
give Apple
jump end
@orange
say Here is your orange
give Orange
jump end
@end
say Goodbye
</code></pre>
<p>Here is how it works:</p>
<ul>
<li>The options of the menu are specified in the prompt string itself, in square brackets:
<pre><code>prompt Do you want an [apple] or an [orange]?
</code></pre>
</li>
<li>Bob will say "Do you want an [apple] or an [orange]?" to the local chat, and it will expect to read the words "apple" or "orange" in the local chat from your visitor.</li>
<li>If he hears "apple", he will jump to the label "@apple" in the notecard.</li>
<li>If he hears "orange", he will jump to label "@orange" in the notecard.</li>
<li>If he hears something else, he will not jump, but continue normally to the next notecard line after the "prompt" line. (In our case, he asks again).</li>
<li>The menu options can only be single words (e.g. "orange", or "apple"). They are case-insensitive, and the menu will work even if the word is said in a phrase (I.e. "I want an apple" will still jump to @apple)</li>
</ul>
<h2>Waypoints and Pathfinding</h2>
<p>You can use the controller to create waypoints and links between them in your region. Bob can then walk between the connected points when you say 'Bob leave'</p>
<p>Each waypoint has a number (starting from 0) and optionally a name. Waypoints can be connected to other waypoints, thus creating a map (graph) between them. Bob can then wander between the waypoints (Say "Bob leave" to start walking), and you can also ask him to find his way from point A to point B (say Bob go to [destination]).</p>
<p>The waypoint data are stored in the <strong>waypoints notecard, one in each line, and the links data is stored in the </strong>links notecard. You do not need to edit these notecards by hand however, as you can use the included Waypoint Editor HUD.</p>
<p>To create a map, first wear the WaypointEditor HUD. If you already have created a map before, click RezPegs from the HUD menu. This will rez a peg in each waypoint you have already created. If you are starting with an empty map, you do not need to do this.</p>
<p>To add a waypoint, move your avatar to the desired position, and select "AddPeg" from the HUD menu. A peg should appear in front of you. To create a second waypoint, move to another position, and repeat.</p>
<p>To link the two waypoints X and Y, click on the first one (X), then click on the second one (Y). The pop up dialog should say "Current peg: Y, previous: X". To link them, select "LinkPegs" from the popup dialog. To unlink two waypoints, again, click on the first one, then click on the second one and select "UnlinkPegs" from the popup. Be careful to disregard all other dialogs that have popped up.</p>
<p>You can give a name to waypoints. Click the peg, select "SetName", and enter the name (E.g. "Bar"). You can use this name to give commands to your NPCs later (e.g. "Bob go to bar").</p>
<p>You can move the waypoints around to correct their positions. Important: After you move pegs to new positions click "ScanPegs" from the editor HUD. If you don't do this your changes will be lost.</p>
<p>After you have created/edited your waypoints, click the WaypointEditor HUD and select "SaveCards". This will update/create the <strong>waypoints and the </strong>links notecards inside the controller to match your new map. To test that all went well, clear the pegs and rez them again.</p>
<p>Note! Removing waypoints is not supported, as it would break the numbering and would mess up the notecard naming scheme. Although deleting is not supported, you can unlink a waypoint from all other waypoints, in which case the NPCs will never go there when wandering. If you want to start over with an empty map, edit the <strong>waypoints and </strong>links notecards, remove all their contents, and then select "Reconflg" from the controller.</p>
<h2>Configuration</h2>
<p>Configurable options for the controller are added in the __config notecard:</p>
<pre><code>AutoLoadOnReset=0
</code></pre>
<p>Change AutoLoadOnReset=0 to AutoLoadOnReset=1 to make the controller rez the NPCs automatically on region restart or script reset. Please note that autoloading NPCs may not always work well with some opensim versions.</p>
<h2>Permissions</h2>
<p>Permissions allow you to limit access to NPCs , and to specific commands to certain users or to all users. An access control list is specified in the __permissions notecard which is inside the controller object.</p>
<p>Each line in the __permissions notecard has the format</p>
<pre><code><npc-name> <command-name> = <RULE> <avatar name>
</code></pre>
<p>Where RULE is ALLOW, DENY, ALLOWID, DENYID or ALLOWSAMEGROUP (read below for usage).</p>
<p>The following line blocks (denies) avatar "Bad Hombre" from issuing the "bob come" command:</p>
<pre><code>bob come = DENY Bad Hombre
</code></pre>
<p>You can substitute the name of the NPC or the name of the command or the name of the avatar with the wildcard character '*'. for example, this blocks any avatar from using the command:</p>
<pre><code>bob come = DENY *
</code></pre>
<p>you can block any avatar from issuing the "come" command to any NPC:</p>
<pre><code>* come = DENY *
</code></pre>
<p>you can block any avatar from issuing any command to Bob:</p>
<pre><code>Bob * = DENY *
</code></pre>
<p>you can block a specific avatar from using any command on any npc:</p>
<pre><code>* * = DENY Bad Hombre
</code></pre>
<p>you can also use the DENYID command to block an avatar by UUID</p>
<pre><code>* * = DENYID d37a3f5b-562a-4bfd-b780-68c0b9b940b1
</code></pre>
<p>and you can block any avatar from using any command with any NPC!</p>
<pre><code>* * = DENY *
</code></pre>
<p>The rules specified in the notecard are executed from top to bottom, therefore you can add exceptions for specific users with the ALLOW and ALLOWID commands at the end of the list:</p>
<pre><code>* come = ALLOW Good User
* come = ALLOWID d37a3f5b-562a-4bfd-b780-68c0b9b940b1
</code></pre>
<p>You can also use the keyword ALLOWSAMEGROUP, which allows any avatar that is in the same group as the controller object.</p>
<pre><code>* come = ALLOWSAMEGROUP
</code></pre>
<p>You can use the wildcard '*' with the ALLOW commands as well</p>
<pre><code>Bob come = ALLOW *
* come = ALLOW *
Bob * = ALLOW *
</code></pre>
<p>An example __permissions notecard is given below which blocks any avatar from controlling the NPC "Alice" and disallows the "exec" command, but allows exceptions to certain users. It also blocks "evil user" from any command:</p>
<pre><code>Alice * = DENY *
* exec = DENY *
Alice * = ALLOW Good User
Alice * = ALLOWSAMEGROUP
* exec = ALLOW Good User
* exec = Allow Another Gooduser
* * = DENY Evil User
</code></pre>
<ul>
<li>Note that the ALLOW, DENY, ALLOWID etc. rules need to be in CAPITALS. Also, There must always be a space before and after the '=' character.</li>
<li>The owner of the controller is always able to use all commands with all NPCs regardless of access list.</li>
<li>If you make changes to the __permissions notecard, please click on the controller ->ReConfig to reload the permissions list.</li>
</ul>
<h2>Initialization commands</h2>
<p>The notecard <strong>initcommands contains initial commands to give to the NPCs. If AutoLoadOnReset is enabled, the notecard contents are executed automatically after loading. You can also manually execute the notecard by clicking "InitCmds" from the controller menu. You can use the </strong>initcommands to add any command that sets your NPCs in motion. Typically you would tell them to "leave" so that they start walking between waypoints. An example of __initcommands is :</p>
<pre><code>Bob say I am rezzed!
Bob teleport <64,64,22>
Alice teleport <128,64,22>
Bob leave
Alice leave : Start walking!
</code></pre>
<h2>Extension scripts</h2>
<p>You can extend the functionality of the controller with extension scripts. Extensions are LSL scripts that you create and add inside the controller object. If a command given to an NPCs is not understood by the NPC controller, the NPC controller will send a link_message to the extension scripts to process it. The extensions can also use link_message to send back commands to the NPC controller (the "number" parameter must be greater than 0) . The OSW NPC Controller object already contains an extension that implements the "help" command (look at the "..Extension" script). The script in it shows how extensions parse the data sent from the controller (sent through link_message) and how they can respond back.</p>
<p>The number parameter of the link_message is -1 if it comes from the controller script. The key parameter of the link_message is the UUID of the NPC. The string parameter of the link_message (or through channel 68) is of the format:</p>
<pre><code>! [uuid] Bob Bob help
</code></pre>
<p>Where:</p>
<ul>
<li>[uuid] is the UUID of the user who gave the command</li>
<li>Bob is the name of the NPC. The name is repeated once again.</li>
<li>What follows is the rest of the command that the NPC heard (e.g. "help")</li>
</ul>
<p>You can easily split the string with llParseString2List. Look into the ..Extension script for an example.</p>
<h2>Sending commands from other objects</h2>
<p>You can send commands directly to the NPC controller from any object. The NPC controller listens on channel 68. You have to remember to send the command using llRegionSay region-wide, so that the controller can hear it. The syntax is the same as the one used in link_message:</p>
<pre><code>llRegionSay(68, "! 0000-0000-0000-0000 Bob Bob say hello");
</code></pre>
<p>The UUID can be zero, and the name of the NPC must be repeated twice, as shown above</p>
<ul>
<li>ONLY scripts owned by the owner of the controller can send commands this way *</li>
</ul>
<h2>Setting controller variables from other objects</h2>
<p>Another way to interact with the controller is by setting variables from other objects by sending SETVAR [variable name] [value] from other objects to channel 68. This is the syntax:</p>
<pre><code>llRegionSay(68, "SETVAR foo 1");
</code></pre>
<p>(SETVAR must be in capitals. This example will set the variable "foo" to "1").</p>
<p>The variables can be used normally in notecards. In this example notecard, the NPC will waits for the variable "foo" to become '1' before starting to dance:</p>
<pre><code>@start
say Waiting for variable foo to become 1...
waitvar foo 1
say Variable foo is now 1! Let's dance!
anim dance1
wait 10
stop
setvar foo 0 : Reset var foo to 0 before waiting again
jump start
</code></pre>
<h2>Technical Notes</h2>
<p>The controller runs a single timer, that updates the states of all the NPCs every 5 seconds. This allows it to be extremely lightweight, as it does not block any script processing, but it may also cause delays when executing commands.</p>
<p>The controller checks the number of visitors in your region every 2 minutes. If there are no visitors in the region for 2 minutes, it will stop executing commands to avoid creating unnecessary load to the region.</p>
<h1>Bugs</h1>
<p>The controller was tested with version 0.8.2.1 . There may be multiple issues with other versions. Please add an issue, or get in touch with Satyr Aeon @ hypergrid.org:8002</p>
<h1>Thanks</h1>
<p>Thanks goes to Spax Orion for testing out lots of features and giving feedback</p>

👍 8 like

Milestones

Hide Feed  

With a broken heart, I inform you that our dear friend and lover of Virtual Worlds, Veritas McMaster, passed away in a house fire trying to save her beloved cockatoo Sophie.


Derrybeg Arabello: I did not know Veri .. very well, only chatted in passing. She seemed to me like a very sweet and caring person, and of course, she'd care enough about her bird to go back for it. We need more peo... 1 years ago
Plötzlich und unerwaret schlief am 4.12. mein liebster Rudi unser Grid Vater ein


Ich bin nur ins Zimmer nebenan gegangen.
Nichts ist passiert.
Alles bleibt genauso wie es war.

Ich bin ich, und ihr seid ihr, und das alte Leben, das wir so liebevoll zusammen lebten, ist unberührt und unverändert.
Was auch immer wir füreinander waren, das sind wir noch.
Ruft mich mit meinem alten vertrauten Namen.
Sprecht von mir in derselben selbstverständlichen Redeweise, die ihr immer benutzt habt.
Macht keinen Unterschied im Ton.
Erzeugt keine gezwungene Atmospäre der Feierlichkeit oder des Kummers.
Lacht, wie wir immer über die kleinen Späße lachten, die wir gemeinsam genossen haben.
Spielt, lächelt, denkt an mich, betet für mich.

Lasst meinen Namen immer vertraut und alltäglich bleiben, wie er es bisher auch war.
Lasst ihn ohne Anstrengung gesprochen werden, ohne einen geisterhaften Schatten.

Das Leben bedeutet alles, was es vorher auch bedeutet hat.
Es ist dasselbe wie es immer war. Es gibt absolute und ununterbrochene Kontinuität.
Was ist dieser Tod anderes als ein vernachlässigbarer Unfall?
Warum sollte ich aus eurem Sinn sein, nur weil ihr mich nicht mehr sehen könnt?
Ich warte in der Zwischenzeit auf euch, irgendwo ganz in der Nähe, gleich um die Ecke.

Alles ist gut.

Nichts ist verletzt; nichts ist verloren .
Ein kurzer Moment und alles wird so sein wie früher.
Wie werden wir über die Mühen des Abschieds lachen, wenn wir uns wiedersehen!

Tatum: I've known rudi a little bit (under different avis), but I do remember one of the nicest and most kind people of OS. Rest well my friendly friend! My condolences to friends and family! 1 years ago
TO THE MEMBERS OF SACRARIUM GRID

Your grid and users are not welcome here anymore. Your users have been harassing and messaging racist slurs at opensimworld users for years. You have harassed me personally and my family *in real life*. You keep doing it despite warnings and temporary bans

From now on you are permanently banned from listing and advertising anything from your grid in Opensimworld. Your regions are inactive anyway, they will be removed.

Your abusive accounts will be frozen. Do not attempt to create new ones , they will be removed.

Please advertise your grid etc on: Facebook, Twitter, Mewe, Discord, wherever, anywhere but NOT HERE . Enough is enough, you are not welcome here.
🥳We, at R. Lion Stores, hope the magic of Christmas fills every corner of your heart and home with joy — now and always.🥳
According with Santa's nice List, this year the ladies were the best behaved, so our gift is for them:😇
The new LaraX Mesh Body is available now at our new Avatar's components store, for you to get. Come quick!
hop://watersplash.inworldz.net:8002/iPleasure/121/530/2103

SheaButter: Happy Holidays, to you and your family. Thank you, for sharing all those wonderful items. 5 months ago
For the last 3 weeks, I have dealt with a intermittent issue on my grid that has about driven me nuts. I have tested, and eliminated possibilities …..without luck.

Yesterday two of the largest grid owners in open sim, Lone Wolf from Wolf Territories and Josh Boam from Aviworlds, took time from their busy schedules to help finally fix this issue. In addition , Rafael from Wolf Territories assisted. I cannot say thanks enough!

Although I work with Josh’s hosting business, this involved much more. Josh would not give up and recruited Lone Wolf.

In my opinion, maybe this is what opensim was designed to be: sharing of knowledge and helping each other.

Lone Wolf and Josh did not have to give up their time to help a tiny grid…..but they did!

Maybe we can all learn from these individuals!

Sharing knowledge is Caring



FYI. The default setting of 2 threadsets can cause major headaches depending on your region….it is way too low in some cases. You all probably know that…but I learned.

thedeeferry: So, OpenLife has me blocked, so I cannot reply directly to its comment. Nor can I send it a private message which I prefer. I apologize to any others if what I type now offends you. This is directe... 3 months ago

RIP Torben.


KarinBecker: Rest in peace and condolences to all his friends and loved ones. 2 years ago

Congratulations Arkham, the second year, Happy Anniversary


BeckySwanson: and when it says that the region does not exist ?... what would be the problem? 2 years ago

Rigged 3D models for use as avatars or animesh. Open to commissions, send me a notecard inworld with your request.


Antonia Ling: Wonderful stuff! Love it... 2 years ago
Opensimulator is FREE but not a "free-for-all" **

I have noticed there are a number of people who use the Opensimulator server software but they do not fully understand the true concept of it's OPEN nature.

In real life, I have been contributing to FREE and Open sourced software for well over a decade and I rely on it for most of my day to day computing tasks. I have a full working knowledge of what open source is and the level of freedom it gives to the people who use it. Free software gives you the ability to see the source code, change it, make it better, share your changes with friends and some open source licenses will allow you to SELL your modified code. There are many versions of Opensim such as the OSgrid builds, Arriba, Sasquatch, Isthmus or Halcyon and there is nothing stopping YOU from making your own version. You cannot do this with closed sourced software legally. This is the extent to which Opensimulator is OPEN.

Opensimulator is FREE! Free as in Freedom. You are FREE to use the software in any way that you feel is morally or socially acceptable and there is no defined method on how you should use the software. I see people all the time saying things to the effect of: "You should let everyone in your sim." or "You have no right to block bad people or grids." or "You should give everything away free because that is what Opensim was made for." If any of those statements are true then PROVE IT! Go on http://opensimulator.org and show me where it says this. I can assure you that I have completely read the BSD license and it is SHORTER than this article I am writing right now. Nowhere does the license say anything on how you should use the software because that act alone would nullify the freedoms that the Opensimulator developers have given you. You will not find (and probably never will find) any documentation enforcing edicts on how they think you should use this software. They do however have guides on getting the most out of it's features, it is an invaluable resource.

What does all of this mean? FREEDOM FOR ALL but NOT a free-for-all. You have the right to impose RULES on your sims and Opensim software gives grid operators powerful OSSL code to deal with interlopers and troublemakers. Nobody should walk all over you and tell you how to run your grid, when it is your servers, your money and your resources. YOU ARE IN CONTROL. Grid operators have the ability to block any viewer they want, it is built right in. You define how your grid operates and are under no obligation to obey anyone who hates you for using these features. Some may say "Because a feature exists does not mean you should use it." and they would be WRONG because these settings would not be included if the Opensimulator developers did not intend for people to use them.

I challenge anyone who disagrees with this article to visit http://opensimulator.org and show me any documentation which refutes anything I have said. I will only accept submissions from the aforementioned url because it is the OFFICIAL website for the Opensimulator project and they are the supreme authority governing it's use.

Feel free to share this article when needed.

Peace & Love
Spax

** A free-for-all is a situation in which several people or groups are trying to get something for themselves and there are no controls on how they do it.

CyberGlo CyberStar: The great thing about this "live & let live" attitude, is it means we can EVEN encompass the grinches. 1 years ago
Announcing the opening of the Raven's Peak Grid (ex Resurgence).

We managed to find an old backup from a month ago and have loaded it up. Not ideal, however we are all encouraged that not all is lost!

We have decided on a separate landing area to the main regions. You will now land on an island where you can TP to the region of your choice using the region teleporter.

The shops are open along with Hellfire Bay and Cinders Beach & Residential. We are all working hard to re-upload all our lost items and more! This means everything else has been put on hold so we can bring you quality items once again. So pop on over regularly because there will be new items in the stores daily.

If you were living at Cinders Beach prior to the hack, please contact Mike or Zoey. Either your island is still standing and needs to be handed back to you or it was lost. Either way, we can certainly assist.

We do have whole regions available and payable monthly POA:
1x1 - 30,000 prims
2x2 - 60,000 prims
4x4 - 90,000 prims

If you wish to live at Raven's Peak or have a store here you will need to make an account. You can make an account at Raven's Peak on this link: http://ravenspeak.outworldz.net:8002/wifi/user/account/

There are shops available for rent in the main shopping area. If you are interested in having a store here please contact either Mike or Zoey. Store owners are provided with a free 1x1 region with full admin rights.

As we get back on our feet again, we will be reverting back to our original plans to bring you a grid that you can live at, play at, shop at and more. The regions currently allow you to sail and fly around, we will be bringing back our Friday and Saturday night events and there will be lots more coming!

Everyone from Raven's Peak would like to thank you all for your support and look forward to welcoming you back.

Mike, Zoey and the team at Raven's Peak ♥

Mistressdalgato: Welcome back! any backup is better then no backup, i will come shop soon. 4 months ago
When I think of Rudi and Nasti the first memories I have of them have always been incredibly supportive and encouraging from the moment I met them. With the news of Rudi's passing, I felt an immediate loss to our community, I cannot imagine how difficult this is for Nasti. It is with sincere condolences to Nasti and the family, I created a pendant in his memory. For those that were touched by Rudi and his kind spirit, this is for you to remember that spirit.

I miss you Rudi, much love to Nasti

virtual-hg.com:8002:Monentes Jewelry

Jamie Wright: Beautiful tribute:) 1 years ago

Happy Christmas everyone!


thedeeferry: Best to you also sweet Wolf and to all who love you and all you love. Stay sweet, sweets! (ɔˆ ³ (ˆ⌣ˆc) my sweet Friend Did I mention how sweet your are? lol 5 months ago
All - Earthquake in Marrakesh Update 10/09/23

We have moved from our badly damaged home in Marrakesh to the capital Rabat - our power/broadband/telephone is very patchy but I have managed to make contact with Alex (Princess Alex), who will run the ILU side of things with Bobbi Fox, while we assess damage and living arrangements for the family.

Its just been announced over 2000 deaths and hundreds of injured - one close friend hasnt made it but he pulled his parents out of their wrecked family home.

Please pray for us and all those affected by this disaster.

We will see you all soon I hope.

Debz, Malik, Karen and Bethany Mansour

PinDeluca: This is just terrible ... My heart is with you. You Never know how strong you are until strong is your only choice. Take courage. God Bless you all. We will all meet again soon XXX 8 months ago
Danke für eure liebevollen Worte und Gebete. Danke allen, die in dieser schweren Zeit mir beigestanden und unseren Rudi das letzte Geleit gegeben haben. Danke auch für die vielen Blumen- und Kranzspenden, mit denen ihr eure Anteilnahme und Wertschätzung gezeigt habt.
In tiefster Dankbarkeit
Nasti

OtterLandMGM: https://www.youtube.com/watch?v=vyQf9nB4eYk&list=RDm-1tfeGeNrc&index=2&ab_channel=AndreasGabalierVEVO 1 years ago

EEP!
Upgraded sky with EEP, new clouds,rainbow,planets,milkyway


sharanncousine: greetings peter 2 years ago
Upgraded the horse rezzer script from the popular NPC horse rezzer to an "All-in-One" Animesh Horse Rezzer, with a load of features in the animesh horse.
Tip: to avoid the horse from dying, remove the "animesh horse rez" script, and have it roam around an area of your region or parcel, follow other horses, and other options.

One of the major benefits of the animesh horse is that it can cross regions (if allowed by the sim owner).
When you own the animesh horse, you can wear it an teleport around.

ThundergodThor: Positively awesome, I love it! The horses are so realistic looking. Awesome job Roland! 1 years ago
Tired of people coming to ur SIM/region/parcel just for copying stuffs? After u had a loot of work on doing it and all u see is.... avatars with arm stretched copying from A to Z? So the "COPY MY ASS" 3D sign is perfect for u.. Available for FREE and FULL PERM! Enjoy :)

Sabrinastav: Excuse me, I'm not understanding, you complain because people take things from your sim ?... or do you complain because people copy your sim's stuff? 2 years ago
The region hg.osgrid.org:80:Cherry Freebies is totally redone, my own original art freebies are displayed in different rooms : VOID, PLANT, BRUSH, RED, CUBE.
Some accessories I made, EEP, at SOUP.
All Fest'Avi avatars at FESTAVI.

Just select a room from the teleporter. Please remind that for a best experience, enable EEP and advanced lighting model.
There's no stream but scripted sounds (not everywhere yet) all from Morlitam.

photo displaying VOID room

FinjaFlux: An inspiration! Your art is like fireworks and animates new ideas! Another wonderful work from you!!! Thank you!!!! 2 years ago
This AviTron Shop Is Great--If You Want To Pay For Stuff That Should Be Free.
CopyKat Grid is home to Grimm, where you can get the pictured outfit, and many more, free and full perm. Or you can go to this AviTron shop and pay TR$10 for the item (changed to no transfer). You can see Jimmy, owner of Grimm, still listed as the creator of the item. (Oops). The shop owner got this--free--at Grimm.

To be fair, I think about everyone has made the mistake of setting an item for sale and forgetting to change the default price of $10 to zero. But a full perm item someone else created, with the sale price already set--to $0 (https://gyazo.com/1cecf29be200eb98b2d1e2ba4f85336d)--doesn't change to a no transfer item sold for $10--unless the new owner changes it on purpose. This was no accident. And this "not an accident" happened to items from Grimm at least 20-30 times at this AviTron shop.

You will see many residents from the great grid of AviTron shopping at Grimm and the countless other quality freebe shops on the CopyKat Grid. Now I know at least one reason why. You never know what you will find on the CopyKat Grid--but one thing is sure. It's gonna be free.

Visit Grimm for your free stuff. Special sale for AviTron members--100% off of Grimm's already low low price of $0. grid.copykat.ovh:12000:Grimm

LATE EDIT: I have now looked at a random selection of other AviTron shops and find they are not charging for items. If you find any, let me know. But for now I'm changing the post to target just this one shop.

Sweetgrl: I love Grimm. 2 years ago
Recently I have had a number of people requesting that I allow child avatars at friends-grid and I want to discuss this openly and honestly.

It is not my place to try and push my morals and values upon others....however, as a grid owner, it is my place to learn the laws of every country involved. In this situation, I need to understand the Child pornography laws of not only where our servers are located, but I also had to research and learn the laws of every country we have residents and guests from. We currently have residents from 30 countries and guests from another 35. People who say "laws dont apply " are incorrect on this subject. You may have servers in one country.....but all the laws of your resident's countries come into play also.

A good thing to remember is that because you have gotten away with something for 10 years does not make it legal. You may never get caught....and then again.....somebody with a grudge may turn you in.

I want to point out a recent post by Jerralyn Franzic . Jerralyn showed the cutest childs outfit ever! ....and she also made the wisest statement ...."I don't understand the hatred towards child avis in Open Sim. Sure, they shouldn't engage in adult activities and maybe not hang in Adult sims but otherwise, what's the problem?" Personally I would love to see kids riding ponies at my farm....and having fun being mermaids. If everyone in child avi were to abide by Jerralyn's statement, there would not be an issue.

However, lets talk about reality. Not all child avis are simply riding ponies and playing in the water. The simple truth is that many (not all) of these child avis are having sex. Some grids use this to boost their traffic. In some countries, including US, the graphic illustration of a child online having sex is 100% illegal. You see, it does not matter if the person behind the computer is 12 or 52......the visual computer generated depiction of a child (child avatar) involved in sex is very illegal in a number of countries. 18 U.S.C. § 2252 Many people will say their countries are different....and this is stupid. I did not make laws........but I need to abide by them. Before people jump on this and criticize me ....I would suggest you read the laws of your country....your servers country...and the laws of all your residents or guests. There are many misinformed people on this subject. I am not saying the laws are right or wrong......but learn the laws.....then comment. You need to learn laws for your servers country...and all your guests countries. This post is not about morals......it is about laws....of all the countries involved.

I have spent over 200 hours reading international laws. Some countries allow things that others do not. However, you have to consider all the laws because of guests.


In closing....do I hate kids and kids avis......nooooooo. I would love to be able to allow them to come to friends grid. However, this is a less than perfect world in which we live, and I have to look at the potential liability of allowing those child avis. Because of that, Child avis are not allowed on friends-grid......no exceptions! I am sad....because there are some wonderful people in kids avis that I do not get to have visit.

Friends-grid is an Adult community and we are looking for adults, with adult avi's who want to make this their main opensim home.


Sodasullivan: I think this is the proper way to address this issue Safine. You are setting the rules YOU are comfortable with on YOUR region. I am fine having my region open to everyone as long as they agree to fol... 1 month ago

May the Easter Bunny bring you all baskets of love and eggs full of positive surprises. Happy Easter!

Wish you all your Nasti


AleksanderDesousa: Frohe Ostern euch allen 1 month ago
Mein geliebtes Weib, meine Siwas
Ich will versuchen dir nur zu versprechen was ich auch halten kann.
Ich kann dir die Welt nicht zu Füssen legen, sie gehört mir nicht.
Ich werde dir keine Sterne mehr vom Himmel holen denn das habe ich schon und du hast deinen Stern.
Ich habe damals gesagt dieser Stern soll dich beschützen und über unsere Liebe wachen. Das hat er getan und uns nach unserer Trennung wieder zusammengeführt.
Vielleicht merkt man erst bei einer Trennung was man wirklich verloren hat.
Wir sind wieder zusammen und nun will ich dich endgültig als meine Frau und werde alles tun dass wir zusammen glücklich sind und unsere Liebe für immer bleibt.
Siwas, du warst immer, du bist und du bleibst für immer mein Baby,

Hange: félicitations plein de bonheur 1 years ago

CopyKat Grid Back On-Line
We had a problem with the server restarting as it should. That's been taken care of. Adachi is now back. The other regions are getting back on-line one by one.


Ellen: What happened? 1 years ago

No comments here... 3D sign says all lololol
Available for FREE and FULL PERM. Enjoy )


Emily Sear: O M G! Too funny ..Famous last words should be posted on all grids.. shut up and just take it! 1 years ago
New release: Arcadia's Adams-Farwell Series 6.

This project took me two and a half months to finish, I'm proudly presenting to you a cute, rickety car to travel around sims and roads in relaxing rides solo or with friends.

The Adams-Farwell Series 6 was a 1906 car produced by the Adams-Farwell company. It featured a rear mounted rotary engine, very similar to airplane engines of it's time.

There’s still one functioning Series 6 in the world, you can see videos on YouTube of it running.

****************************************************************
Important:

This product will only work in ubODE, OS 9.2+ and either X or Y engine.

****************************************************************

My Series 6 has the following features:

1. Seats four avatars, the front seat will open automatically when a third avatar seats.
2. Each avatar has it's own pose that will change when you turn left or right.
3. Each pose are in fact a set of 3 poses, the car will try to guess you height and fire an appropriate pose for your avatar to make it look as best as possible.
4. A dynamic camera that switches between forward and reverse in all seats.
5. Custom sounds, sampled from the real car.
6. Unique mesh, carefully crafted and shaded to imitate the real car.
7. The engine has two gears, gear one while slow it will make the car able to climb almost any slope like a real car, if your car can’t negotiate a very steep slope just drop your gear to first and you will conquer the hill like a boss.
8. A menu on click that lets you operate the car’s accessories like lights, canopy and the capot, the car will remember the settings even if you recompile the script in mid operation.
9. Awareness of the sim/parcel to reset the dynamic camera for all passengers when you cross them so the driving experience remains un-compromised.
10. Custom stand targets on each sit, so you or any passenger won’t end standing on top of the car.
11. Access list, you can choose to let your car unlocked for everyone to drive or select a list of people that can drive, a white list.

You can get this new car at my main shop or the satellite store at Wright Plaza.

Happy Sunday!

Jerralyn Franzic: Oh yesss... I think I'll add this to my little car stash here in Open Sim :) 2 years ago

...Mood...


Jerralyn Franzic: Another sim I must visit soon... :) 2 years ago
*** WILD COSMOS FLOWER PACK NEW RELEASE *** 09 Kind of FLOWERS available to decorate your place! Seasonal textures included and leaves has a smooth animation to make it more realistic! Available for FREE and FULL PERM at GARDEN AREA, BOX 02. Enjoy :)

Jimmy Olsen: ****For your information ***FLORA, GREEDY MUSEUM, LIGHT and SOUND MUSEUM will be remain offline for one day or two: It`s about grid server issues. Will post again as soon they all get online. thx 9 months ago

CyberGlo CyberStar: Goodbye dear friend! May your soul fly across the universe as it easily flew in the grids. In the play of bright & dark, may you always be a light. 2 years ago
Dopo una lunga convalescenza in ospedale, sono tornata a casa. Una brutta caduta mi ha provocato molti danni alla caviglia sx ho subito 2 interventi mi hanno da prima sistemalo le ossa con estensore esterno, poi oprerata hai tendini e infine ingessata. :) questa è la vita

Essensual: I hope you get well soon. I know what that feels like 1 month ago

CLOE: bravissimo 5 months ago

Riding horses in 15 different colors.
The horses also stay on the region and do not disappear after a certain time


MidnightRain Glas: this was the most exciting trip or joy to pick these up and go home to open and take one out and watch everything this cute 4 legged beauty could do... I felt so much peace and love in my heart and fe... 1 years ago
Bonjour,
Vous ne verrez plus çà, vous ne verrez plus jamais cela.
Le marché de Noël est mort, et ce n'est pas moi qui l'ai cassé !
Merci à tous ceux et toutes celles qui furent présents pendant ces 10 années, merci de votre soutient.
Maintenant c'est fini merci et au revoir.
N.B.: ce marché est l'oeuvre de Freddy Wright sur Francogrid vers 2010, et de personne d'autre.

Hello
This year you won't see that, you won't see that anymore.
The christmas market is dead.
I don't break it.
Thank you to all those who where there during ten years.
Thank you for your support.
Sorry Isn't my fault
Kisses

Tristan Dehaie: @Dabici132, @Marianna, @MelodyStar, @ScarlettEarp, @monika, @thedeeferry, @Roleplayed, @Lampithaler, @Kelso.Uxlay, @elorift, @MoonroseGrid, @JeromFranzic, @soabad Il serait bon de cesser de raconter ... 2 years ago

"Wake the kids and phone the neighbors!"
Grainger Village is back


AnaKathy: Wundervolle Osterfeiertage euch wünsche :) 1 month ago
Honestly... let's be clear... there are grids that are really terrible, they are just awful, and they have the audacity to advertise themselves as if they were the best...

I wonder how users don't realize that they are in a mess and consciously decide to stay there, but we'll address this topic in the days following the holidays. For now, I want to be kind to those who deserve it...

TROPICANA KOKOMO...

PLEASE REMOVE ALL THOSE FAKE USERS THAT YOU PUT THERE WITH REDGAST VIEWER TO GRAB AN USELESS SECOND PLACE! BUT THESE GAMES ARE KNOWN BY NOW, THEN 14 USERS FOR 72 HOURS CONTINUOUSLY AND FOR WHAT? NOTHING, BECAUSE EVERY TIME I COME, NO ONE RESPONDS AND NO ONE IS THERE! WHAT DO YOU WANT TO DO, COMPETE WITH THE CENTRAL PLAZA OF OSGRID? IN THE SAME GRID, BUT DELETE THIS SHAMEFUL REGION MADE BY USELESS PEOPLE WHO NEVER TURN ON THEIR BRAIN...

And Merry Christmas to all Christians, happy holidays to everyone else.

KrisTina: Why is the region in question still taking up the Rank 2 spot if it's "Inaccurate" ? 4 months ago
Ich wünsche Euch und Euren Familien ein schönes gesegnetes Weihnachtsfest 🎄🎅 und für 2024 ein Jahr voller Glück und Harmonie, zufriedenen, fröhlichen Stunden, wundervollen Momenten und vor allem Gesundheit

I wish you and your families a wonderful and blessed Christmas 🎄🎅 and for 2024 a year full of happiness and harmony, content, joyful hours, wonderful moments and, above all, good health

Star Ravenhurst: Merry Christmas!! 5 months ago

Dear Friends.. I wish you and your family a Merry Christmas from the bottom of my heart. Have a good new year too! Your Thomas


Trizzy Hunter: Merry Christmas Thomas and have a safe New Year. Here's to 2024 may all you wishes and dreams come to pass. 5 months ago
*** Camballa***
Here’s to us in the future
Take better care of us here.
A light for Opensim
Have a good time everyone
Best regards
your Karin Becker

Auf das wir in Zukunft
besser auf uns hier aufpassen.
Für Opensim ein licht
Habt alle eine gute zeit
liebe grüsse
eure Karin Becker

KarinBecker: Thank you for the warm words and many Messages 6 months ago
Many stores where you can buy NOTHING (after all, everything is free!) are waiting for you here. To make your stay as pleasant as possible, there are 4 frozen yogurt stores in the small town - number 5 will open eventually. Or not^^.
Furthermore, there are 2 clothing stores with fashion for men and women, although something has gone wrong with the textures here - but come and see for yourself!
Brand new addition is the hairdressing salon with no less than 3 hairstyles - I can already betray that they are really the latest craze ;)
* * *
Viele Geschäfte, in denen ihr NICHTS kaufen könnt (schließlich ist alles kostenlos!), warten hier auf euch. Um euren Aufenthalt so angenehm wie möglich zu gestalten, gibt es 4 Frozen-Yoghurt-Läden in der kleinen Stadt- Nummer 5 wird irgendwann eröffnen. Oder auch nicht^^.
Ferner gibt es noch 2 Kleidungsgeschäfte mit Mode für Damen und Herren, wobei hier irgendwas mit den Texturen durcheinander gekommen sein - aber kommt und seht selbst!
Ganz neu dazugekommen ist der Friseursalon mit sage und schreibe 3 Frisuren - ich kann schon verraten, dass die echt der letzte Schrei sind ;)

Symphony: Super Fun! Omg ! I spent an hour there exploring and found it so interesting, easy on the eye, and an excelent example of how to make an environment with simple pieces. Excellent. ... 2 years ago
Autumn rain drain at Neiferleaf
In full motion it looks like this: https://gyazo.com/4667f3cc9ecad1802729b616251b6c24

By the way, the animesh cloak for males & females is available for grabs (manual inside) it can co-exist with any AO and flutters in the wind while walking, running and while riding a wearable horse.

Lilly Pond: You guys are the BEST! I love your fantasy world and I ty for all you create! 2 years ago

Comments

No comments yet

Loading...