Belt control script
integer sheathed;
default
{
on_rez(integer r)
{
llResetScript();
}
state_entry()
{
// llListen( 2, "", llGetOwner(), "" );
llSetLinkAlpha(LINK_SET,1.0,ALL_SIDES);
sheathed = TRUE;
}
touch_start(integer total_number)
{
//integer status;
// status = sheathed;
if (sheathed)
{
// llSetLinkAlpha(LINK_SET,1.0,ALL_SIDES);
llSay(-700448768,"draw"
;llMessageLinked(LINK_ALL_CHILDREN, 0, "draw", "" );
sheathed = FALSE;
}
else
{
//llSetLinkAlpha(LINK_SET,0.0,ALL_SIDES);
llSay(-700448768,"sheath"
;llMessageLinked(LINK_ALL_CHILDREN, 0, "sheath", "" );
sheathed = TRUE;
}
}
// listen( integer channel, string name, key id, string message )
// {
//string msg = message;
// if (msg == "draw"

//{
// llSay(-700448768,"sheath"
;// llMessageLinked(LINK_ALL_CHILDREN, 0, "draw", "" );
// sheathed = FALSE;
// }
// else
// {
//llSetLinkAlpha(LINK_SET,0.0,ALL_SIDES);
//llSay(-700448768,"draw"
;//llMessageLinked(LINK_ALL_CHILDREN, 0, "sheath", "" );
// sheathed = TRUE;
// }
//}
}
Sheath alpha script
default
{
state_entry()
{
}
link_message(integer Sender, integer Number, string Text, key ID)
{
string message = Text;
if(message == "draw"

{
llSetLinkAlpha( LINK_THIS, 0.0, ALL_SIDES );
}
else
{
llSetLinkAlpha( LINK_THIS, 1.0, ALL_SIDES );
}
}
}
Dagger script
integer SWORD = 1;
integer PUNCH12 = 2;
integer PUNCHL = 3;
integer KICK = 4;
integer FLIP = 5;
integer strike_type;
hide ()
{
llSetLinkAlpha(LINK_SET,0.0,ALL_SIDES);
}
show()
{
llSetLinkAlpha(LINK_SET,1.0,ALL_SIDES);
}
default
{
on_rez(integer r)
{
llResetScript();
}
state_entry()
{
llSetObjectDesc(llGetOwner());
llListen(-700448768, "", "", "" );
hide();
}
// attach(key id)
//{
// hide();
//}
listen( integer channel, string name, key id, string message )
{
string owner = llGetObjectDesc();
string msg = message;
if (owner == llGetOwner())
{
if(msg == "sheath"

{
state sheath;
}
else{
if(msg == "draw"

{
state drawn;
}
}
}
}
}
state drawn
{
state_entry()
{
llListen(-700448768, "", "", "" );
llSetStatus(STATUS_BLOCK_GRAB, TRUE);
show();
integer perm = llGetPermissions();
if (perm != (PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION))
{
llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION);
}
else
{
llTakeControls(CONTROL_ML_LBUTTON | CONTROL_LBUTTON | CONTROL_UP | CONTROL_FWD | CONTROL_BACK | CONTROL_ROT_LEFT | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_ROT_RIGHT, TRUE, TRUE);
}
}
listen( integer channel, string name, key id, string message )
{
string owner = llGetObjectDesc();
string msg = message;
if (owner == llGetOwner())
{
if(msg == "sheath"

{
state sheath;
}
}
}
run_time_permissions(integer perm)
{
if (perm)
{
llTakeControls(CONTROL_ML_LBUTTON | CONTROL_LBUTTON | CONTROL_UP | CONTROL_FWD | CONTROL_BACK | CONTROL_ROT_LEFT | CONTROL_LEFT | CONTROL_RIGHT | CONTROL_ROT_RIGHT | CONTROL_DOWN, TRUE, TRUE);
}
}
timer()
{
if ( (strike_type == FLIP)
|| (strike_type == SWORD))
{
llSensor("", "", ACTIVE | AGENT, 4.0, PI_BY_TWO*0.5);
}
else
{
llSensor("", "", ACTIVE | AGENT, 3.0, PI_BY_TWO*0.5);
}
llSetTimerEvent(0.0);
}
control(key owner, integer level, integer edge)
{
if (level & (CONTROL_ML_LBUTTON | CONTROL_LBUTTON))
{
if (edge & CONTROL_UP)
{
llApplyImpulse(<0,0,3.5>,FALSE);
llStartAnimation("backflip"
;llSetTimerEvent(0.25);
strike_type = FLIP;
}
if (edge & CONTROL_FWD)
{
llStartAnimation("sword_strike_R"
;llSleep(0.5);
llSetTimerEvent(0.25);
strike_type = SWORD;
}
if (edge & (CONTROL_LEFT | CONTROL_ROT_LEFT))
{
llStartAnimation("punch_L"
;llSetTimerEvent(0.25);
strike_type = PUNCHL;
}
if (edge & (CONTROL_RIGHT | CONTROL_ROT_RIGHT))
{
llStartAnimation("kick_roundhouse_R"
;llSetTimerEvent(0.25);
strike_type = KICK;
}
if (edge & CONTROL_BACK)
{
llStartAnimation("punch_onetwo"
;llSetTimerEvent(0.25);
strike_type = PUNCH12;
}
if (edge & CONTROL_DOWN)
{
llMoveToTarget(llGetPos(), 0.25);
llSleep(1.0);
llStopMoveToTarget();
}
}
}
sensor(integer tnum)
{
vector dir = llDetectedPos(0) - llGetPos();
dir.z = 0.0;
dir = llVecNorm(dir);
rotation rot = llGetRot();
if (strike_type == SWORD)
{
llTriggerSound("Sword - Impact08", 0.5);
dir += llRot2Up(rot);
dir *= 200.0;
llPushObject(llDetectedKey(0), dir, ZERO_VECTOR, FALSE);
}
else if (strike_type == PUNCH12)
{
llTriggerSound("Sword - Impact08", 0.2);
dir += dir;
dir *= 100.0;
llPushObject(llDetectedKey(0), dir, ZERO_VECTOR, FALSE);
}
else if (strike_type == PUNCHL)
{
llTriggerSound("Sword - Impact08", 0.2);
dir -= llRot2Left(rot);
dir *= 100.0;
llPushObject(llDetectedKey(0), dir, ZERO_VECTOR, FALSE);
}
else if (strike_type == KICK)
{
llTriggerSound("Sword - Impact08", 0.2);
dir += dir;
dir *= 100.0;
llPushObject(llDetectedKey(0), dir, ZERO_VECTOR, FALSE);
}
else if (strike_type == FLIP)
{
llTriggerSound("Sword - Impact08", 0.2);
llPushObject(llDetectedKey(0), <0,0,150>, ZERO_VECTOR, FALSE);
}
strike_type= 0;
}
}
state sheath
{
state_entry()
{
hide();
state default;
}
}