Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Library: Random Profile Picture Projector

Jana Kamachi
Registered User
Join date: 19 Apr 2007
Posts: 111
01-05-2008 02:24
From: someone

Q: "It doesn't display my profile picture at all, and I have not changed it recently"
A: On rare occasions, even though a picture is loaded into the profile, and hasn't recently been changed, no UUID is returned from the database. On the two cases that I am aware of, one seemingly "fixed itself" and started displaying the picture a few days later; the second case is only today and so is too early to comment. Please try later.


If a change is made at the same time a change is being commited, it will be skipped. Wait a few days and it will show up again. (This is a bug in the Google engine, not SL)
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
Random Profile Projector v3.3
01-05-2008 03:29
v3.3 enhancement: If an AV is selected two times in a row, rather than displaying their profile picture again, display the default texture
Very Keynes
LSL is a Virus
Join date: 6 May 2006
Posts: 484
01-05-2008 03:35
From: Dumisani Ah
Very Keynes - Is it possible to add your changes to this thread?


CODE


// ~ RANDOM PROFILE PICTURE PROJECTOR v3.2 by Debbie Trilling ~
// ~~~ Minor Modifications by Very Keynes ~~~~
//
// *** This script randomly selects an AV from a crowd & then projects their
// profile picture as a 'holographic' image ***

// idea inspired from http://forums.secondlife.com/showthread.php?t=225460
// and http://forums.secondlife.com/showthread.php?t=56343 and offered freely
// in the same spirit. Free to use as you wish by under proviso
// that the title and this introduction remain in place, and that due credit
// continues to be given to Moriash Moreau, Jana Kamachi and Solar Alter,
// and Debbie Trilling.

//TOUCH to switch ON and OFF

//** PARAMETERS THAT YOU CAN CHANGE **

// how often in seconds the sensor fires
float RepeatTime = 20.00;

// sensor range in meters. Maximum 96m but in practice 10 to 30m because of particle draw distance
float Range = 30.00;

// length & width size in meters of the projected image (max 4.00)
float Size = 2.50;

// height above object the centre of projected image will be (theoretical max. 50.0, in practice 2.0 to 10.0))
float Height = 2.50;

// UUID of texture to display when an AV without a profile pic is selected
key DefaultTexture = "7cfd684e-2141-941c-eac8-bd439f0d5a9f";
// Or a list of textures to chose at random
list DefaultTextureList = [
"97864619-954c-685c-0e86-7b03911a2312",
"e905a705-95c7-7c9d-ce8a-3b14790ebf5d",
"364e13a8-ee28-4b8b-fdd3-c16e42fc3a6a"
];
list ExcludeList; //list of AVKeys you do not wish to display (could be for sencership or at the persons request)
// last texture displayed
key LastKey;

// set to 'TRUE' to give a 'ShoutOut' to the AV once they have been selected; 'FALSE' for no 'ShoutOut'
integer ShoutOut = FALSE;

// text to 'ShoutOut' when an AV's profile is projected. Text will be proceeded by their name, eg: "<AV Name>'s face is up in lights!"
string ShoutOutText = "'s face is up in lights!";

// sets the number of consequtives times that the scanner is allowed to operate without having located an AV within range
// eg: if RepeatTime = 60.0 seconds and TotalNoScansAllowed = 30, then the toy will operate for 1800 seconds (60x30, or 30 minutes) without locating
// anyone before it automatically powers down. Set to '0.00' to disable the auto-off function
integer TotalNoScansAllowed = 0;

// sets whether the DefaultTexture will be projected when the toy is switched OFF. 'TRUE' to project; 'FALSE' to have no projection when off
integer ProjectDefaultTexture = FALSE;

// ** DO NOT CHANGE BELOW THIS LINE **
string URL_RESIDENT = "http://world.secondlife.com/resident/";
key texture = "";
integer Power = FALSE;
integer NoSensorCounter = 0;
key AVKey = "";
key ObjectOwner = "";
string OwnerName = "";
string ObjectName = "Profile Projector";
string Author = "Debbie Trilling";
string Supplier = "The Particle Crucible";
string Version = " v3.2";


