OsNpcCreate

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(A few more additions and clarifications, moving some text out of the description field, and moved it to 'additional info')
Line 44: Line 44:
 
* NPC stands for Non-Player Character.
 
* 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 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]].
+
* 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 with 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.
 +
** 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.
 
|
 
|
 
}}
 
}}

Revision as of 16:20, 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
Extra 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 with 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.
    • 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.
Personal tools
General
About This Wiki