menu.lsl
///////////////////////////////////////////////////////////////////////////
//  Copyright (C) Wizardry and Steamworks 2014 - License: GNU GPLv3      //
//  Please see: http://www.gnu.org/licenses/gpl.html for legal details,  //
//  rights of fair usage, the disclaimer and warranty conditions.        //
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////
//    Copyright (C) 2014 Wizardry and Steamworks - License: GNU GPLv3    //
///////////////////////////////////////////////////////////////////////////
string wasKeyValueSet(string k, string v, string data) {
    if(llStringLength(k) == 0) return "";
    if(llStringLength(v) == 0) return "";
    if(llStringLength(data) == 0) return k + "=" + v;
    integer i = llListFindList(
        llList2ListStrided(
            llParseString2List(data, ["&", "="], []), 
            0, -1, 2
        ), 
    [ k ]);
    if(i != -1) return llDumpList2String(
        llListReplaceList(
            llParseString2List(data, ["&"], []), 
            [ k + "=" + v ], 
        i, i), 
    "&");
    return data + "&" + k + "=" + v;
}
 
string DIALOG_PREAMBLE = "\n            Welcome to the Javelin Range.\nCreated in 2014 by Wizardry and Steamworks\n                 28 July 2014: Version: 1.0";
 
resetScripts() {
    integer i = llGetInventoryNumber(INVENTORY_SCRIPT)-1;
    do {
        string name = llGetInventoryName(INVENTORY_SCRIPT, i);
        if(name == llGetScriptName()) jump continue;
        llResetOtherScript(name);
@continue;
    } while(--i>-1);
}
 
default {
    touch_start(integer total_number) {
        key agent = llDetectedKey(0);
        integer channel = (integer)("0x8" + llGetSubString(llGetKey(), 0, 6));
        llListen(channel, "", agent, "");
        if(agent == llGetOwner()) {
            llDialog(agent, DIALOG_PREAMBLE, ["⎌ Reset", "▽ Range", "⌕ Size", "⎚ Texture", "⌒ Item"], channel);
            return;
        }
        llDialog(agent, DIALOG_PREAMBLE, ["⌒ Item"], channel);
    }
    listen(integer channel, string name, key agent, string message) {
        if(message == "⌒ Item") {
            string item = llGetInventoryName(INVENTORY_OBJECT, 0);
            if(item == "") {
                llInstantMessage(agent, "An item is missing from the bullseye's inventory.");
                return;
            }
            llGiveInventory(agent, item);
            item = llGetInventoryName(INVENTORY_NOTECARD, 0);
            if(item == "") {
                llInstantMessage(agent, "An item is missing from the bullseye's inventory.");
                return;
            }            
            llGiveInventory(agent, item);
            return;
        }
        if(message == "⎌ Reset") {
            llSetLinkPrimitiveParamsFast(2, [PRIM_DESC, ""]);
            llMessageLinked(LINK_SET, 0, "", (string)<1, 1, 1>);
            resetScripts();
            return;
        }
        if(message == "▽ Range") {
            llDialog(agent, DIALOG_PREAMBLE, ["4m", "8m", "16m", "32m", "64m" ], channel);
            return;
        }
        if(message == "⌕ Size") {
            llDialog(agent, DIALOG_PREAMBLE, ["Normal", "Double"], channel);
            return;
        }
        if(message == "Normal") {
            llSetScale(<1, 1, .1>);
            return;
        }
        if(message == "Double") {
            llSetScale(<2, 2, .1>);
            return;
        }
        if(message == "⎚ Texture") {
            llDialog(agent, DIALOG_PREAMBLE, ["Black", "Red"], channel);
            return;
        }
        if(message == "Black") {
            llSetTexture("e87876bc-1814-1911-c8cc-f9c5e7ed895b", 0);
            return;
        }
        if(message == "Red") {
            llSetTexture("550d8640-4734-6a4f-117f-df4118af660e", 0);
            return;
        }
        if(llSubStringIndex(message, "m") == -1) return;
        llSetLinkPrimitiveParamsFast(3, [PRIM_DESC, wasKeyValueSet("range", (string)((integer)message), llList2String(llGetLinkPrimitiveParams(3, [PRIM_DESC]), 0))]);
    }
    on_rez(integer num) {
        llResetScript();
    }
}

secondlife/shooting_range/bullseye/menu.txt · Last modified: 2022/11/24 07:46 by 127.0.0.1

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.