GiveShoutOut()
{
// any interaction with selected AV (give Inventory items etc) can safely be done from this function
// this function will only execute if ShoutOut == TRUE

//although fondly calling it a 'ShoutOut', it actually makes more sense to keep within the 20m range of llSay
llSay(0, llKey2Name(AVKey) + ShoutOutText);

}


ProjectTexture()
{
if (ProjectDefaultTexture)
{
texture = DefaultTexture;
ParticleStart();
}
else
{
llParticleSystem([]);
}
}


ParticleStart()
{
//core code by Moriash Moreau. Adapted to suit by Debbie Trilling
llParticleSystem([
PSYS_PART_FLAGS, 0,
PSYS_SRC_PATTERN, 4,
PSYS_PART_START_ALPHA, 0.50,
PSYS_PART_END_ALPHA, 0.50,
PSYS_PART_START_COLOR, <1.0,1.0,1.0>,
PSYS_PART_END_COLOR, <1.0,1.0,1.0>,
PSYS_PART_START_SCALE, <Size * 1.6 ,Size,0.00>,
PSYS_PART_END_SCALE, <Size * 1.6,Size,0.00>,
PSYS_PART_MAX_AGE, 1.20,
PSYS_SRC_MAX_AGE, 0.00,
PSYS_SRC_ACCEL, <0.0,0.0,0.0>,
PSYS_SRC_ANGLE_BEGIN, 0.00,
PSYS_SRC_ANGLE_END, 0.00,
PSYS_SRC_BURST_PART_COUNT, 8,
PSYS_SRC_BURST_RADIUS, Height,
PSYS_SRC_BURST_RATE, 0.10,
PSYS_SRC_BURST_SPEED_MIN, 0.00,
PSYS_SRC_BURST_SPEED_MAX, 0.00,
PSYS_SRC_OMEGA, <0.00,0.00,0.00>,
PSYS_SRC_TEXTURE, texture]);
}

AnnounceWelcome()
{
llOwnerSay(
"\nThank you for your interest in this product created by Debbie Trilling at The Particle Crucible.");
}


ShutDown()
{
llSensorRemove();
Power = FALSE;
ProjectTexture();
}


