Push All Scripts
This commit is contained in:
3
NPC HUD/NPC HUD.sol
Normal file
3
NPC HUD/NPC HUD.sol
Normal file
@@ -0,0 +1,3 @@
|
||||
<Solution name="NPC HUD">
|
||||
<Project name="NPC HUD" path="NPC HUD\NPC HUD.prj" active="true"/>
|
||||
</Solution>
|
||||
22
NPC HUD/NPC HUD/NPC HUD.prj
Normal file
22
NPC HUD/NPC HUD/NPC HUD.prj
Normal file
@@ -0,0 +1,22 @@
|
||||
<Project name="NPC HUD" guid="371177b4-029b-4264-b784-c26fe0887177">
|
||||
<Object name="Object" guid="be5a995c-2cfb-4b6d-9711-b5113951bd02" active="true">
|
||||
<Script name="~animator.lsl" guid="1ee3c3d8-f6a4-4afe-a449-02a9835f18e1">
|
||||
</Script>
|
||||
<Script name="~clonesit.lsl" guid="0be36ed2-7bb1-49ed-aa8b-20d9d3343cf6">
|
||||
</Script>
|
||||
<Script name="~comehere.lsl" guid="ec3fa46f-7175-4a50-81ea-24d2f7c91010">
|
||||
</Script>
|
||||
<Script name="~controler.lsl" guid="9a64cdca-d58b-4d7e-8226-6af4a5444e26">
|
||||
</Script>
|
||||
<Script name="~dance.lsl" guid="1a195cc6-3376-4336-aa83-d38812c10d87">
|
||||
</Script>
|
||||
<Script name="~follow.lsl" guid="c2a2f807-3084-4b70-83e6-f84b55b91fb9">
|
||||
</Script>
|
||||
<Script name="~master.lsl" guid="ac7e5ab2-ac8e-4bd8-afc1-a9efe547af46">
|
||||
</Script>
|
||||
<Script name="~recall.lsl" guid="2d4a8bc3-1db7-47cf-ade2-3770ef7e4904">
|
||||
</Script>
|
||||
<Script name="~StopAllAnimations.lsl" guid="54e5e74f-3fa0-4131-8459-2e425f0e6c4b">
|
||||
</Script>
|
||||
</Object>
|
||||
</Project>
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~StopAllAnimations.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~StopAllAnimations.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~animator.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~animator.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~clonesit.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~clonesit.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~comehere.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~comehere.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~controler.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~controler.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~dance.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~dance.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~follow.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~follow.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~master.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~master.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
7
NPC HUD/NPC HUD/Object/_vti_cnf/~recall.lsl
Normal file
7
NPC HUD/NPC HUD/Object/_vti_cnf/~recall.lsl
Normal file
@@ -0,0 +1,7 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|08 Sep 2013 03:49:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.6211
|
||||
vti_backlinkinfo:VX|
|
||||
vti_author:SR|alien\\fred
|
||||
vti_modifiedby:SR|alien\\fred
|
||||
vti_timecreated:TR|18 Sep 2013 20:38:58 -0000
|
||||
33
NPC HUD/NPC HUD/Object/~StopAllAnimations.lsl
Normal file
33
NPC HUD/NPC HUD/Object/~StopAllAnimations.lsl
Normal file
@@ -0,0 +1,33 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:781
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// Stop
|
||||
// :CODE:
|
||||
|
||||
default
|
||||
{
|
||||
|
||||
link_message(integer sender_number, integer number, string msg, key id)
|
||||
{
|
||||
if (number == 99)
|
||||
{
|
||||
list anims = llGetAnimationList(id); // get list of animations
|
||||
integer len = llGetListLength(anims);
|
||||
integer i;
|
||||
llSay(0, "Stopping " + (string)len + llGetSubString(" animations",0,-1 - (len == 1)));
|
||||
for (i = 0; i < len; ++i){
|
||||
key curAnim = llList2Key(anims, i);
|
||||
osAvatarStopAnimation(id,curAnim);
|
||||
llSay(0, "Stopping " + (string)curAnim);
|
||||
llSleep(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
80
NPC HUD/NPC HUD/Object/~animator.lsl
Normal file
80
NPC HUD/NPC HUD/Object/~animator.lsl
Normal file
@@ -0,0 +1,80 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:773
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// animator
|
||||
// :CODE:
|
||||
|
||||
// npc animator
|
||||
list lstAnilMenu = ["Nadu","Beauty","Bracelets","Cutie","Kneel","NaduWide","Submit", "Tower" , "Whip", "Chain", "Bara", "Stop"];
|
||||
integer channel = -31;
|
||||
vector npcPos;
|
||||
integer listener;
|
||||
key npc;
|
||||
string clonetype;
|
||||
string curAnim;
|
||||
|
||||
list order_buttons(list buttons)
|
||||
{
|
||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||
}
|
||||
|
||||
rotation getRotToPointAxisAt(vector axis)
|
||||
{
|
||||
return llGetRot() * llRotBetween(axis * osNpcGetRot(npc), llGetPos()- osNpcGetPos(npc) );
|
||||
}
|
||||
|
||||
default
|
||||
{
|
||||
link_message(integer sender_number, integer number, string msg, key id)
|
||||
{
|
||||
if (number == 21)
|
||||
{
|
||||
llDialog(llGetOwner(), "Select an Animation:", order_buttons(lstAnilMenu), channel);
|
||||
listener = llListen(channel, "", NULL_KEY, "");
|
||||
npcPos = llGetPos();
|
||||
clonetype=msg;
|
||||
npc= id;
|
||||
llSetTimerEvent(30.0);
|
||||
}
|
||||
}
|
||||
|
||||
listen(integer channel, string name, key id, string msg)
|
||||
{
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
//--------------------------------------
|
||||
// main menu results here
|
||||
//--------------------------------------
|
||||
|
||||
if (msg != "Stop")
|
||||
{
|
||||
string anim = llToLower(msg);
|
||||
osAvatarStopAnimation(npc,curAnim);
|
||||
curAnim = anim;
|
||||
osAvatarPlayAnimation(npc,anim);
|
||||
|
||||
rotation tempRot = getRotToPointAxisAt(<0,0,1>);
|
||||
|
||||
//osNpcSetRot(npc, llGetRot() * (llEuler2Rot(<0, 0, 0> * DEG_TO_RAD)));
|
||||
osNpcSetRot(npc,tempRot) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
osAvatarStopAnimation(npc,curAnim);
|
||||
}
|
||||
|
||||
//}
|
||||
|
||||
}
|
||||
timer()
|
||||
{
|
||||
llListenRemove(listener);
|
||||
}
|
||||
}
|
||||
110
NPC HUD/NPC HUD/Object/~clonesit.lsl
Normal file
110
NPC HUD/NPC HUD/Object/~clonesit.lsl
Normal file
@@ -0,0 +1,110 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:774
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// clone
|
||||
// :CODE:
|
||||
|
||||
// npc sit
|
||||
list sitbuttons;
|
||||
float scanrange=10;
|
||||
string sitprompt = "Pick the object on which you want the clone to sit. If it's not in the list, have the clone move closer and try again.\n";
|
||||
list sitkeys;
|
||||
integer channel= -21;
|
||||
integer listener;
|
||||
key npc;
|
||||
string clonetype;
|
||||
|
||||
|
||||
list order_buttons(list buttons)
|
||||
{
|
||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||
}
|
||||
|
||||
default
|
||||
{
|
||||
|
||||
listen(integer channel, string name, key id, string message)
|
||||
{
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
integer seatnum = (integer)message - 1 ;
|
||||
osNpcSit(npc, llList2String(sitkeys, seatnum),OS_NPC_SIT_NOW);
|
||||
|
||||
}
|
||||
link_message(integer sender_number, integer number, string msg, key id)
|
||||
{
|
||||
if (number == 30)
|
||||
{
|
||||
clonetype=msg;
|
||||
npc= id;
|
||||
llSensor("", NULL_KEY, SCRIPTED, scanrange, PI);
|
||||
}
|
||||
if (number == 31)
|
||||
{
|
||||
osNpcStand(id);
|
||||
sitkeys = [];
|
||||
sitbuttons = [];
|
||||
llMessageLinked(LINK_ROOT,99,"",npc);
|
||||
}
|
||||
}
|
||||
sensor(integer num)
|
||||
{
|
||||
sitkeys = [];
|
||||
sitbuttons = [];
|
||||
//give menuuser a list of things to choose from
|
||||
//lop the list off at 11 so we don't need multipage menu
|
||||
if (num > 12)
|
||||
{
|
||||
num = 12;
|
||||
}
|
||||
integer n;
|
||||
for (n = 0; n < num; n ++)
|
||||
{
|
||||
//don't add things named "Object"
|
||||
string name = llDetectedName(n);
|
||||
if (name != "Object")
|
||||
{
|
||||
sitbuttons += [(string)(n + 1)];
|
||||
if (llStringLength(name) > 44)
|
||||
{ //added to prevent errors due to 512 char limit in poup prompt text
|
||||
name = llGetSubString(name, 0, 40) + "...";
|
||||
}
|
||||
sitprompt += "\n" + (string)(n + 1) + " - " + name;
|
||||
sitkeys += [llDetectedKey(n)];
|
||||
}
|
||||
}
|
||||
//prompt can only have 512 chars
|
||||
while (llStringLength(sitprompt) >= 512)
|
||||
{
|
||||
//pop the last item off the buttons, keys, and prompt
|
||||
sitbuttons = llDeleteSubList(sitbuttons, -1, -1);
|
||||
sitkeys = llDeleteSubList(sitkeys, -1, -1);
|
||||
sitprompt = llDumpList2String(llDeleteSubList(llParseString2List(sitprompt, ["\n"], []), -1, -1), "\n");
|
||||
}
|
||||
llDialog(llGetOwner(), sitprompt, order_buttons(sitbuttons), channel);
|
||||
listener = llListen(channel, "", llGetOwner(), "");
|
||||
llSetTimerEvent(30.0);
|
||||
|
||||
}
|
||||
no_sensor()
|
||||
{
|
||||
//nothing close by to sit on, tell menuuser
|
||||
llInstantMessage(llGetOwner(), "Unable to find sit targets.");
|
||||
}
|
||||
timer()
|
||||
{
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
42
NPC HUD/NPC HUD/Object/~comehere.lsl
Normal file
42
NPC HUD/NPC HUD/Object/~comehere.lsl
Normal file
@@ -0,0 +1,42 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:775
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// come here
|
||||
// :CODE:
|
||||
|
||||
// npc move to
|
||||
vector offset = < 3, 0, 1.5>; //3 meter in front
|
||||
vector npcPos;
|
||||
key npc;
|
||||
string clonetype;
|
||||
|
||||
|
||||
default
|
||||
{
|
||||
link_message(integer sender_number, integer number, string msg, key id)
|
||||
{
|
||||
if (number == 23)
|
||||
{
|
||||
// Owner detect
|
||||
list det = llGetObjectDetails(llGetOwner(),[OBJECT_POS,OBJECT_ROT]);
|
||||
npc=id;
|
||||
// Get position and rotation
|
||||
vector pos = llList2Vector(det,0);
|
||||
rotation rot = (rotation)llList2String(det,1);
|
||||
// use whatever offset you want.
|
||||
vector worldOffset = offset;
|
||||
// Offset relative to owner needs a quaternion.
|
||||
vector avOffset = offset * rot;
|
||||
pos += avOffset;
|
||||
osNpcMoveToTarget(npc,pos, OS_NPC_NO_FLY );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
81
NPC HUD/NPC HUD/Object/~controler.lsl
Normal file
81
NPC HUD/NPC HUD/Object/~controler.lsl
Normal file
@@ -0,0 +1,81 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:776
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// controller
|
||||
// :CODE:
|
||||
|
||||
// npc control
|
||||
list lstCrtllMenu = ["Animate","Dance","Come Here","Follow","Force Sit", "Unsit" ];//"Move","Speak",
|
||||
integer channel = -30;
|
||||
vector npcPos;
|
||||
integer listener;
|
||||
key npc;
|
||||
string clonetype;
|
||||
|
||||
list order_buttons(list buttons)
|
||||
{
|
||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||
}
|
||||
|
||||
|
||||
default
|
||||
{
|
||||
link_message(integer sender_number, integer number, string msg, key id)
|
||||
{
|
||||
if (number == 20)
|
||||
{
|
||||
llDialog(llGetOwner(), "Select control option:", order_buttons(lstCrtllMenu), channel);
|
||||
listener = llListen(channel, "", NULL_KEY, "");
|
||||
npcPos = llGetPos();
|
||||
clonetype=msg;
|
||||
npc= id;
|
||||
llSetTimerEvent(30.0);
|
||||
}
|
||||
}
|
||||
|
||||
listen(integer channel, string name, key id, string message)
|
||||
{
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
//--------------------------------------
|
||||
// main menu results here
|
||||
//--------------------------------------
|
||||
if (message =="Animate")
|
||||
{
|
||||
llMessageLinked(LINK_ROOT,21,clonetype,npc);
|
||||
}
|
||||
if (message =="Dance")
|
||||
{
|
||||
llMessageLinked(LINK_ROOT,22,clonetype,npc);
|
||||
}
|
||||
if (message =="Come Here")
|
||||
{
|
||||
llMessageLinked(LINK_ROOT,23,clonetype,npc);
|
||||
}
|
||||
if (message =="Follow")
|
||||
{
|
||||
llMessageLinked(LINK_ROOT,24,clonetype,npc);
|
||||
}
|
||||
if (message =="Force Sit")
|
||||
{
|
||||
llMessageLinked(LINK_SET,30,clonetype,npc);
|
||||
//llSay(0,"30");
|
||||
}
|
||||
if (message =="Unsit")
|
||||
{
|
||||
llMessageLinked(LINK_ROOT,31,clonetype,npc);
|
||||
}
|
||||
}
|
||||
|
||||
timer()
|
||||
{
|
||||
llListenRemove(listener);
|
||||
}
|
||||
}
|
||||
71
NPC HUD/NPC HUD/Object/~dance.lsl
Normal file
71
NPC HUD/NPC HUD/Object/~dance.lsl
Normal file
@@ -0,0 +1,71 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:777
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// dance
|
||||
// :CODE:
|
||||
|
||||
// npc dance
|
||||
list lstAnilMenu = ["WeLoveYou","AKEYO","Full of it","Caramel","Kiss my Buttons","Room with a View","Shamo","Dambuster","Everybody Loves Me","Washing Machine","Yipe","Stop"];
|
||||
integer channel = -32;
|
||||
vector npcPos;
|
||||
integer listener;
|
||||
key npc;
|
||||
string clonetype;
|
||||
string curAnim;
|
||||
|
||||
list order_buttons(list buttons)
|
||||
{
|
||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||
}
|
||||
|
||||
|
||||
default
|
||||
{
|
||||
link_message(integer sender_number, integer number, string msg, key id)
|
||||
{
|
||||
if (number == 22)
|
||||
{
|
||||
llDialog(llGetOwner(), "Select a Dance:", order_buttons(lstAnilMenu), channel);
|
||||
listener = llListen(channel, "", NULL_KEY, "");
|
||||
npcPos = llGetPos();
|
||||
clonetype=msg;
|
||||
npc= id;
|
||||
llSetTimerEvent(30.0);
|
||||
}
|
||||
}
|
||||
|
||||
listen(integer channel, string name, key id, string msg)
|
||||
{
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
//--------------------------------------
|
||||
// main menu results here
|
||||
//--------------------------------------
|
||||
|
||||
if (msg != "Stop")
|
||||
{
|
||||
string anim = llToLower(msg);
|
||||
osAvatarStopAnimation(npc,curAnim);
|
||||
curAnim = anim;
|
||||
osAvatarPlayAnimation(npc,anim);
|
||||
}
|
||||
else
|
||||
{
|
||||
osAvatarStopAnimation(npc,curAnim);
|
||||
}
|
||||
|
||||
//}
|
||||
|
||||
}
|
||||
timer()
|
||||
{
|
||||
llListenRemove(listener);
|
||||
}
|
||||
}
|
||||
87
NPC HUD/NPC HUD/Object/~follow.lsl
Normal file
87
NPC HUD/NPC HUD/Object/~follow.lsl
Normal file
@@ -0,0 +1,87 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:778
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// follow
|
||||
// :CODE:
|
||||
|
||||
// npc follow
|
||||
list lstFollowMenu = ["Start","Stop"];
|
||||
integer channel = -34;
|
||||
integer listener;
|
||||
key npc;
|
||||
string clonetype;
|
||||
vector offset = < 3, 0, 1.0>; //3 meter behind. 1.5 up (bot does seamto walk if not raised a bit
|
||||
|
||||
|
||||
list order_buttons(list buttons)
|
||||
{
|
||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||
}
|
||||
|
||||
|
||||
default
|
||||
{
|
||||
link_message(integer sender_number, integer number, string msg, key id)
|
||||
{
|
||||
if (number == 24)
|
||||
{
|
||||
llDialog(llGetOwner(), "Start/ Stop Following:", order_buttons(lstFollowMenu), channel);
|
||||
listener = llListen(channel, "", NULL_KEY, "");
|
||||
clonetype=msg;
|
||||
npc= id;
|
||||
|
||||
}
|
||||
else
|
||||
{ osNpcStopMoveToTarget(npc) ;
|
||||
llSetTimerEvent(0.0);}
|
||||
|
||||
}
|
||||
|
||||
listen(integer channel, string name, key id, string msg)
|
||||
{
|
||||
llListenRemove(listener);
|
||||
//
|
||||
//--------------------------------------
|
||||
// main menu results here
|
||||
//--------------------------------------
|
||||
if (msg == "Start")
|
||||
{
|
||||
llSetTimerEvent(1.0);
|
||||
}
|
||||
if (msg == "Stop")
|
||||
{
|
||||
osNpcStopMoveToTarget(npc) ;
|
||||
llSetTimerEvent(0.0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//}
|
||||
|
||||
}
|
||||
timer()
|
||||
{
|
||||
llSensor("",npc,AGENT,4,PI);
|
||||
}
|
||||
no_sensor()
|
||||
{
|
||||
list det = llGetObjectDetails(llGetOwner(),[OBJECT_POS,OBJECT_ROT]);
|
||||
// Get position and rotation
|
||||
vector pos = llList2Vector(det,0);
|
||||
rotation rot = (rotation)llList2String(det,1);
|
||||
// use whatever offset you want.
|
||||
vector worldOffset = offset;
|
||||
// Offset relative to owner needs a quaternion.
|
||||
vector avOffset = offset * rot;
|
||||
pos += avOffset;
|
||||
osNpcMoveToTarget(npc,pos, OS_NPC_NO_FLY );
|
||||
}
|
||||
|
||||
}
|
||||
230
NPC HUD/NPC HUD/Object/~master.lsl
Normal file
230
NPC HUD/NPC HUD/Object/~master.lsl
Normal file
@@ -0,0 +1,230 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:779
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// Master
|
||||
// :CODE:
|
||||
|
||||
key npc = "00000000-0000-0000-0000-000000000000";
|
||||
string notecard= "clonedAV";
|
||||
string clonetype;
|
||||
key av;
|
||||
key toucher;
|
||||
vector npcPos ;
|
||||
|
||||
integer channel = -19;
|
||||
integer clonechannel = -18;
|
||||
// menus
|
||||
list lstMainMenu = ["Clone","Recall","Destroy","Control","Settings","Load","-","-","Reset"];
|
||||
|
||||
string cmdname;
|
||||
|
||||
float range = 12.0;
|
||||
|
||||
string name;
|
||||
string first;
|
||||
string last;
|
||||
|
||||
list avatarlist;//2 strided list in form of name,key used to create menu of people to grab, and process responses.
|
||||
|
||||
integer listener;
|
||||
integer timeout = 30;
|
||||
|
||||
AvMenu(key id)
|
||||
{
|
||||
//give list of people in victims list
|
||||
list buttons;
|
||||
integer n;
|
||||
integer stop = llGetListLength(avatarlist);
|
||||
for (n = 0; n < stop; n = n + 2)
|
||||
{
|
||||
buttons += llList2String(avatarlist, n);
|
||||
}
|
||||
string prompt = "Select who to clone.";
|
||||
prompt += " (Menu will time out in " + (string)timeout + " seconds.)";
|
||||
llSetTimerEvent(timeout);
|
||||
listener = llListen(clonechannel, "", id, "");
|
||||
llDialog(id, prompt, buttons,clonechannel );
|
||||
}
|
||||
|
||||
ControlMenu(key id)
|
||||
{
|
||||
list buttons = ["Unsit"];
|
||||
string prompt = "Pick an option.";
|
||||
prompt += " (Menu will time out in " + (string)timeout + " seconds.)";
|
||||
llSetTimerEvent(timeout);
|
||||
listener = llListen(clonechannel, "", id, "");
|
||||
llDialog(id, prompt, buttons, clonechannel);
|
||||
}
|
||||
|
||||
|
||||
CloneAv(key id,string name)
|
||||
{
|
||||
|
||||
//--------------------------------------------------
|
||||
first = llList2String(llParseString2List(name,[" "],[]),0);
|
||||
last = llList2String(llParseString2List(name,[" "],[]),1);
|
||||
vector npcPos = llGetPos() + <3,0,0>;
|
||||
osAgentSaveAppearance(id, notecard);
|
||||
npc = osNpcCreate("_" + first, last, npcPos, notecard);
|
||||
clonetype= "default";
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
//-------------------------------------------------
|
||||
}
|
||||
|
||||
list order_buttons(list buttons)
|
||||
{
|
||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||
}
|
||||
|
||||
default
|
||||
{
|
||||
touch_start(integer num)
|
||||
{
|
||||
if (llDetectedKey(0) == llGetOwner())
|
||||
{
|
||||
//
|
||||
llDialog(llDetectedKey(0), "What do you want to do?", order_buttons(lstMainMenu), channel);
|
||||
listener = llListen(channel, "", NULL_KEY, "");
|
||||
npcPos = llGetPos() + <3,0,0>;
|
||||
llSetTimerEvent(30.0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
listen(integer channel, string name, key id, string message)
|
||||
{
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
//--------------------------------------
|
||||
// main menu results here
|
||||
//--------------------------------------
|
||||
if (channel == channel)
|
||||
{
|
||||
if (message == "Clone")
|
||||
{
|
||||
if (npc == "00000000-0000-0000-0000-000000000000")
|
||||
{
|
||||
llSensor("", NULL_KEY, AGENT, range, PI);
|
||||
}
|
||||
else
|
||||
{
|
||||
llOwnerSay("Sorry,but it appears you have already have a clone");
|
||||
}
|
||||
|
||||
}
|
||||
if (message == "Recall")
|
||||
{
|
||||
if (npc == "00000000-0000-0000-0000-000000000000")
|
||||
{
|
||||
llMessageLinked(LINK_ROOT,10,"Recall",id);
|
||||
}
|
||||
else
|
||||
{
|
||||
llOwnerSay("Sorry,but it appears you have already have a clone");
|
||||
}
|
||||
}
|
||||
if (message == "Control")
|
||||
{
|
||||
if (npc != "00000000-0000-0000-0000-000000000000")
|
||||
{
|
||||
llMessageLinked(LINK_ROOT,20,clonetype,npc);
|
||||
}
|
||||
else
|
||||
{
|
||||
llOwnerSay("Sorry,but it appears you do not have a clone to control");
|
||||
}
|
||||
}
|
||||
if (message == "Destroy")
|
||||
{
|
||||
llMessageLinked(LINK_ALL_CHILDREN,2,"red",npc);
|
||||
llOwnerSay("Removing clone");
|
||||
osAvatarPlayAnimation(npc, "shock");
|
||||
llSleep(5);
|
||||
osNpcRemove(npc);
|
||||
npc = "00000000-0000-0000-0000-000000000000";
|
||||
}
|
||||
if (message == "Reset")
|
||||
{
|
||||
llResetOtherScript("~animator");
|
||||
llResetOtherScript("~clonesit");
|
||||
llResetOtherScript("~comehere");
|
||||
llResetOtherScript("~controler");
|
||||
llResetOtherScript("~dance");
|
||||
llResetOtherScript("~follow");
|
||||
llResetOtherScript("~recall");
|
||||
llResetOtherScript("~StopAllAnimations");
|
||||
llSleep(0.2);
|
||||
llResetScript();
|
||||
}
|
||||
if (message == "-")
|
||||
{
|
||||
}
|
||||
}
|
||||
//--------------------------------------
|
||||
// avatar selected to clone
|
||||
//--------------------------------------
|
||||
if (channel == clonechannel)
|
||||
{
|
||||
//message will be victim name. get key from list
|
||||
integer index = llListFindList(avatarlist, [message]);
|
||||
key victim = llList2Key(avatarlist, index + 1);
|
||||
CloneAv(victim, message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sensor(integer num)
|
||||
{
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
//give menu of potential avatars
|
||||
integer n;
|
||||
avatarlist = [];
|
||||
|
||||
//cap at 12 victims to avoid needed multi page menu
|
||||
if (num > 12)
|
||||
{
|
||||
num = 12;
|
||||
}
|
||||
|
||||
for (n = 0; n < num; ++n)
|
||||
{
|
||||
avatarlist += [llDetectedName(n), llDetectedKey(n)];
|
||||
}
|
||||
AvMenu(llGetOwner());
|
||||
|
||||
}
|
||||
|
||||
no_sensor()
|
||||
{
|
||||
llOwnerSay( "Sorry, there's no one close enough to clone.");
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
}
|
||||
|
||||
timer()
|
||||
{
|
||||
llSetTimerEvent(0.0);
|
||||
llListenRemove(listener);
|
||||
}
|
||||
link_message(integer sender_number, integer num, string msg, key id)
|
||||
{
|
||||
if (num == 99)
|
||||
{
|
||||
npc = id;
|
||||
llSay(0,(string)npc);
|
||||
clonetype=msg;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
103
NPC HUD/NPC HUD/Object/~recall.lsl
Normal file
103
NPC HUD/NPC HUD/Object/~recall.lsl
Normal file
@@ -0,0 +1,103 @@
|
||||
// :CATEGORY:NPC
|
||||
// :NAME:NPC HUD
|
||||
// :AUTHOR:Anonymous
|
||||
// :CREATED:2013-09-06
|
||||
// :EDITED:2013-09-18 15:38:58
|
||||
// :ID:568
|
||||
// :NUM:780
|
||||
// :REV:1
|
||||
// :WORLD:Second Life
|
||||
// :DESCRIPTION:
|
||||
// Recall
|
||||
// :CODE:
|
||||
|
||||
list lstRecallMenu = ["Bunny T","Latex Slut","Barbosa","Whitey","3A", "Voodoo", "Vanessa", "White 06"];
|
||||
integer channel = -20;
|
||||
vector npcPos;
|
||||
integer listener;
|
||||
key npc;
|
||||
|
||||
list order_buttons(list buttons)
|
||||
{
|
||||
return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) + llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
|
||||
}
|
||||
|
||||
default
|
||||
{
|
||||
link_message(integer sender_number, integer number, string message, key id)
|
||||
|
||||
{
|
||||
if (number == 10)
|
||||
{
|
||||
llDialog(id, "Select the clone you want to create?", order_buttons(lstRecallMenu), channel);
|
||||
listener = llListen(channel, "", NULL_KEY, "");
|
||||
npcPos = llGetPos() + <3,0,0>;
|
||||
llSetTimerEvent(30.0);
|
||||
|
||||
}
|
||||
}
|
||||
listen(integer channel, string name, key id, string message)
|
||||
{
|
||||
llListenRemove(listener);
|
||||
llSetTimerEvent(0.0);
|
||||
//--------------------------------------
|
||||
// main menu results here
|
||||
//--------------------------------------
|
||||
if (channel == channel)
|
||||
{
|
||||
if (message =="Bunny T")
|
||||
{
|
||||
npc = osNpcCreate("Bunneh","Fuckme", npcPos, "BunnyT");
|
||||
llMessageLinked(LINK_ROOT,99,"Bunny T",npc);
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
}
|
||||
if (message =="Latex Slut")
|
||||
{
|
||||
npc = osNpcCreate("Your","LSlut", npcPos, "LatexSlut");
|
||||
llMessageLinked(LINK_ROOT,99,"LatexSlut",npc);
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
}
|
||||
if (message =="Barbosa")
|
||||
{
|
||||
npc = osNpcCreate("Barbosa","Aardvark", npcPos, "Barbosa");
|
||||
llMessageLinked(LINK_ROOT,99,"Barbosa",npc);
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
}
|
||||
if (message =="Whitey")
|
||||
{
|
||||
npc = osNpcCreate("Whitey","Aardvark", npcPos, "Whitey Basic 02");
|
||||
llMessageLinked(LINK_ROOT,99,"Whitey Basic 02",npc);
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
}
|
||||
if (message =="3A")
|
||||
{
|
||||
npc = osNpcCreate("Aaacky","Aardvark", npcPos, "yo");
|
||||
llMessageLinked(LINK_ROOT,99,"yo",npc);
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
}
|
||||
if (message =="Voodoo")
|
||||
{
|
||||
npc = osNpcCreate("Voodoo","Aardvark", npcPos, "voodoo");
|
||||
llMessageLinked(LINK_ROOT,99,"voodoo",npc);
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
}
|
||||
if (message =="Vanessa")
|
||||
{
|
||||
npc = osNpcCreate("Vanessa","Aardvark", npcPos, "Vanessa");
|
||||
llMessageLinked(LINK_ROOT,99,"Vanessa",npc);
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
}
|
||||
if (message =="White 06")
|
||||
{
|
||||
npc = osNpcCreate("White","Aardvark", npcPos, "White 06");
|
||||
llMessageLinked(LINK_ROOT,99,"White 06",npc);
|
||||
llMessageLinked(LINK_ALL_CHILDREN,1,"green",npc);
|
||||
}
|
||||
}
|
||||
}
|
||||
timer()
|
||||
{
|
||||
llListenRemove(listener);
|
||||
}
|
||||
|
||||
}
|
||||
6
NPC HUD/NPC HUD/_vti_cnf/NPC HUD.prj
Normal file
6
NPC HUD/NPC HUD/_vti_cnf/NPC HUD.prj
Normal file
@@ -0,0 +1,6 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|04 Sep 2013 20:17:04 -0000
|
||||
vti_extenderversion:SR|12.0.0.0
|
||||
vti_cacheddtm:TX|04 Sep 2013 20:17:04 -0000
|
||||
vti_filesize:IR|988
|
||||
vti_backlinkinfo:VX|
|
||||
6
NPC HUD/_vti_cnf/NPC HUD.sol
Normal file
6
NPC HUD/_vti_cnf/NPC HUD.sol
Normal file
@@ -0,0 +1,6 @@
|
||||
vti_encoding:SR|utf8-nl
|
||||
vti_timelastmodified:TR|03 Sep 2013 17:15:07 -0000
|
||||
vti_extenderversion:SR|12.0.0.0
|
||||
vti_cacheddtm:TX|03 Sep 2013 17:15:07 -0000
|
||||
vti_filesize:IR|109
|
||||
vti_backlinkinfo:VX|
|
||||
Reference in New Issue
Block a user