NPC and OSSL Setup for PMAC

***************************************
1. Ensure Server Support of the Script
****************************************

PMAC uses both LSL and OSSL functions that make extensive use of vectors and rotations for positioning and text-based notecards for data storage. The server must use the period (decimal point)(.) as the decimal separator for numbers that require this precision (called "floats").

In almost all cases your server will already have this configuration (otherwise other scripts would also have issues) but if you experience problems with odd behaviour this is the first thing to check. Some computer localizations (particularly linux systems in Europe) may be configured to use the comma (,) as the decimal separator which will *not* work with this system (and many other LSL scripts). Consult your simulator server's operating system guide as to how to configure the computer to use the decimal point separator.


********************************************************************
2. Ensure the Region is Configured to Allow the Necessary Functions
********************************************************************

The PMAC script makes extensive use of a special set of functions that are only available in Opensim -- the OSSL function set -- in addition to the common LSL functions used by most scripts. Depending on your region's configuration, these may or may not be available so it is essential to check and ensure that the correct settings have been made.

By default, Opensim 0.8.2.1 and later will need only a few changes because many of the necessary things are enabled by default. Previous versions will require considerably more and are done differently.

*** FOR ALL VERSIONS OF OPENSIM ***

>> ENABLE NPCS
If you want to use NPCs you will need to enable them because they are usually disabled by default. This is found in its own section towards the end of the \bin\Opensim.ini file where you need to ensure that:
[NPC]
Enabled = true

In Opensim 0.9 there are additional settings in the NPC section that impact their creation and handling but usually won't directly affect PMAC's operation (or most other scripts).

This setting only allows NPCs to exist but doesn't enable the functions necessary to create or control them...those are enabled in the OSSL function settings.


*** ENABLING OSSL ***

The exact method for enabling OSSL differs slightly depending on the version of Opensim used by the region's simulator, and is either done directly in either the \bin\opensim.ini file (Opensim 0.8.0.x and earlier) or in a separate \bin\config-include\osslEnable.ini file (Opensim 0.8.1.x and higher).

The OSSL functions typically allow a scripter to do something that would otherwise be impossible using just LSL functions, or make if far more efficient to do something (for instance, allow a single script to control animations for dozens of avatars instead of using the LSL method where you need a separate script for each avatar and then have to try to keep them in synch). This extra "power" comes with a price: some (many) OSSL function *can* also be used for malicious purposes so there is an ability to determine, on a function-by-function basis, who is allowed to use it. The potential "risk" involved with a function is reflected by its "threat level" (see: http://opensimulator.org/wiki/Threat_level). You will need to determine which functions to make available to who based on how much you trust them.

First, you need to generally enable OSSL functions and set a global threat level that determines which functions are safe enough to allow anyone to use (they ALSO have to have parcel-level permissions to run scripts at all so that setting is your first line of defense).
- you need to enable OSSL in general
AllowOSFunctions = true
- you also need to set a global threat level of function allowed for anyone with script permissions. I would recommend either the default "VeryLow" or perhaps "Low" if your parcel permissions allow anyone to run scripts. If you restrict scripts to group members you might consider globally allowing somewhat higher threat functions. If you're the only one who can run scripts, you can fairly safely set it to whatever you like.
OSFunctionThreatLevel = VeryLow

For any function that has a threat level higher than your global setting, you'll then need to enable its use for the appropriate user(s). There are a number of handy options for doing this (options vary a little depending on simulator version) which are well documented in the ini files. Normally if you're the one hosting the simulator you'll use ESTATE_OWNER and perhaps ESTATE_MANAGER as well. If someone else is hosting the region for you and you don't have one of those two levels of permission, your host will need to determine how best to enable them for you (PARCEL_OWNER, PARCEL_GROUP_MEMBER, directly by user UUID, or just allow it for anyone with "true").

For each function you need enabled you will need a line "Allow_[function name] = [comma-separated list of who you want to allow it for]". For example, to enable the function "osNpcCreate" for the estate owner and manager as well as for parcel owners you would use:
Allow_osNpcCreate = ESTATE_OWNER, ESTATE_MANAGER, PARCEL_OWNER

The following is a list of functions that one or more of my Paramour products use, or that are commonly needed in regions that use NPCs or products of this nature:
osGetAgents
osGetAvatarList
osGetInventoryDesc
osGetRezzingObject
osIsNpc
osIsUUID
osNpcGetOwner
osMessageObject
osGetGridName
osMessageAttachments
osGetLinkPrimitiveParams
osGetPhysicsEngineType
osGetPrimitiveParams
osMakeNotecard
osNpcCreate
osNpcLoadAppearance
osNpcMoveTo
osNpcMoveToTarget
osNpcRemove
osNpcSay
osNpcSetRot
osNpcShout
osNpcSit
osNpcStand
osNpcStopMoveToTarget
osNpcTouch
osNpcWhisper
osOwnerSaveAppearance
osSetPrimitiveParams
osSetProjectionParams
osAgentSaveAppearance
osAvatarPlayAnimation
osAvatarStopAnimation
osForceOtherSit
osGetNotecard
osGetNotecardLine
osGetNumberOfNotecardLines
osTeleportAgent

Some specialty products might also want access to other functions.

When you're using a scripted item and you suddenly get a pop-up script error that says something to the effect of "...does not have permission to use....[an ossl function name]...." that's telling you that the function identified in the error message is one that is above your global threat setting and is not currently allowed for whoever owns the object containing the script.

REMEMBER: permission is only required for the avatar who OWNS THE OBJECT that contains the script...not for someone who is using it.

  • 1 Users Found This Useful
Was this answer helpful?