default
{

on_rez(integer start_param)
{
// reset script on rez
AnnounceWelcome();
llResetScript();
}

changed( integer change )
{
if(change & CHANGED_OWNER )
{
// reset script on change of owner
AnnounceWelcome();
llResetScript();
}
}

state_entry()
{
//initialise system
llParticleSystem([]);
ObjectOwner = llGetOwner();
OwnerName = llKey2Name(ObjectOwner);
llSetObjectName(ObjectName + Version);
llSetObjectDesc("Supplied by " + Author + "'s " + Supplier);
ProjectTexture();
llOwnerSay("\nTOUCH the " + ObjectName + " to switch it ON and OFF.");
}

touch_start(integer total_number)
{
if (llDetectedKey(0) == ObjectOwner)
{
// operation by Owner Only
if (Power)
{
// touch to OFF
ShutDown();
llOwnerSay("\nThe " + ObjectName + " is now switched OFF.");
}
else
{
// touch to ON
llSensorRepeat("",NULL_KEY,AGENT,Range,PI,RepeatTime);
Power = TRUE;
NoSensorCounter = 0;
llOwnerSay("\nThe " + ObjectName + " is now switched ON. Please wait...");
}
}
else
{
// touched by someone other than Owner
llInstantMessage(llDetectedKey(0), "\nThank you for your interest in the " + ObjectName + " created by " + Author +
".\nThe script is available free from http://forums.secondlife.com/showthread.php?t=225692.");
}
}


sensor(integer total_number)
{
// select an random number from the total number of AV's scanned & then retrieve their key
integer SelectAvIndex = (integer)llFrand(total_number);
AVKey = llDetectedKey(SelectAvIndex);

//mod by Very Keynes to force texture change and implement Exclude and Default lists
//
if (~llListFindList(ExcludeList,[AVKey]))LastKey=AVKey;
if(LastKey == AVKey)
{
DefaultTextureList = llListRandomize(DefaultTextureList,0);
texture = llList2Key(DefaultTextureList,0);
LastKey=NULL_KEY;
ParticleStart();
}
else
{
LastKey=AVKey;
//end of mod

// core code by Jana Kamachi and Solar Alter. Adapted to suit by Debbie Trilling
llHTTPRequest( URL_RESIDENT + (string)llDetectedKey(SelectAvIndex),[HTTP_METHOD,"GET"],"");
}
}


no_sensor()
{
// counts the number of times that the scanner doesn't find anyone in range. If TotalNoScansAllowed is set to greater than zero, automatically powers down the toy
// when the number of no_sensors exceeds TotalNoScansAllowed. However, this functionality is disabled if TotalNoScansAllowed is set to zero.
NoSensorCounter++;
if ((NoSensorCounter > TotalNoScansAllowed) && (TotalNoScansAllowed > 0))
{
ShutDown();
llInstantMessage(ObjectOwner, "\nThe " + ObjectName + " has been automatically switched OFF as no Agents have been detected within the set timeframe.");
}
else
{
texture = DefaultTexture;
ParticleStart();
}
}


http_response(key req,integer stat, list met, string body)
{
// core code by Jana Kamachi and Solar Alter. Adapted to suit by Debbie Trilling
integer s1 = 0;
integer s2 = 0;
integer s1l= 0;
integer s2l= -3;
s1 = llSubStringIndex(body,"<img alt=\"profile image\" src=\"http://secondlife.com/app/image/");
s1l = llStringLength("<img alt=\"profile image\" src=\"http://secondlife.com/app/image/");
s2 = llSubStringIndex(body,"\" class=\"parcelimg\" />");

if(s1 == -1)
{
// selected AV doesn't have a profile picture, so use the default instead
texture = DefaultTexture;
}
else
{
// extract the key for the selected AV's profile picture
texture = (key)llGetSubString(body,s1+s1l,s2+s2l);
if (ShoutOut)
{
// give a 'ShoutOut', if set to do so
GiveShoutOut();
}
}
// refresh the projected image using the new texture
ParticleStart();
}

//default end
}


Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
Optional enhancements:
01-05-2008 03:45
Thanks for these suggestions!

I've incorporated the same-picture-twice-in-a-row situation into v3.3 but rather than complicate the core source code in Post #1, have put the other optional enhancements here:

TO DISPLAY AS A TEXTURE ON A PRIM, RATHER THAN A PARTICLE EMISSION:
-----------------------------------------------------------------------------------------

v5+ allows provides functionality to project the profile picture as an image and/or apply it as a texture to the prim. The code can be picked up here: https://wiki.secondlife.com/wiki/Random_AV_Profile_Projector

To modify a v3 verion of the code, we'll use llSetTexture(), rather than making a particle call via. ParticleStart().

I have used this on as the banner on a flag outside one of my exhibits. You can get a 'Free to Copy' version from "SploLand - the Museum of Science, Art and Human Imperfection" at http://slurl.com/secondlife/SploLand/79/159/24/

Overwrite the existing sections with these revised versions of the same sections:

1) ProjectTexture()
----------------------

CODE


ProjectTexture()
{
if (ProjectDefaultTexture)
{
llSetTexture(DefaultTexture, ALL_SIDES);
}
}



2) no_sensor()
-----------------

CODE


no_sensor()
{
// counts the number of times that the scanner doesn't find anyone in range. If TotalNoScansAllowed is set to greater than zero, automatically powers down the toy
// when the number of no_sensors exceeds TotalNoScansAllowed. However, this functionality is disabled if TotalNoScansAllowed is set to zero.
NoSensorCounter++;
if ((NoSensorCounter > TotalNoScansAllowed) && (TotalNoScansAllowed > 0))
{
ShutDown();
llInstantMessage(ObjectOwner, "\nThe " + ObjectName + " has been automatically switched OFF as no Agents have been detected within the set timeframe.");
}
else
{
llSetTexture(DefaultTexture, ALL_SIDES);
}
}

3) http_response()
---------------------

CODE


