Difference between revisions of "Best Neighbor Ad Hiding Script"

From Second Life Wiki
Jump to navigation Jump to search
Line 5: Line 5:
Even after changes regulating the form of advertising billboards in Second Life, many users are still dissatisfied with the look of some ads.  As part of a "Best Neighbor" policy, some advertisers have agreed to hide their advertisements when nearby land owners are logged in.  Doran Zemlja was kind enough to release a script to do this under the open source GPL license.
Even after changes regulating the form of advertising billboards in Second Life, many users are still dissatisfied with the look of some ads.  As part of a "Best Neighbor" policy, some advertisers have agreed to hide their advertisements when nearby land owners are logged in.  Doran Zemlja was kind enough to release a script to do this under the open source GPL license.


<lsl>
<lsl>//  best neighbor.lsl: Best Neighbor Ad Hider
//  best neighbor.lsl: Best Neighbor Ad Hider
//  Copyright (C) 2009 Adam Wozniak and Doran Zemlja
//  Copyright (C) 2009 Adam Wozniak and Doran Zemlja
//
//
Line 102: Line 101:
==See also==
==See also==
[[ Advertising_in_Second_Life | Advertising in Second Life ]]
[[ Advertising_in_Second_Life | Advertising in Second Life ]]
[[ Script Library ]]
[[ Script_Library | Script Library ]]

Revision as of 20:00, 20 March 2009

Best Neighbor Ad Hiding Script

Introduction

Even after changes regulating the form of advertising billboards in Second Life, many users are still dissatisfied with the look of some ads. As part of a "Best Neighbor" policy, some advertisers have agreed to hide their advertisements when nearby land owners are logged in. Doran Zemlja was kind enough to release a script to do this under the open source GPL license.

<lsl>// best neighbor.lsl: Best Neighbor Ad Hider // Copyright (C) 2009 Adam Wozniak and Doran Zemlja // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. // // Adam Wozniak and Doran Zemlja // 1352 Fourteenth St, Los Osos, CA 93402 // adam-opengate@cuddlepuddle.org

// Scan for owners on their own land within 96m // If any are found, go invisible by setting all alphas to 0.0 // Otherwise go visible by setting all alphas to 1.0

// This is a compromise solution to the "ad problem". The hope is that // if the ad is invisible to nearby land owners, then they are less // likely to complain about the ad.

// Adapted from an idea proposed by Temporal Mitra // in Arbor Project group chat.

// And no, copying an idea is NOT theft. Pepsi isn't stealing from Coke, // and I'm not stealing from toaster manufacturers when I design and build // my own kind of toaster, even if toast is a pretty neat idea.

// variable to store current visibility state integer visible = FALSE;

// force an alpha for this prim, as well as all linked prims in set setAlpha(float alpha) {

  llSetAlpha(alpha, ALL_SIDES);
  llSetLinkPrimitiveParams(LINK_SET,
        [ PRIM_COLOR, ALL_SIDES, < 1.0, 1.0, 1.0 >, alpha ]);

}

// make it visible if it ain't already makeVisible() {

  if (!visible) {
     visible = TRUE;
     setAlpha(1.0);
  }

}

// make it invisible if it isn't already makeInvisible() {

  if (visible) {
     visible = FALSE;
     setAlpha(0.0);
  }

}

default {

  state_entry() {
     makeVisible();
     llSensorRepeat("", NULL_KEY, AGENT, 96.0, PI, 10);
  }
  on_rez(integer param) {
     llResetScript();
  }
  no_sensor() {
     makeVisible();
  }
  sensor(integer num) {
     integer found = 0;
     integer i;
     for (i = 0; i < num; i++) {
        if (llDetectedKey(i) == llGetLandOwnerAt(llDetectedPos(i))) {
           found++;
        }
     }
     if (found) {
        makeInvisible();
     }
     else {
        makeVisible();
     }
  }

}</lsl>

See also

Advertising in Second Life Script Library