Files
LSL-Scripts/TransmogrifyAvatar/Transmogrify/Object/Controller.lsl
Fred Beckhusen 5a21e18d9e Fred Beckhusen
2019-03-17 23:41:07 -05:00

88 lines
1.9 KiB
Plaintext

// :CATEGORY:Transmogrify
// :NAME:TransmogrifyAvatar
// :AUTHOR:Fred Beckhusen (Ferd Frederix)
// :KEYWORDS:
// :CREATED:2013-09-08
// :EDITED:2014-09-24
// :ID:921
// :NUM:1323
// :REV:1.1
// :WORLD:Second Life
// :DESCRIPTION:
// FOr the head of the avatar
// :CODE:
// Transmogrifyer script
// License: CC-BY. Please do not remove the copyright or this notice
// Author: Fred Beckhusen (Ferd Frederix)
// 8-25-2013
// Controller goes in the root prim of the body.
// V 1.1 Edited on 9/22/2014 to fix "in air" bug to be "Flying"
integer type = -1;
integer ownerchannel;
integer person = TRUE;
hide_show( float alpha)
{
integer j = llGetNumberOfPrims();
integer k = 2; // do it twice to get rid of lost packets
while (k--)
{
integer i;
for ( i = 0; i <= j; i++) {
llSetLinkAlpha(i,alpha, ALL_SIDES);
}
}
}
// flop and send a link message for particle effects
switch(string what)
{
if (what == "avatar" && ! person)
{
llMessageLinked(LINK_SET,0,"switch","");
llSay(ownerchannel,"avatar");
person = TRUE;
hide_show(1.0); // invisible
}
else if (what == "pet" && person)
{
llMessageLinked(LINK_SET,0,"switch","");
llSay(ownerchannel,"pet");
person = FALSE;
hide_show(0.0);
}
}
default
{
on_rez(integer p)
{
llResetScript(); // so we can change owner
}
state_entry()
{
// Make this prim an invisiprim.
ownerchannel = (integer)("0xF" + llGetSubString( (string)llGetOwner(), 0, 6 ));
hide_show(1.0);
llSetTimerEvent(0.5);
}
timer()
{
integer flight = llGetAgentInfo(llGetOwner());
if (flight & AGENT_FLYING) // V 1.1
{
switch("pet");
}
else
{
switch("avatar");
}
}
}