http_response(key req,integer stat, list met, string body)
{
// core code by Jana Kamachi and Solar Alter. Adapted to suit by Debbie Trilling
integer s1 = 0;
integer s2 = 0;
integer s1l= 0;
integer s2l= -3;
s1 = llSubStringIndex(body,"<img alt=\"profile image\" src=\"http://secondlife.com/app/image/");
s1l = llStringLength("<img alt=\"profile image\" src=\"http://secondlife.com/app/image/");
s2 = llSubStringIndex(body,"\" class=\"parcelimg\" />");

if(s1 == -1)
{
// selected AV doesn't have a profile picture, so use the default instead
texture = DefaultTexture;
}
else
{
// extract the key for the selected AV's profile picture
texture = (key)llGetSubString(body,s1+s1l,s2+s2l);
if (ShoutOut)
{
// give a 'ShoutOut', if set to do so
GiveShoutOut();
}
}
llSetTexture(texture, ALL_SIDES);
}



4) Remove function "ParticleStart()" entirely


TO RANDOMLY SELECT FROM MULTIPLE DEFAULT TEXTURES:
-----------------------------------------------------------------------

v4+ provides for multiple default textures. The code can be picked up here: https://wiki.secondlife.com/wiki/Random_AV_Profile_Projector

To change a v3 version, we'll set up a list of texture strings from which to randomly select. We'll then populate variable 'texture' with that selection.

1) Change the line:
CODE

key DefaultTexture = "7cfd684e-2141-941c-eac8-bd439f0d5a9f";


to

CODE

list DefaultTexture = ["7cfd684e-2141-941c-eac8-bd439f0d5a9f", "d02531dd-491c-45b5-2cab-2e47ec81ec0d", "c3eebd9e-ee92-a16f-f906-bc275928df86"];


...and so on.

2) Replace every instance of

CODE

texture = DefaultTexture;


with

CODE

texture =
(key)llList2String(DefaultTexture, (integer)llFrand((float)llGetListLength(DefaultTexture)));


NB: the last usage of 'DefaultTexture' has been posted with a space in it for some reason: "DefaultTex ture". You'll need to remove that space in order for the code to compile.
Very Keynes
LSL is a Virus
Join date: 6 May 2006
Posts: 484
01-05-2008 03:53
From: Debbie Trilling
Thanks for these suggestions!
QUOTE]

We posted at the same time, but your's is the more elegent mod, thanks Debs.
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
Random AV Profile Projector v4
01-05-2008 06:21
v4 has been posted on the SL Wiki.

It accomodates a random choice of different default textures, and the code has been optimised for efficency.

https://wiki.secondlife.com/wiki/Random_AV_Profile_Projector
Very Keynes
LSL is a Virus
Join date: 6 May 2006
Posts: 484
01-05-2008 09:12
one more sugestion for version 4 if i may?

replace

// sets whether the DefaultTexture will be projected when the toy is switched OFF. 'TRUE' to project; 'FALSE' to have no projection when off
integer ProjectDefaultTexture = TRUE;

with

// sets whether to Display and/or project the Texture
integer Project = TRUE;
integer Display = TRUE;

// sets whether the DefaultTexture will be projected when the toy is switched OFF. 'TRUE' to project; 'FALSE' to have no projection when off
integer ProjectDefaultTexture = TRUE;

and replace

ParticleStart(key texture)
{
//core code by Moriash Moreau. Adapted to suit by Debbie Trilling
llParticleSystem([
PSYS_PART_FLAGS, 0,
PSYS_SRC_PATTERN, 4,
PSYS_PART_START_ALPHA, 0.50,
PSYS_PART_END_ALPHA, 0.50,
PSYS_PART_START_COLOR, <1.0,1.0,1.0>,
PSYS_PART_END_COLOR, <1.0,1.0,1.0>,
PSYS_PART_START_SCALE, <Size * 1.6 ,Size,0.00>,
PSYS_PART_END_SCALE, <Size * 1.6,Size,0.00>,
PSYS_PART_MAX_AGE, 1.20,
PSYS_SRC_MAX_AGE, 0.00,
PSYS_SRC_ACCEL, <0.0,0.0,0.0>,
PSYS_SRC_ANGLE_BEGIN, 0.00,
PSYS_SRC_ANGLE_END, 0.00,
PSYS_SRC_BURST_PART_COUNT, 8,
PSYS_SRC_BURST_RADIUS, Height,
PSYS_SRC_BURST_RATE, 0.10,
PSYS_SRC_BURST_SPEED_MIN, 0.00,
PSYS_SRC_BURST_SPEED_MAX, 0.00,
PSYS_SRC_OMEGA, <0.00,0.00,0.00>,
PSYS_SRC_TEXTURE, texture]);
}

