Projects

  • Band Tools

    Post types and tools for bands. Allow publishing of records with songs list. Easy enough for a single band. Complete enough for several ones.

    Although you can get this plugin for free, buying it will fund development and help providing future features.

  • w4os – OpenSimulator Web Interface (dev)

    Ready to use WordPress interface for OpenSimulator. Provides user registration, default avatar model choice, login info, statistics and a web assets server for grids or standalone simulators.

    Full installation instructions

    Theme compatibility list

    See Features and Roadmap sections for current and upcoming functionalties.

  • Universal Translator (Yandex Edition)

    Important note:

    As noted by sninksnoodle on Oct 27, 2020, Yandex does not provide free API keys anymore (#1). The main goal of this fork was to provide an free alternative to Google Translate, so the project is now obolete.

    However, this code also fixed a couple of bugs in the available version of Hank Hamos Universal Translator (which dates 2015), so it might be worth to catch and bring these fixes to the Google Translate version.

    Original readme

    It is based on the excellent Universal Translator by Hank Ramos. However, the initial version was using Google translation engine API and Google decided to switch to a paid license. So I rewrote some parts of the code to use Yandex engine instead.

    Get the latest version in Speculoos’ grid speculoos.world:8002:Lab or on the git repository https://git.magiiic.com/opensimulator/Universal-Translator-Yandex (and if you make improvements, please share them there)

    New features

    • It’s working! No kidding: the version available on LSL scripts wiki and on other sites like Outworldz is incomplete and not ready to work, even taking apart the Google license issue.
    • Use Yandex translation API. It is not only free (while Google isn’t anymore), but it is easy to get an API key (while it’s quite complicate with Google or Microsoft API’s).
    • The API key is not hardcoded but instead stored in a notecard. This avoids a single key being spread everywhere and causing "maximum allowed requests reached" kind of messages.

    DO NOT DISTRIBUTE THE TRANSLATOR WITH THE API KEY. It could end up being used by dozens of users, and becoming useless.

    Main (and not so new) features

    • Multiplex mode: if several translators are in the same area, one becomes the master and makes actual translation requests for the other ones. This avoid overload when lot of people are present and using it.
    • Speaker language auto detection (though users can also choose their language manually)
    • Translations sent by instant messages, no spam on the public channel
    • Can be used as an object in the parcel or as a HUD.
    • Can use both an object in the parcel and people wearing HUD, without spamming public channel, nor overloading the servers and the API key limits.

    To do

    • Get an updated list of available languages ✓ A (beautiful) texture and logo
    • Detect the most used languages and show them at beginning of the list
    • Allow to set a fixed list of preferred languages to show first (probably before the auto-detected mostly used ones).

    Notes

    We use a dedicated function json2List instead of llJson2List (not compatible with 0.8). It’s a little bit rough, but it works.

  • OpenSimMaps (standalone)

    The web map tool for OpenSimulator, for

    • standalone use
    • or integration with

    Support this project: https://magiiic.com/support/OpenSimMaps

    Features

    • show grid map with region maptiles
    • click to get a choice of teleport methods
    • supports varregions
    • supports multiple maps
    • uses Google Maps v3 API

    New

    • allow standalone use: include minimal settings, independant to other helpers or web interface
    • include settings for integration with Flexible Helper Scripts
    • separate settings file from the rest of the code: one for php (config.php), one for javascript (config.js)
    • distribution now contains only example settings file, to alow smooth update without losing config
    • added hop:// to teleport link choices

    TODO

    • remove old API key probably belonging to one of the original developers
    • … and many other things whose details would be laborious (so much to do, so little time)
    • please use issues to request new features or report bugs

    Installation

    • clone this folder inside your website documentroot, e.g /var/html/opensimmaps/, to make it accessible as https://yourgrid.org/opensimmaps/ (you can rename it)
    • Copy config.php.example as config.php and adjust settings (this helper only needs database credentials OPENSIMDB*)
    • Copy config.js.example as config.js and adjust settings (particularly xlocations, ylocations, mapcenternames, hgdomains and hgports)
    • make a soft link from the OpenSim maptile/00000000-0000-0000-0000-000000000000 folder to data/regions/, for example on linux (adjust to your setup):
      ln -s /opt/opensim-0.9.2.0/bin/maptiles/00000000-0000-0000-0000-000000000000 /var/html/opensimmaps/data/regions

    Alternatively, you can make data/regions/ folder and copy the maptiles in it, but it won’t be updated automatically.

    • Original readme specified to rather use Warp3DImageModule, but it is now the default. Your OpenSim.ini file should contain these settings:
      [Map]
        MapImageModule = "Warp3DImageModule"
        TextureOnMapTile = true
        DrawPrimOnMapTile = true

    Credits

    Based on hawddamor’s opensimmaps (optimized for OpenSim Redux web interface).

    This is a modified version of hawddamor/opensimmaps. The modifications from the original project are mainly related to file locations and some variable names.

    More information on original project and authors in README and LICENSE files.

  • Gudule’s Teleport Board 2

    Get the latest version: https://git.magiiic.com/opensimulator/Gudz-Teleport-Board-2

    Features:

    • Single or Multi-columns teleport buttons
    • Destinations statuses are checked at start and every hour to avoid TP to inactive regions
    • Local destinations can be written as HG links and are automatically converted to local links for teleport, so the same board works inside and outside your grid
    • Destination source can be set from a notecard or from a web server
    • Immediate TP or map (change USE_MAP in config)
    • Different colors for current region (green) or offline regions (red), customizable
    • Optional background texture
    • Can be formatted with titles (text without url), spacer (|) and column jump (-)
    • Configuration in a separate notecard to allow easy upgrades
    • Long click by the owner to force a full reload

    Setup

    The destination list can be set by 3 ways

    • from an external website: put the URL in prim description (only the first 2048 bytes will be loaded)
    • from a specific notecard: put "card://CardName" in the description
    • fallback if none of the two first method: read the first notecard found.

    In previous versions, the destination list used 5 values. We accept this old format for backward compatibility but we recommend the simplified format:

    • Displayed Name|your.grid:port
    • or Displayed Name|your.grid:port:Region Name
    • or Displayed Name|your.grid:port:Region Name|x,y,z

    Comments and formatting:

    • Empty lines are ignored
    • Lines beginning wish "#" are ignored
    • Lines commented with "//" are sent as message to the owner during initializaton
    • Lines containing only a string (and no url) are drawn as simple text (section titles)
    • Lines containing only a separator ("|") are drawn as an empty line (spacer)

    Although commenting lines is useful to disable them temporarily (#) or display help messages (//), it slows down the initialization, so it is better to avoid it as much as possible.

    Required OSSL Functions:

    • osGetGridGatekeeperURI
    • osGetNotecard
    • osTeleportAgent
    • osSetDynamicTextureDataBlendFace and related (osDrawFilledRectangle, osDrawRectangle, osDrawText, osGetDrawStringSize, osMovePen, osSetFontName, osSetFontSize, osSetPenColor, osSetPenSize)
  • Gudz Free Land Rental Script

    This script is designed for managing free land rentals in OpenSimulator, ensuring tenants maintain a regular presence to prevent users from making land unavailable without actually using it.

    In the future, this script will be adjusted to also handle paid rentals.

    Features

    • Free Land Rentals: Allows users to rent land for free, requiring them to click regularly on the rental panel to keep the parcel.
    • Full Ownership: The land is technically sold to the user, giving them full ownership and control over their parcel without needing group tricks.
    • Automatic Reclaim: Expired or abandoned land is sold back to the vendor owner.

    Requirements

    The script requires these functions to be enabled for Estate Owners in OpenSimulator configuration:

    • osDrawText
    • osGetDrawStringSize
    • osGetGridGatekeeperURI
    • osGetGridLoginURI
    • osGetNotecard
    • osInviteToGroup
    • osKey2Name
    • osMovePen
    • osSetDynamicTextureDataBlendFace
    • osSetFontName
    • osSetFontSize
    • osSetParcelDetails
    • osSetPenColor

    Usage

    For Tenants

    1. Initial Rental: Click on the sign, read the rental conditions, and confirm the rental.
    2. Renewal: Before the end of each term, click on the sign to renew the rental.

    For Region Owners

    1. Estate Settings: Make sure to disable land join, split, and resell in your Estate settings.
    2. Placement: Place the terminal outside the rented land, around 1 meter from the parcel border and adjust until the positioning beacon is inside the parcel and appears green.
    3. Confirmation: A confirmation message appears. Check the rental conditions (see configuration below) and start renting.

    Configuration

    Do not modify the script directly, any change would be overriden on next update. Use the notecard or a web URL config file instead.

    Using a Notecard

    Create a notecard named .config including these settings:

    
    configURL = https://yourgrid.org/rental/example.txt
    // If set, the config will be read from the URL and the rest of the notecard will be ignored.

    // Base config (required)

    duration = 30 // number of days, can be decimal for shorter periods maxDuration = 365 // number of days, can be decimal for shorter periods renewable = TRUE maxDuration = 3650 expireReminder = 7 expireGrace = 7

    // Optional

    fontname = fontSize = lineHeight = margin = textColor = textBackgroundColor = position = cropToFit = textureWidth = textureHeight = textureSides =

    Using Object Description (deprecated)

    Put these values, in this order, in the main prim description, separated by commas. Duration, max duration, expire reminder, and expire grace are in number of days.

    DURATION,MAX_DURATION,,RENEWABLE,EXPIRE_REMINDER,EXPIRE_GRACE

    The empty third field used to be set to MAX_PRIMS, but it is now calculated from the parcel data. It can be left empty to save space (keeping two commas for backwards compatibility).

    To Do

    1. Fix current functionalities:
      • √ Fix rental not restored after updates (fixed in 1.6.5)
      • √ Fix messages not sent to HG avatars when offline (added notification queue)
      • √ Fix position not saved in rent data, causing new check triggered on reset
      • Keep notification queue after script reset
      • Clear rent data (object desc) if owner changed
      • Clear rental status if parcel changed
      • Shorter rental data format (only save in object desc the live rental data, not settings that are now handled by config file)
      • Also notify owner to clean terrain when abandoned (currently only on rental expiration)
    1. Add new functionalities:
      • √ New feature: restore rental, based on prims found in the parcel (1.6.6)
      • Use different prims for sign and renter name, hide and show accordingly, to avoid resizing single prim and allow more creative designs
      • allow setting times in years, months, days, hours
      • Option to limit to local grid avatars
      • Option for maximum number of parcels per user, or maximum area
      • Check that the owner has estate rights before activating
      • Centralized management
        • List available terrains
        • Centralized rental via in-world board
        • Centralized rental via web page
      • Advanced features (requires grid-side API)
        • Option to update terrain for sale status
        • Option to set objects auto return after rental end
    1. Add payment system:
      • With local currency
      • On website (via w4os or WooCommerce)

    License

    This script is provided under the GNU Affero General Public License version 3. See the LICENSE file for more details.

  • 2do HYPEvents (meta project)

    2do is an ecosystem of tools allowing to manage events in an OpenSimulator. It is composed of several elements, depending of the way you want to implement it.

    This repository contains no code, only the information about the related projects.

    1. 2do-board

    This is were it all began. A scripted object in-world, displaying ongoing and upcoming events, allowing teleport. By default, it is set to use 2do.directory service, but it can be customize with the tools below. It can be used on any region, regardless of the implementation of search or not on the grid, but requires OSSL draw functions to be function.

    2. 2do.directory

    The easiest way to enable in-world search (including events) is to configure the simulators to use 2do.directory services. It only requires the addition of OpenSimSearch.dll in OpenSimulator bin folder and a few configuration lines in OpenSim.ini. Search is provided by 2do.directory website and allow sharing of hypergrid destinations. It avoids the need to install helpers.

    3. OpenSim Helpers

    Installing your own helpers allow to use your own databases for search and events. It is relevant for private or associated grids, or to setup and alternate shared directory. Currently, due to OpenSimulator and/or viewer limitations, searching classifieds require a direct access to the Robust database, so to enable them, installing helpers specific to the grid is necessary.

    A local installation of OpenSimulator helpers can be combined with the use of an external events provider like 2do.directory.

    4. 2do-aggregator

    To providde your own events server. Collects events from different sources and made them available to the search engine and in-world boards. It is usually not necessary to install your own implementation, the service is offered by 2do.directory.

    Deprecated

    • 2do-server: the previous aggregator, written in python 2.7 and forked from Tom Frost’s HypEvents abandonned project, replaced by 2do-aggreagator
    • 2do-search: another implementation of search engine, focused on events. Replaced by opensim-helpers
  • 2DO board

    In-word teleporter board for 2DO events server.

    Installation from sources

    • Put the content of the "2DO board.lsl" in a script file and name it "2DO board"
    • Put the content of the "2DO Read me" in a notecard named "2DO Read me"
    • Put the content of one of the themes files in a notecard named "Configuration"
    • Let the magic happen

    Licence and copyright

    (c) 2018-2022 Gudule Lapointe gudule@speculoos.world. Based on the work of Tom Frost tomfrost@linkwater.org.

    Licence: GPLv3