OsNpcCreate
From OpenSimulator
(Difference between revisions)
m (some syntax modification (may be major or minor)) |
(Simplified the code to use llDetectedPos(0), and also changed the name of the NPC to be gender-neutral.) |
||
Line 5: | Line 5: | ||
// touch to create npc in front of this emitter | // touch to create npc in front of this emitter | ||
// Npc will walk to the toucher, then will greet them. | // Npc will walk to the toucher, then will greet them. | ||
− | // | + | // Touch again to remove the NPC |
key npc; | key npc; | ||
Line 15: | Line 15: | ||
{ | { | ||
vector npcPos = llGetPos() + <1,0,0>; | vector npcPos = llGetPos() + <1,0,0>; | ||
− | npc = osNpcCreate(" | + | npc = osNpcCreate("ImYour", "Clone", npcPos, llGetOwnerKey(llGetKey())); |
− | + | toucherPos = llDetectedPos(0); | |
− | toucherPos = | + | |
state hasNPC; | state hasNPC; | ||
} | } | ||
Line 26: | Line 25: | ||
state_entry() | state_entry() | ||
{ | { | ||
− | osNpcMoveTo(npc, toucherPos + <1,0,0>); // | + | osNpcMoveTo(npc, toucherPos + <1,0,0>); // osNpcMoveTo will currently not work as intended. |
osNpcSay(npc, "Hi there! My name is " + llKey2Name(npc)); | osNpcSay(npc, "Hi there! My name is " + llKey2Name(npc)); | ||
} | } | ||
Line 41: | Line 40: | ||
|description=*Creates a NPC(Non Player Character) clone named '''firstname''' '''lastname''' at '''position''' from an already existing avatar '''cloneFrom'''. | |description=*Creates a NPC(Non Player Character) clone named '''firstname''' '''lastname''' at '''position''' from an already existing avatar '''cloneFrom'''. | ||
*Note: This function may not work as you have intended. See [http://opensimulator.org/mantis/view.php?id=5148 Mantis #5148] for more information. | *Note: This function may not work as you have intended. See [http://opensimulator.org/mantis/view.php?id=5148 Mantis #5148] for more information. | ||
+ | *Note: Since revision [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=59f548cda82facef003fb7309180412254a234a1 r/16413], dated Aug 1st, 2011, this function works again, with the caveat that osNpcCreate will only clone avatars currently in the region. | ||
| | | | ||
}} | }} |
Revision as of 19:00, 1 August 2011
key osNpcCreate(string firstname, string lastname, vector position, key cloneFrom)
| |
| |
Threat Level | High |
Permissions | No permissions specified |
Extra Delay | No function delay specified |
Example(s) | |
// touch to create npc in front of this emitter // Npc will walk 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>; npc = osNpcCreate("ImYour", "Clone", npcPos, llGetOwnerKey(llGetKey())); toucherPos = llDetectedPos(0); state hasNPC; } } state hasNPC { state_entry() { osNpcMoveTo(npc, toucherPos + <1,0,0>); // osNpcMoveTo will currently not work as intended. osNpcSay(npc, "Hi there! My name is " + llKey2Name(npc)); } touch_start(integer number) { osNpcSay(npc, "Good bye!"); osNpcRemove(npc); npc = NULL_KEY; state default; } } |