From 59821c36ea13232eecf2a2b7a1b9620c2c9e06ac Mon Sep 17 00:00:00 2001 From: onefang Date: Mon, 6 Sep 2021 20:30:26 +1000 Subject: Leash texture, size, and length adjustments. --- .1ring.settings.txt | 3 ++ .1ring.theme.txt | 12 +++++-- 1ring.lsl | 86 ++++++++++++++++++++++++++++++++++++++++++++++++- ~1ring.command.data.txt | 15 +++++++++ ~1ring.setting.data.txt | 10 +++++- 5 files changed, 122 insertions(+), 4 deletions(-) diff --git a/.1ring.settings.txt b/.1ring.settings.txt index 4b7cc73..57df3e4 100644 --- a/.1ring.settings.txt +++ b/.1ring.settings.txt @@ -1 +1,4 @@ HIDE=0 +LEASH=leash_chain +LEASH_SIZE=<0.100000, 0.100000, 0.100000> +LEASH_RANGE=4.000000 diff --git a/.1ring.theme.txt b/.1ring.theme.txt index 834a32d..c7ef112 100644 --- a/.1ring.theme.txt +++ b/.1ring.theme.txt @@ -42,8 +42,16 @@ TOMENU Leash | CHOOSE_ALL BUTTON Unleash | RELEASE TOGGLE Locate BUTTON Yank -TOMENU Length -TOMENU Texture +TOMENU length +TOMENU size +TOMENU texture | CHOOSE_ALL texture +MENU size | leash size menu: | PRIV +BUTTON △ bigger | LEASH_BIGGER +BUTTON ▽ smaller | LEASH_SMALLER + +MENU length | leash length menu: | PRIV +BUTTON △ longer | LEASH_LONGER +BUTTON ▽ shorter | LEASH_SHORTER MENU other | other things that don't fit anywhere else: | PRIV TOMENU channel diff --git a/1ring.lsl b/1ring.lsl index db0706e..59db460 100644 --- a/1ring.lsl +++ b/1ring.lsl @@ -470,6 +470,31 @@ llShout(0, "AAAHHHHH!"); s = [ACTIVE | AGENT | PASSIVE, "Select something or someone to leash to", "LEASH"]; else if ("Sit…" == button) // This will only be for objects, can't sit on an avatar. s = [ACTIVE | PASSIVE, "Select something to sit on", "SIT"]; + else if ("texture" == data) + { + integer i = llGetInventoryNumber(INVENTORY_TEXTURE); + integer j = 0; + string opts = ""; + string cmds = ""; + while (i-- > 0) + { + string t = llGetInventoryName(INVENTORY_TEXTURE, i); + if ("leash_" == llGetSubString(t, 0, 5)) + { + string n = llGetSubString(t, 6, -1); + opts += n + "|"; + cmds += "LEASH_TEXTURE " + t + "|"; + j++; + } + } + if (j) + { + dynamicMenu(id, "", "", "Choose a leash texture: ", + llGetSubString(opts, 0, -2), llGetSubString(cmds, 0, -2), 2); + return FALSE; + } + return (source == fMENU); + } else { D("Unknown CHOOSE_ALL option - " + button); @@ -520,6 +545,64 @@ s("YAY! Freeeeeee at last!!!!!"); leashTo(Stalkee); } } + else if ("LEASH_BIGGER" == cmd) + { + vector sz = (vector) getSetting("leash_size"); + + sz.x += 0.1; + sz.y += 0.1; + setSetting(id, "leash_size", (string) sz, source); + if (MODE_LEASH == mode) + { + unleash(); + leashTo(Stalkee); + } + } + else if ("LEASH_SMALLER" == cmd) + { + vector sz = (vector) getSetting("leash_size"); + + if (0.1 < sz.x) sz.x -= 0.1; + if (0.1 < sz.y) sz.y -= 0.1; + setSetting(id, "leash_size", (string) sz, source); + if (MODE_LEASH == mode) + { + unleash(); + leashTo(Stalkee); + } + } + else if ("LEASH_LONGER" == cmd) + { + RANGE += 2.0; + setSetting(id, "leash_range", (string) RANGE, source); + if (MODE_LEASH == mode) + { + unleash(); + leashTo(Stalkee); + } + s("The leash range is now " + (string) RANGE + " meters."); + } + else if ("LEASH_SHORTER" == cmd) + { + if (2.0 < RANGE) + RANGE -= 2.0; + setSetting(id, "leash_range", (string) RANGE, source); + if (MODE_LEASH == mode) + { + unleash(); + leashTo(Stalkee); + } + s("The leash range is now " + (string) RANGE + " meters."); + } + else if ("LEASH_TEXTURE" == cmd) + { + setSetting(id, "leash", data, source); + if (MODE_LEASH == mode) + { + unleash(); + leashTo(Stalkee); + } + } else if ("RELEASE" == cmd) { someBoss = id; @@ -717,7 +800,7 @@ leashTo(key id) [ PSYS_PART_FLAGS, PSYS_PART_FOLLOW_VELOCITY_MASK | PSYS_PART_TARGET_POS_MASK | PSYS_PART_EMISSIVE_MASK | PSYS_PART_FOLLOW_SRC_MASK, PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_DROP, - PSYS_PART_START_SCALE, <0.3, 0.3, 0.1>, + PSYS_PART_START_SCALE, (vector) getSetting("leash_size"), PSYS_SRC_ACCEL, <0,0,-0.4>, PSYS_PART_MAX_AGE, age, PSYS_SRC_BURST_RADIUS, 0.1, @@ -817,6 +900,7 @@ goto(key this) if (NULL_KEY == this) return; + RANGE = (float) getSetting("leash_range"); float dist = 0.0; vector pos = getRange(this); diff --git a/~1ring.command.data.txt b/~1ring.command.data.txt index 9a84f73..ffd190e 100644 --- a/~1ring.command.data.txt +++ b/~1ring.command.data.txt @@ -34,6 +34,21 @@ ho 1ring.GRAB 9 +1ring.LEASH_BIGGER + +9 +1ring.LEASH_SMALLER + +9 +1ring.LEASH_LONGER + +9 +1ring.LEASH_SHORTER + +9 +1ring.LEASH_TEXTURE + +9 1ring.LEASH ho 9 diff --git a/~1ring.setting.data.txt b/~1ring.setting.data.txt index db010f4..38e4252 100644 --- a/~1ring.setting.data.txt +++ b/~1ring.setting.data.txt @@ -16,7 +16,7 @@ I 9 1ring.PREFIX S -1r + 9 1ring.GROUP Y @@ -30,6 +30,14 @@ Y S leash_chain 9 +1ring.LEASH_SIZE +S +<0.1, 0.1, 0.1> +9 +1ring.LEASH_RANGE +I +4 +9 1ring.HIDE Y 0 -- cgit v1.1