with

ParticleStart(key texture)
{
if(Project)
{
//core code by Moriash Moreau. Adapted to suit by Debbie Trilling
llParticleSystem([
PSYS_PART_FLAGS, 0,
PSYS_SRC_PATTERN, 4,
PSYS_PART_START_ALPHA, 0.50,
PSYS_PART_END_ALPHA, 0.50,
PSYS_PART_START_COLOR, <1.0,1.0,1.0>,
PSYS_PART_END_COLOR, <1.0,1.0,1.0>,
PSYS_PART_START_SCALE, <Size * 1.6 ,Size,0.00>,
PSYS_PART_END_SCALE, <Size * 1.6,Size,0.00>,
PSYS_PART_MAX_AGE, 1.20,
PSYS_SRC_MAX_AGE, 0.00,
PSYS_SRC_ACCEL, <0.0,0.0,0.0>,
PSYS_SRC_ANGLE_BEGIN, 0.00,
PSYS_SRC_ANGLE_END, 0.00,
PSYS_SRC_BURST_PART_COUNT, 8,
PSYS_SRC_BURST_RADIUS, Height,
PSYS_SRC_BURST_RATE, 0.10,
PSYS_SRC_BURST_SPEED_MIN, 0.00,
PSYS_SRC_BURST_SPEED_MAX, 0.00,
PSYS_SRC_OMEGA, <0.00,0.00,0.00>,
PSYS_SRC_TEXTURE, texture]);
}
if(Display)
{
llSetTexture(texture, ALL_SIDES);
}
}

Thus one script can be used for Prim Texture, Particle or both at the same time.
Dumisani Ah
Pass me the hammer
Join date: 2 Dec 2006
Posts: 95
Thank you Very and Debbie!
01-05-2008 10:10
I will try out these latest mods asap :) Debbie, your work seems one of those scripts that truly attracks serious attention!
Very, no wonder you use it to put up random ads in texture form :)

Although I am sure by the pure time spent on reading this thread something about lsl and the elegant manner you two write should have dropped into my brain, I must honestly say my own attempts show I am dumber today than two days ago - thank goodness I can come back here to get some inspiration and try again ;) Well done!
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
Random AV Profile Projector v5
01-05-2008 14:11
v5 has been posted on the SL Wiki:

https://wiki.secondlife.com/wiki/Random_AV_Profile_Projector

This gives the ability to project the profile picture and/or apply the profile picture as a texture to the prim.

It also adds the ability for the user to set texture, colour, full bright and alpha preferences to the prim when it is turned OFF or if not texturing the prim with the profile picture ( that is, ProjectDefaultTexture and/or TexturePrim are FALSE)

If the user elects to texture the prim with the profile picture, then the user preferences are overridden when it is turned ON and the prim is set to solid white blank full bright. This usually provides the best surface on which to display the profile picture. The prim reverts to the user preferences when it is turned back OFF.

Thanks again for your encouragement

Enjoy!
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
Welcome Board targets AV with particle stream
01-06-2008 04:40
A modification of v5 is avalible as a large-size 'Welcome Board'.

As well as allowing multiple default textures for promotion purposes, when an AV is selected, it will display their profile picture on the Big Board and 'ShoutOut' a welcome. Not only that, it will then target that AV with a lil cute particle stream of their profile picture. Great fun; very effective.

A 'Free to Copy', full perms 'Welcome Board' modification of version 5 can be obtained from "SploLand - the Museum of Science, Art and Human Imperfection" at:

http://slurl.com/secondlife/SploLand/181/76/24/

