Second Life aujourd’hui en un seul endroit Cadeaux et freebies mis à jour chaque heure 7 langues Gratuit pour inscrire votre boutique
Incident grille
  • Prévu: Scheduled Billing Maintenance, lun. 16 nov. 09:30–10:30 SLT
  • État de la grille: Unscheduled Group Chat Maintenance (investigating)
  • En ce moment: Office du samedi Unitarian Universalist à UUtopia
  • En ce moment: The Dharma of Community : société bouddhiste et householder
  • En ce moment: SLCS Harvest Fest : jeux, musique et amusement
  • 14:00 SLT: NAD GOUGH en live au Moondance à Cascadia, 14 h SLT
  • Actus: REZZ MALL : les marques Second Life dans un centre commercial web
  • Viewer: Second Life Viewer 26.5 modernise le chat
  • Prévu: Scheduled Billing Maintenance, lun. 16 nov. 09:30–10:30 SLT
  • État de la grille: Unscheduled Group Chat Maintenance (investigating)
  • En ce moment: Office du samedi Unitarian Universalist à UUtopia
  • En ce moment: The Dharma of Community : société bouddhiste et householder
  • En ce moment: SLCS Harvest Fest : jeux, musique et amusement
  • 14:00 SLT: NAD GOUGH en live au Moondance à Cascadia, 14 h SLT
  • Actus: REZZ MALL : les marques Second Life dans un centre commercial web
  • Viewer: Second Life Viewer 26.5 modernise le chat
Script LSL

Script LSL de cadeaux gratuits pour freebies et cadeaux de groupe

Script LSL gratuit pour boutiques Second Life : un clic livre tous les articles en un dossier, à tous ou seulement aux membres du groupe portant le tag.

101 lignes ·

Chaque boutique a besoin d'un distributeur de cadeaux. Ce script remet tout le contenu d'un objet sous forme de dossier bien rangé quand quelqu'un le touche. Activez GROUP_ONLY et il devient un panneau de cadeaux de groupe : seuls les résidents portant le tag de groupe de votre boutique reçoivent le cadeau.

lsl-gift-giver-script.lsl · 101 lignes Vérifier ce script
// Gift Giver (everyone or group only) - free LSL script from WhatSL (https://whatsl.com/scripts/lsl-gift-giver-script)
// Free to use, change and put in your own creations, also ones you sell.
//
// Put this script and your gift items in an object. Touch it to receive everything in its Contents
// (except this script) as one folder. Items must be copyable for the next owner.
// With GROUP_ONLY = TRUE, only residents wearing the same group tag as the object get the gift:
// set the object's group in the Edit window (General tab) first.

integer GROUP_ONLY       = FALSE;
string  FOLDER_NAME      = "";    // "" = use the object's name
string  THANK_YOU        = "Enjoy your gift! It is in your inventory.";
string  NO_GROUP_TEXT    = "Sorry, this gift is for group members. Wear the group tag and touch me again.";
integer COOLDOWN_SECONDS = 60;    // the same avatar can take the gift again after this time

list gRecent = [];   // [avatar key, unix time, ...]

string folderName()
{
    if (FOLDER_NAME != "") return FOLDER_NAME;
    return llGetObjectName();
}

list giftItems()
{
    list out = [];
    string me = llGetScriptName();
    integer n = llGetInventoryNumber(INVENTORY_ALL);
    integer i;
    for (i = 0; i < n; ++i)
    {
        string name = llGetInventoryName(INVENTORY_ALL, i);
        if (name != me) out += [name];
    }
    return out;
}

giveGift(key who, integer sameGroup)
{
    if (GROUP_ONLY)
    {
        // an object without a group would let everyone in, so check that a group is set
        key objGroup = llList2Key(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0);
        if (objGroup == NULL_KEY)
        {
            llRegionSayTo(who, 0, "This gift giver is not set up yet.");
            return;
        }
        if (!sameGroup)
        {
            llRegionSayTo(who, 0, NO_GROUP_TEXT);
            return;
        }
    }
    integer now = llGetUnixTime();
    integer i = llListFindList(gRecent, [who]);
    if (i != -1)
    {
        if (now - llList2Integer(gRecent, i + 1) < COOLDOWN_SECONDS)
        {
            llRegionSayTo(who, 0, "You already have this gift. Look for the folder \"" + folderName() + "\" in your inventory.");
            return;
        }
        gRecent = llDeleteSubList(gRecent, i, i + 1);
    }
    list stuff = giftItems();
    if (llGetListLength(stuff) == 0)
    {
        llRegionSayTo(who, 0, "This gift giver is empty right now.");
        return;
    }
    llGiveInventoryList(who, folderName(), stuff);
    llRegionSayTo(who, 0, THANK_YOU);
    gRecent += [who, now];
    if (llGetListLength(gRecent) > 200) gRecent = llDeleteSubList(gRecent, 0, 1);
}

