OsNpcCreate

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
m
Line 52: Line 52:
 
** Example: "key npc = osNpcCreate("ImYour", "Clone", npcPos, "appearance", OS_NPC_CREATOR_OWNED);"
 
** Example: "key npc = osNpcCreate("ImYour", "Clone", npcPos, "appearance", OS_NPC_CREATOR_OWNED);"
 
** The existing osNpcCreate() function without the options field will continue to exist.
 
** The existing osNpcCreate() function without the options field will continue to exist.
* From git master commit 3b59af22 on Friday Jan 13 2012, the avatar created by the existing osNpc* function without the options parameter will create an 'owned' NPC rather than an 'unowned' one.  Please see the discussion above for information on these terms.  This is a hopefully rare case where the behaviour of an existing function changes slightly.  If you continue to need an 'unowned' NPC, please use the OS_NPC_NOT_OWNED option described above.
+
* From git master commit 3b59af22 on Friday Jan 13 2012 (after the OpenSimulator 0.7.2 release), the avatar created by the existing osNpc* function without the options parameter will create an 'owned' NPC rather than an 'unowned' one.  Please see the discussion above for information on these terms.  This is a hopefully rare case where the behaviour of an existing function changes slightly.  If you continue to need an 'unowned' NPC, please use the OS_NPC_NOT_OWNED option described above.
 
|
 
|
 
}}
 
}}

Revision as of 16:34, 12 January 2012

key osNpcCreate(string firstname, string lastname, vector position, string cloneFrom)
  • Creates an NPC named firstname lastname at position from avatar appearance resource cloneFrom
Threat Level High
Permissions No permissions specified
Delay No function delay specified
Example(s)
// touch to create a NPC clone of the toucher in front of this emitter
// NPC will move to the toucher, then will greet them.
// Touch again to remove the NPC
 
key npc;
vector toucherPos;
 
default
{
    touch_start(integer number)
    {
        vector npcPos = llGetPos() + <1,0,0>;
        osAgentSaveAppearance(llDetectedKey(0), "appearance");
        // coud use avatar UUID directly in osNpcCreate, but then NPC appearance is not persisted
        npc = osNpcCreate("ImYour", "Clone", npcPos, "appearance");
        toucherPos = llDetectedPos(0);
        state hasNPC;
    }
}
 
state hasNPC
{
    state_entry()
    {
        osNpcMoveTo(npc, toucherPos + <3,0,0>); 
        osNpcSay(npc, "Hi there! My name is " + llKey2Name(npc));
    }
 
    touch_start(integer number)
    {
        osNpcSay(npc, "Goodbye!");
        osNpcRemove(npc);
        npc = NULL_KEY;
        state default;
    }
}
Notes
Some more useful info:
  • NPC stands for Non-Player Character.
  • You can clone an appearance from a saved appearance notecard name or UUID, or from the UUID of an avatar logged into the same region or sim.
  • You can create and load appearance notecards with the following functions: osOwnerSaveAppearance, osAgentSaveAppearance, osNpcLoadAppearance, osNpcSaveAppearance.
  • In current OpenSim development code (from commit c4972e77 on Thu Jan 12 2012), an overloaded version of osNpcCreate() has been added.
    • This has the signature key osNpcCreate(string firstname, string lastname, vector position, string cloneFrom, int options).
    • The options field can be either OS_NPC_CREATOR_OWNED or OS_NPC_NOT_OWNED.
    • OS_NPC_CREATOR_OWNED will create an 'owned' NPC that will only respond to osNpc* commands issued from scripts that have the same owner as the one that created the NPC.
    • OS_NPC_NOT_OWNED will create an 'unowned' NPC that will respond to any script that has OSSL permissions to call osNpc* commands.
    • Example: "key npc = osNpcCreate("ImYour", "Clone", npcPos, "appearance", OS_NPC_CREATOR_OWNED);"
    • The existing osNpcCreate() function without the options field will continue to exist.
  • From git master commit 3b59af22 on Friday Jan 13 2012 (after the OpenSimulator 0.7.2 release), the avatar created by the existing osNpc* function without the options parameter will create an 'owned' NPC rather than an 'unowned' one. Please see the discussion above for information on these terms. This is a hopefully rare case where the behaviour of an existing function changes slightly. If you continue to need an 'unowned' NPC, please use the OS_NPC_NOT_OWNED option described above.
Personal tools
General
About This Wiki