While there, you could also pick up a 'Free to Copy' version of the Flag & Pole.

The non-modified version of the code can be picked up from:

http://wiki.secondlife.com/wiki/User:debbie_Trilling
Zuba Zenovka
Registered User
Join date: 12 Feb 2007
Posts: 2
atteintion
01-09-2008 22:32
hello all!

i create this gadget and get very very big problem from linden lab!

Today, I received a letter

,,,,,,
Linden Lab individually investigates the circumstances of every Abuse
Report we receive. Following a careful review of our server records and
logs, we have determined that your recent actions violated the Second Life
Community Standards or Terms of Service. The violation in question occurred
on January 9, 2008 in the region of Roclaren.

Violation: Terms of Service: Permissions Exploit

Residents may not take any action to circumvent the
Permissions system of Second Life. Obtaining, using,
downloading and selling of textures, scripts, etc. without
the permission of the creator -- expressed through the
Permissions system -- is a violation of the Terms of
Service.

Profile prim scanner / greeter returned due to capturing resident profile
picture without permission.

The rules of conduct are interpreted with the broadest meaning possible.

Discipline
...............
Anti Antonelli
Deranged Toymaker
Join date: 25 Apr 2006
Posts: 1,091
01-09-2008 23:06
That's really rotten Zuba, especially since it is Linden Lab who has made these textures publicly available full-perms on their search web site, and since this script is a harmless (but clever) fun thing. A pox upon the person who filed the Abuse Report that led to this silliness.
_____________________
Designer of sensual, tasteful couple's animations - for residents who take their leisure time seriously. ;)

http://slurl.com/secondlife/Brownlee/203/110/109/

Void Singer
Int vSelf = Sing(void);
Join date: 24 Sep 2005
Posts: 6,973
01-10-2008 01:52
that's just senseless... especially since it doesn't get around people that have their profiles blocked... odds are if a different linden had showed up, the results would have been different too.
_____________________
|
| . "Cat-Like Typing Detected"
| . This post may contain errors in logic, spelling, and
| . grammar known to the SL populace to cause confusion
|
| - Please Use PHP tags when posting scripts/code, Thanks.
| - Can't See PHP or URL Tags Correctly? Check Out This Link...
| -
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
Pandering to the paranoid
01-10-2008 02:07
I have no intention of using this thread to publically voice my utter distain & contempt for the ignorance of such individuals, but instead will later today release a new version that will allow these vocal minorities to place themselves on an 'exclude' list.

This way they can continue their joyless existence without being able to use this *toy* to impose their Kill Joy impulses on the rest of us.

Yes, I know that this is a sweeping generalisation. :)
ElQ Homewood
Sleeps Professionally
Join date: 25 Apr 2007
Posts: 280
01-10-2008 04:21
Okay, that's just nuts..I developed a club toy using the basic functionality from this script, I've had a LOT of people IM me asking why I have their pic on my shop wall, but once I've explained it, none of them have had a problem with it...many of them turn around and pick one up for their club! Well, I guess now I'll have to take it out, or face the wrath of a bunch of retards..it was fun while it lasted
ElQ Homewood
Sleeps Professionally
Join date: 25 Apr 2007
Posts: 280
01-10-2008 05:34
So, basically what they are saying is that we all break TOS whenever we look at somebody's profile?
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
v5.1: now with 'Exclude List' for the intelligently-challenged
01-10-2008 06:27
v5.1 is now avaliable from :

http://wiki.secondlife.com/wiki/User:debbie_Trilling

This version introduces an 'Exclude List' and other related functionality. When a non-owner touches the prim, they are presented with a dialog menu of three options:

1) 'LearnMore': provides a link to this thread

2) 'GetScript': provides a link to the source code where they can get their own copy of the script

3) 'ExcludeMe' / 'IncludeMe': Mutually exclusive. If their name is not on the 'Exclude List; then they can add it by clicking 'ExcludeMe'. The toy will then ignore their presence. If their name is already on the 'Exclude List' then they can click 'IncludeMe' to have it removed and re-join the community.

One is of course making the assumption that if they are going to go to all the effort of filing an AR, then touching the prim to have themselves removed isn't such a difficult task.