default
{
    state_entry()
    {
        if (GROUP_ONLY)
        {
            key objGroup = llList2Key(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0);
            if (objGroup == NULL_KEY) llOwnerSay("GROUP_ONLY is on, but this object has no group. Set the group in the Edit window (General tab), then reset the script.");
        }
    }

    touch_start(integer total)
    {
        integer d;
        for (d = 0; d < total; ++d)
        {
            giveGift(llDetectedKey(d), llDetectedGroup(d));
        }
    }

    changed(integer change)
    {
        if (change & CHANGED_OWNER) llResetScript();
    }
}

Libre d’utilisation, de modification et d’intégration dans vos créations, même celles que vous vendez.

Comment l'installer

  1. Placez une boîte, un panneau ou une affiche pour votre cadeau et mettez le script dans son Contenu.
  2. Ajoutez vos articles (vêtements, meubles, un repère, une note). Ils doivent être copiables pour le nouveau propriétaire.
  3. Pour un cadeau de groupe, réglez GROUP_ONLY sur TRUE et définissez le groupe de l'objet dans la fenêtre Modifier, onglet Général. Enregistrez à nouveau le script.
  4. Touchez le distributeur pour le tester. Le cadeau arrive dans un dossier portant le nom de l'objet.

Réglages

  • GROUP_ONLY : FALSE donne à tout le monde ; TRUE seulement aux résidents portant le tag de groupe de l'objet.
  • FOLDER_NAME : le nom du dossier dans lequel arrive le cadeau ; vide utilise le nom de l'objet.
  • THANK_YOU et NO_GROUP_TEXT : les messages que voient les résidents.
  • COOLDOWN_SECONDS : empêche le même avatar de reprendre le cadeau encore et encore par erreur.

Astuces

  • Changez le cadeau chaque mois en remplaçant les articles du Contenu ; le script n'a pas besoin de changer.
  • Mettez une courte note dans le cadeau avec un repère vers votre boutique et un message de remerciement.
  • Inscrivez votre cadeau gratuitement sur WhatSL pour qu'il soit trouvé par davantage de résidents.

Questions fréquentes

Pourquoi un résident de mon groupe voit-il « ce cadeau est réservé aux membres du groupe » ?

Il est dans le groupe mais a un autre tag de groupe actif. Demandez-lui de mettre votre groupe comme groupe actif puis de toucher à nouveau.

Pourquoi certains articles manquent-ils dans le dossier ?

Les articles sans copie pour le nouveau propriétaire ne peuvent pas être donnés dans un dossier. Rendez-les copiables, ou utilisez un distributeur séparé pour chaque article sans copie.

Puis-je aussi donner un repère ?

Oui. Tout ce qui se trouve dans le Contenu, sauf le script lui-même, est donné, y compris les repères et les notes.

Vérifier votre propre script: Vérificateur de syntaxe LSL →

Autres scriptsTous les scripts
Script LSL · 55 lignes

Script de porte LSL : toucher pour ouvrir, se referme seule

Script de porte LSL gratuit pour Second Life. Touchez pour ouvrir et fermer, la porte pivote sur ses gonds et se referme toute seule après quelques secondes. Sons facultatifs.

Script LSL · 69 lignes

LSL sit and pose script for chairs and pose balls

Free LSL sit script for Second Life chairs, benches and pose balls: sit and play your own animation, set the sit position, hide the ball while in use.

Script LSL · 96 lignes

LSL tip jar script with thank-you message and total

Free LSL tip jar script for Second Life clubs, DJs, hosts and stores: quick pay buttons, a thank-you message, the total and last tipper in floating text.