[sldev] Re: More client forwarded chat channels.

Chance Unknown chance at kalacia.com
Thu Jun 21 22:23:45 PDT 2007


basically, think of this idea as a channel zero (the viewer gets that) but
that doesnt show on the screen ... this has the implication that you can
script prims to send stuff to a hacked up viewer to which the viewer then
could prgramatically respond to. this could be utilized to provide
simplistic scripted capability to such a viewer based on how it was hacked
up.

On 6/21/07, Able Whitman <able.whitman at gmail.com> wrote:
>
> As I understood it, the idea (at least in the case of muting) would be to
> have a channel that the viewer could listen on for object IDs to mute, so a
> script could tell the viewer to mute an object automatically. But maybe I'm
> completely misunderstanding :)
>
> On 6/21/07, Tateru Nino <tateru.nino at gmail.com> wrote:
> >
> > Those channels aren't sent to the viewer though, are they?
> >
> > Able Whitman wrote:
> > > I meant that I wasn't keen on reserving a channel just for the
> > > purposes of allowing scriptable muting of objects. General-purpose
> > > client channels are a good idea, though.
> > >
> > > As long as it uses the same chat mechanism as channel 0 chat, so that
> > > the viewer can identify the chatting object and its owner, etc., then
> > > I am all in favor of it. I'd like to also see a way to have the client
> >
> > > monitor the amount of chat traffic on the reserved channels, though,
> > > and be able to mute objects that spam them. The last thing we need is
> > > for griefers (or just buggy scripts) to induce client-side lag by
> > > clogging these channels with spam.
> > >
> > > On 6/21/07, *Jason Giglio* <gigstaggart at gmail.com
> > > <mailto:gigstaggart at gmail.com >> wrote:
> > >
> > >     Able Whitman wrote:
> > >     > That's a really interesting idea, but I'm not really keen about
> > >     > reserving a "special" chanel for only the viewer to listen on.
> > Plus,
> > >
> > >     I am.
> > >
> > >     > which channel do you choose? It doesn't seem possible to
> > >     guarantee that
> > >     > that the channel you pick won't already be used by some existing
> >
> > >     script
> > >     > somewhere. In practice this probably isn't an issue, but I'd
> > >     much rather
> > >
> > >     It doesn't matter one bit.  Soft and I discussed this, and she
> > >     thinks a
> > >     range might be more useful, say 32 or 64 channels.  There's no
> > >     security
> > >     implication since anyone with an LSL script can already
> > effectively
> > >     listen to these channels.  I suggest near the top of the range
> > around
> > >     MAX_INT, going down from DEBUG_CHANNEL.
> > >
> > >     Any LSL script using it can continue to use it, no harm done.
> >
> > >////////////////////////////////////////////////////////////////////////
> > // Open Shifting Float and Follow Script, by Foolish Frost. //
> > // From Open Basic Follower/Facing Script, by Logan Bauer. //
> > ///////////////////////////////////////////////////////////////////////
> > // OFFSET is the position of your pet in relation to it's owner's
> > position.
> > // For example, in the default setting below, "vector offset =<-1,0,1>;"
> > // I.E. (x,y,z), the -1 puts it 1m back behind owner, the 0 means don't
> > have
> > // it stay left or right, and 1 means have it stay 1m above it's owner.
> > // So, if you wanted the script to make it follow directly in front of
> > you,
> > // and to the left, then you would change it to "vector offset
> > =<1,1,0>;"
> >
> >
> > // llFrand(float max)
> >
> > vector offset =<-1.2,0,1>;
> > vector currentoffset =<0,0,0>;
> > float xshift =.2; //How far it roams forward and back.
> > float yshift =1.25; //How wide it roams left to right.
> > float bob =2; //multiplyer of the BobCycle listed below.
> > float shifttime =5; //average time it takes to shift to another XY
> > position.
> > integer timeset=0; //Is the timer running?
> > float currentxshift =0; //current X shift position
> > float currentyshift =0; //current Y shift position
> > float currentyfacing =0; //currentyfacing storage
> > integer currentbob; //current state of the BobCycle
> > float bobbing =0; //bob storage
> > list BobCycle = [0.0, 0.08, 0.12, 0.14, 0.15, 0.14, 0.12, 0.08, 0.0, -
> > 0.08, -0.12, -0.14, -0.15, -0.14, -0.12, -0.08];
> >
> >
> > startup()
> > {
> > vector pos = llGetPos();
> > llSetStatus(STATUS_ROTATE_Z,TRUE);
> > llSetStatus(STATUS_PHYSICS, TRUE);
> > key id = llGetOwner();
> > llSensorRemove();
> > llSensorRepeat("",llGetOwner(),AGENT,200,2*PI,.5);
> > }
> >
> > default
> > {
> > state_entry()
> > {
> > startup();
> >
> >
> > }
> >
> > on_rez(integer start_param)
> > {
> > startup();
> > }
> >
> > sensor(integer total_number)
> > {
> > vector pos = llDetectedPos(0);
> >
> > bobbing = llList2Float(BobCycle, currentbob)*bob;
> >
> > llSetTimerEvent(llFrand(shifttime));
> > currentoffset = <currentxshift, currentyshift, bobbing>;
> > llMoveToTarget(pos+(offset+currentoffset)*llDetect edRot(0),.3);
> > if (currentyshift>=0)
> > {
> > currentyfacing = currentyshift;
> > } else {
> > currentyfacing = currentyshift*-1;
> > }
> >
> > llLookAt(pos+<0,0+(currentyfacing*.33),1+bobbing>, 1 , 2);
> >
> > currentbob = currentbob +1;
> > if (currentbob == 16)
> > {
> > currentbob = 0;
> > }
> >
> > if(timeset==0)
> > {
> > timeset = 1;
> > llSetTimerEvent(((llFrand(shifttime)+llFrand(shift
> > time)+llFrand(shifttime))/3)*2);
> > }
> >
> >
> > }
> >
> > timer()
> > {
> > timeset = 0;
> > currentyshift = llFrand(yshift*2)-yshift;
> > currentxshift =
> > llFrand(x////////////////////////////////////////////////////////////////////////
> > // Open Shifting Float and Follow Script, by Foolish Frost. //
> > // From Open Basic Follower/Facing Script, by Logan Bauer. //
> > ///////////////////////////////////////////////////////////////////////
> > // OFFSET is the position of your pet in relation to it's owner's
> > position.
> > // For example, in the default setting below, "vector offset =<-1,0,1>;"
> > // I.E. (x,y,z), the -1 puts it 1m back behind owner, the 0 means don't
> > have
> > // it stay left or right, and 1 means have it stay 1m above it's owner.
> > // So, if you wanted the script to make it follow directly in front of
> > you,
> > // and to the left, then you would change it to "vector offset
> > =<1,1,0>;"
> >
> >
> > // llFrand(float max)
> >
> > vector offset =<-1.2,0,1>;
> > vector currentoffset =<0,0,0>;
> > float xshift =.2; //How far it roams forward and back.
> > float yshift =1.25; //How wide it roams left to right.
> > float bob =2; //multiplyer of the BobCycle listed below.
> > float shifttime =5; //average time it takes to shift to another XY
> > position.
> > integer timeset=0; //Is the timer running?
> > float currentxshift =0; //current X shift position
> > float currentyshift =0; //current Y shift position
> > float currentyfacing =0; //currentyfacing storage
> > integer currentbob; //current state of the BobCycle
> > float bobbing =0; //bob storage
> > list BobCycle = [0.0, 0.08, 0.12, 0.14, 0.15, 0.14, 0.12, 0.08, 0.0, -
> > 0.08, -0.12, -0.14, -0.15, -0.14, -0.12, -0.08];
> >
> >
> > startup()
> > {
> > vector pos = llGetPos();
> > llSetStatus(STATUS_ROTATE_Z,TRUE);
> > llSetStatus(STATUS_PHYSICS, TRUE);
> > key id = llGetOwner();
> > llSensorRemove();
> > llSensorRepeat("",llGetOwner(),AGENT,200,2*PI,.5);
> > }
> >
> > default
> > {
> > state_entry()
> > {
> > startup();
> >
> >
> > }
> >
> > on_rez(integer start_param)
> > {
> > startup();
> > }
> >
> > sensor(integer total_number)
> > {
> > vector pos = llDetectedPos(0);
> >
> > bobbing = llList2Float(BobCycle, currentbob)*bob;
> >
> > llSetTimerEvent(llFrand(shifttime));
> > currentoffset = <currentxshift, currentyshift, bobbing>;
> > llMoveToTarget(pos+(offset+currentoffset)*llDetect edRot(0),.3);
> > if (currentyshift>=0)
> > {
> > currentyfacing = currentyshift;
> > } else {
> > currentyfacing = currentyshift*-1;
> > }
> >
> > llLookAt(pos+<0,0+(currentyfacing*.33),1+bobbing>, 1 , 2);
> >
> > currentbob = currentbob +1;
> > if (currentbob == 16)
> > {
> > currentbob = 0;
> > }
> >
> > if(timeset==0)
> > {
> > timeset = 1;
> > llSetTimerEvent(((llFrand(shifttime)+llFrand(shift
> > time)+llFrand(shifttime))/3)*2);
> > }
> >
> >
> > }
> >
> > timer()
> > {
> > timeset = 0;
> > currentyshift = llFrand(yshift*2)-yshift;
> > currentxshift = llFrand(xshift*2)-xshift;
> > }
> > }shift*2)-xshift;
> > }
> > }
> > >     -Jason
> > >
> > >
> > >
> > ------------------------------------------------------------------------
> > >
> > > _______________________________________________
> > > Click here to unsubscribe or manage your list subscription:
> > > /index.html
> > >
> >
> > --
> > Tateru Nino
> > http://dwellonit.blogspot.com/
> >
> >
>
> _______________________________________________
> Click here to unsubscribe or manage your list subscription:
> /index.html
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.secondlife.com/pipermail/sldev/attachments/20070621/ce47fece/attachment.htm


More information about the SLDev mailing list