De DigiWiki.
key gNpc = NULL_KEY;
callNpc()
{
// Replace "" with first and last name
gNpc = osNpcCreate("", "", llGetPos(), "appearance");
llSleep(1.0);
osNpcSit(gNpc, llGetKey(), 0);
}
dismissNpc()
{
osNpcStand(gNpc);
osNpcRemove(gNpc);
gNpc = NULL_KEY;
}
default
{
on_rez(integer rezed) { do { llSay(0, "Resetting..."); llResetScript(); } while (TRUE); }
changed(integer change)
{
if ( change & (CHANGED_REGION_RESTART | CHANGED_REGION_START))
do { llOwnerSay("Reseting..."); llResetScript(); } while (TRUE);
}
state_entry()
{
if (llGetInventoryType("appearance") == INVENTORY_NOTECARD) state running;
else llOwnerSay("Click to make appearance.");
}
touch_end(integer touched)
{
if (llGetOwner() == llDetectedKey(0))
{
if (llGetLinkNumber() == llDetectedLinkNumber(0))
{
osOwnerSaveAppearance("appearance");
state running;
}
}
}
}
state running
{
on_rez(integer rezed) { do { llSay(0, "Resetting..."); llResetScript(); } while (TRUE); }
changed(integer change)
{
if ( change & (CHANGED_REGION_RESTART | CHANGED_REGION_START))
do { llOwnerSay("Reseting..."); llResetScript(); } while (TRUE);
}
state_entry()
{
callNpc();
}
touch_end(integer touched)
{
if (llGetOwner() == llDetectedKey(0))
{
if (llGetLinkNumber() == llDetectedLinkNumber(0))
{
if (gNpc == NULL_KEY) callNpc();
else dismissNpc();
}
}
}
}