Version 5.1 does not include any checking to ensure that the 16K script limit is not violated by an extensive 'Exclude List'. Therefore, at this time, management of this list is left as a manual task for the Owner. Future versions may include Owner 'housekeeping' options.

A ready-made & boxed full-perms v5.1 is avaliable 'Free to Copy' from:
http://slurl.com/secondlife/Comatose/37/89/27/

As I've said a number of times before in this thread...

Enjoy :)

...although this appears to be proving painfully difficult for some individuals...
Void Singer
Int vSelf = Sing(void);
Join date: 24 Sep 2005
Posts: 6,973
01-10-2008 14:26
change
KillJoyListing = KillJoyListing + llKey2Name(DetectedUser);
to
KillJoyListing = (list)llKey2Name(DetectedUser) + llList2List( KillJoyListing, 0, 48 );

caps the list at the last 50 people... you could probably safely go up to about 100+ this way (becauase names are more effecient to store than keys)
_____________________
|
| . "Cat-Like Typing Detected"
| . This post may contain errors in logic, spelling, and
| . grammar known to the SL populace to cause confusion
|
| - Please Use PHP tags when posting scripts/code, Thanks.
| - Can't See PHP or URL Tags Correctly? Check Out This Link...
| -
Harleen Gretzky
Registered User
Join date: 27 Oct 2005
Posts: 51
Resident Killjoys
01-10-2008 15:17
Another thing I noticed residents are doing is changing their profile pictures to advertise things and then display their pictures on these gadgets.
Void Singer
Int vSelf = Sing(void);
Join date: 24 Sep 2005
Posts: 6,973
01-10-2008 15:39
lol, well you are providing them free space, they're just making the best use of it =P no way around that I'm afraid, except perhaps adding an ignore list that the owner can use to add people to ignore as well (but then the owner has to be around to monitor it, not pretty)
_____________________
|
| . "Cat-Like Typing Detected"
| . This post may contain errors in logic, spelling, and
| . grammar known to the SL populace to cause confusion
|
| - Please Use PHP tags when posting scripts/code, Thanks.
| - Can't See PHP or URL Tags Correctly? Check Out This Link...
| -
Very Keynes
LSL is a Virus
Join date: 6 May 2006
Posts: 484
01-10-2008 15:40
From: Harleen Gretzky
Another thing I noticed residents are doing is changing their profile pictures to advertise things and then display their pictures on these gadgets.

That is one of the reasons I had an exclude list included since Version one, I run a mature but PG club and wanted to exclude profiles with sexualy explicit pictures, the same would go for advertising, If I or a manager were there to witness it ofcouse.
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
v5.2 code optimisation
01-10-2008 15:57
From: Void Singer
change
KillJoyListing = KillJoyListing + llKey2Name(DetectedUser);
to
KillJoyListing = (list)llKey2Name(DetectedUser) + llList2List( KillJoyListing, 0, 48 );


Done. Thanks, Void!
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
v5.3: Final functionality version
01-11-2008 15:39
v5.3 is released and restores Power to the Owner.

v5.3 of the script can be obtained here: http://wiki.secondlife.com/wiki/User:debbie_Trilling

Main points are:
1) Operation is by dialog menu for the Owner
2) Owner can define a listen channel (parameter 'OwnerChannel')
3) Owner can open the listen channel as & when required.
4) Owner can use the listen channel to:
a) add a person to the 'Exclude List'
b) remove a person from the 'Exclude List'
c) get a complete listing of all names currently on the 'Exclude List'
d) clear the 'Exclude List' entirely
5) Owner can close the listen channel when it is no longer required
6) Owner has 'LearnMore' option
7) Owner has 'GetScript' option
8) All users have link to new online 'Help' and FAQ

Note, individual users can still 'exclude' and 'include' themselves, but the Owner can now manage the whole 'Exclude List'

About parameter 'OwnerChannel': by default this parameter is set to “54321”. It is the listen channel which the Owner will use to communicate ‘Exclude List’ information on. You can set it to any whole number, but avoid “0”, “1” and other commonly used channels.

The Owner communicates with the Random Profile Projector using a combination of a blue dialog menu and typing in room chat. Communications from room chat to the Random Profile Projector are performed on the channel defined in parameter 'OwnerChannel'. Unlike most similar devices that have room chat communications with their Owner, the Random Profile Projector requires that you first activate the listen channel. This is done by selecting 'OpenListen' from the blue dialog menu. Once the listen channel is open, the Random Profile Projector will listen for the Owner on the channel defined in parameter 'OwnerChannel'. This listen channel will remain open until the Owner selects 'CloseListen' from the blue dialog box, or switches the toy off. This ensures that the listen channel is only open as and when it is needed, and thus, in this small way, contributes to a healthier environment for us all.

The Random Profile Projector listens for the Owner to make the following commands (assuming the default of "54321";):

/54321Exclude <AV_NAME> // add a named AV to the 'Exclude List'
/54321Include <AV_NAME> // removes a named AV from the 'Exclude List'
/54321List // lists all entries on the 'Exclude List'
/54321ClearAll // clears the 'Exclude List' of all entries.

A full on-line 'Help' page for setting up, configuring and operating the Random Profile Projector is now available at: http://wiki.secondlife.com/wiki/Talk:Random_AV_Profile_Projector

I am unlikely to add any further functionality to this toy, but will make changes to fix any bugs found or to optimise code. It was originally only meant to be a way to pass a few hours on a cold Sunday UK morning...:)
Debbie Trilling
Our Lady of Peenemünde
Join date: 17 Oct 2006
Posts: 434
v5.4 FINAL (including important bug fix)
01-12-2008 14:32
v5.4 contains one important bug fix, and numerous enhancements.

The script is available from: http://wiki.secondlife.com/wiki/User:debbie_Trilling

A full 'Help' manual is available at: http://wiki.secondlife.com/wiki/Talk:Random_AV_Profile_Projector

v5.4 Bug Fix:
1) A user can only remove their name from the 'Exclude List' if they put it on the list themself. They cannot remove their name if it was placed on the 'Exclude List' by the Owner

v5.4 Enhancements:
1) When Owner requests a list of the names on the 'Exclude List', it differentiates between those names placed on it by the Owner and those entered by the users themselves
2) Owner can configure the maximum number of entries that the 'Exclude List' will hold at any one time
3) Ability to control floating text message above the prim
4) Ability to give prim a slow rotation
5) Ability set the Shine value of the prim if a profile picture is not being applied to it as a texture
6) Add llOwnerSay() link to 'Help' page on rez
7) Re-order functions more logically but keep GiveShoutOut() at the top
8) Code optimisations

I will not be adding any further functionality to this toy, as I think I've now just about covered all those which have been suggested or requested. I will, however, correct any bugs that might be found, as well as make any code optimisation changes as I learn more about LSL or as they are suggested.

Thanks to those who have contacted me with kind words about the Random Profile Projector and I'm glad so many are using it, enjoying it and that for some it was their first play with LSL.
Mambajamba Rearwin
Registered User
Join date: 12 Nov 2006
Posts: 1
01-18-2008 08:07
From: Zuba Zenovka
hello all!

i create this gadget and get very very big problem from linden lab!

Violation: Terms of Service: Permissions Exploit

...............


I received a couple similar notices from the Lindens..

Violation: Community Standards: Disclosure, Second Life

Violation: Terms of Service: Permissions Exploit

Their explanation:
Residents are entitled to a reasonable level of privacy with
regard to their Second Lives. Sharing or posting
conversation in-world or in the Second Life Forums without
consent of all involved Residents is a violation of other
Resident's privacy.

Regarding your profile scanner, reports received of profile photos being
posted in locations without residents permission. These are violations of
Disclosure. Several photos returned depicting residents that
advised they gave no permission for photos to be used.

Disclosure? Hardly.. if the person didn't post their picture on the web (there's a checkbox they selected).

Texture exploit? Lindens made this available to us.

I noticed that the lindens picked up a couple copies of my version of the greeter.

Anyway, great script - thanks for making this available.

Mamba.
1 2 3 4