Coder Social home page Coder Social logo

opencollar's Introduction

Welcome to OpenCollar

OpenCollar is a set of LSL scripts and related content (such as animations, sounds, textures, graphics and 3D models) created for SecondLife. It has many features, but most are centered on one avatar voluntarily giving some degree of control to another.

OpenCollar Needs Your Help

OpenCollar is non-profit and community driven. Its creators and maintainers donate their time and talents free of charge. If you would like to give back, consider taking a look at our open issues and see where you can pitch in. You can also join the official OpenCollar group in Second Life and ask the community there how you can help support the project.

Finding your way around this repo

This repository is separated into resources, source code and web queries. The directory names are self-explanatory and each has a readme attached that tells about specific details. Resource subdirectories inform which file formats we work with and point to other free software that can be used to create such content.

./opencollar/

    > res: Resource of creative content.

        > anims: Motions and Animations as .bvh and .avm binaries.
        > models: 3D Models as .dae and .blend binaries.
        > sounds: Sounds as .wav and .aup binaries.
        > textures: Images as .png and .xcf binaries.

    > src: Source code

        > ao: The source code for the animation overrider.
        > Apps: The source code for optional apps!
        > collar: The source code for the collar device.
        > installer: The source code for the package manager.
        > remote: The source code for the remote control HUD.
        > spares: Spares and snippets for research and development.
        > cuffs: Where the cuff source code is.
             > Collar_Plugin: The plugin which should reside in the collar itself.
             > Right_wrist: The scripts that go into the right wrist cuff. This is the main cuff source code.
             > Slave_cuffs: Other cuffs which should not contain the main scripts

    > web: Web queries.

Licensing Information

Scripts are all under the GNU General Public License, version 2. Other resources are either public domain or under the Creative Commons Attribution-ShareAlike 4.0 International Public License For full details, see the LICENSE file.

opencollar's People

Contributors

banedarrow avatar buildersbrewery avatar dependabot[bot] avatar felkami avatar garvintwine avatar joystipe avatar jwenting avatar karoweirsider avatar kristenmynx avatar kyrahabattoir avatar lillith-xue avatar littlemousy avatar lyseah avatar mailani19 avatar medea-destiny avatar nirea avatar northglenwalker avatar opencollarupdates avatar pingout avatar rayzopf avatar reubenshaffer2 avatar romkaswallowtail avatar satomiahn avatar silkiesabra avatar stormedstormy avatar sumiperl avatar tayaphidoux avatar toywylie avatar wendystarfall avatar zontreck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opencollar's Issues

command to output script build numbers

What version of OpenCollar are you using?
7.0 Beta 3

What behavior did you expect?
Feature Request - Not a bug

It might be helpful for support purposes to have an advanced 'version' command that causes all scripts to report their specific build numbers so we can more easily determine what version of scripts someone is running; I know I've run into a few situations with very odd problems where it turned out that they had somehow added an old version of some random script into a current collar build (or similar scenarios). (this would be a different command from 'version' that reports the generic version number that we're all used to) - If possible it would also be great if that script could also check and report on the properties of the scripts to see if they have been modified.

Remove Kyrah Abattoir's mesh files

This user has indicated that she wants to withdraw the mesh design that she contributed a while back (the simple round collar with a ring on the front). While we could perhaps fight this, it's probably not worth it, so let's figure out which files those are and remove them.

Ability that the collar tells in public that it was touched by foreigner

What version of OpenCollar are you using?
OC7dev2

What behavior did you expect?

Like many other objects in SL which people are wearing the collar should be able to tell in open chat. a lot of objects to that. the OC should be able to tell that is was touched by a foreigner. and what it tells should be configurable. here is a sample how the Dari's Haus Collars does that: " .... runs their finger along SLAVENAME's collar. Her/His Owners might not appreciate such overt familiarity."

this feature should be able to be disabled for those who might consider that as spam or does not wish that for other reasons. the function for that already exists, a collar can notify the slave that her/his collar was touched by a foreigner. it simlply needs to be expanded to the public or not. this should also be configurable.

Create Sub AO release

We should put together a release of the sub AO and make it available through our vendors.

Revert to pre-Apache license?

There are a few scripts that VD claims are under the Apache license rather than GPL 2. We should consider reverting to the last version that was pure GPL. Is it worth it? List pros and cons here.

Fix branding

There are a number of VirtualDisgrace-specific links still in the code that need to be fixed. There are also confusing references to "OpenCollar Six" as though it's distinct from OpenCollar. We really don't want to stay on version 6 forever, so let's return those references to just be "OpenCollar".

Use Github Pages for new website

The old opencollar.at domain is not under the control of the official OpenCollar team, so we should set up a new website. I think using a Jekyll-based Github Pages site would be the simplest option. If anyone wants to set up a skeleton for that, please send a pull request!

Should we have the "Disable Runaway" option in core code?

What version of OpenCollar are you using?
7.0 Beta 3
What behavior did you expect?
Enhancement request: Not a defect

There is code in the collar currently that disables the option for the wearer to runaway - Is that something we want to include in core code?

Bookmarks

May we add back in bookmarks, and delete the scripted-in Temple and Sidekick default bookmarks, and do we need to add a default bookmark or can it go out with that blank?

Change global defined lists in oc_undress to csv strings

Currently in oc_undress there are three global defined lists: LOCK_CLOTH_POINTS, DETACH_CLOTH_POINTS, ATTACH_POINTS
Using by the memory usage stats from http://wiki.secondlife.com/wiki/LSL_Script_Memory, these lists use a huge chunk of memory.

LOCK_CLOTH_POINTS
16 items with 92 total characters: 15 + (16 * 18) + (92 * 2) = 487 bytes

DETACH_CLOTH_POINTS
16 items with 83 total characters: 15 + (16 * 18) + (83 * 2) = 469 bytes

ATTACH_POINTS
41 items with 350 total characters: 15 + (41 * 18) + (350 * 2) = 1453 bytes

TOTAL: 1453 + 469 + 487 = 2409 bytes

Storing these lists as CSV Strings would use only 632 bytes
LOCK_CLOTH_POINTS
108 characters + 12 base for string = 120

DETACH_CLOTH_POINTS
98 characters + 12 base for string = 110

ATTACH_POINTS
390 characters + 12 base for string = 402

TOTAL: 120 + 110 + 402 = 632 bytes

DIFFERENCE: 1777 bytes

It may or may not be a viable solution as there would need to be some on-the fly conversions to lists to retain functionality.

OC7 Leashes, Leash Posts, and the 'GrabbyPost' not compatible

What version of OpenCollar are you using? 7.0

What behavior did you expect?
The 'Grabbypost' to leash a collar on collision or via the 'scan' option by touching the post. ALSO expected old leash behavior with the ability to click on a leash post to pass a leash to the post

What behavior did you see instead?
GrabbyPost communicates on the wrong channel to interact with OC7. OC7 does not return a 'pong' message on the post's channel, but rather uses an avatar specific channel. Clicking on a leash post with a leash in hand results in nothing happening, leashes do not 'transfer' to leash posts.

What steps does someone need to take to reproduce the problem?
Attempt to use an OC GrabbyPost or wear a collar and have someone(or themselves) hold their leash before clicking a readily available leash post.

Open Collar Remote 6.6.0 No Mod Script

What version of OpenCollar are you using? OC 7.0beta8

What behavior did you expect? n/a

What behavior did you see instead? n/a

What steps does someone need to take to reproduce the problem? n/a

** There is a no mod script in the remote 6.6.0 named "vd_remote_accessory". No idea why it is there or what it does. I did delete it from the contents and the remotes appears to still be working just fine with the OC 7.0beta8. It might be worth checking into, if possible.

Remove unused variables and functions

Running lslint on the repo uncovers a lot of variables and functions that aren't used anymore. We could save memory by cleaning those up.


bin/lslint -p src/ao/oc_ao.lsl
src/ao/oc_ao.lsl:: WARN:: ( 14,  8): variable `g_sPendingCmd' declared but never used.
src/ao/oc_ao.lsl:: WARN:: ( 71,  8): variable `g_sTexture' declared but never used.
src/ao/oc_ao.lsl:: WARN:: (520, 20): variable `sMessage' declared but never used.
src/ao/oc_ao.lsl:: WARN:: (679, 37): Declaration of `iTemp' in this scope shadows previous declaration at (673, 29)
TOTAL:: Errors: 0  Warnings: 4

bin/lslint -p src/collar/oc_anim.lsl
src/collar/oc_anim.lsl:: WARN:: ( 68,  9): variable `RLV_ON' declared but never used.
src/collar/oc_anim.lsl:: WARN:: ( 74,  7): variable `g_fHover' declared but never used.
src/collar/oc_anim.lsl:: WARN:: (175, 31): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 3

bin/lslint -p src/collar/oc_auth.lsl
src/collar/oc_auth.lsl:: WARN:: ( 24,  6): variable `g_lQueryId' declared but never used.
src/collar/oc_auth.lsl:: WARN:: ( 25,  9): variable `g_iQueryStride' declared but never used.
src/collar/oc_auth.lsl:: WARN:: ( 35,  9): variable `CMD_SAFEWORD' declared but never used.
src/collar/oc_auth.lsl:: WARN:: (338, 37): variable `iAttachment' declared but never used.
src/collar/oc_auth.lsl:: WARN:: (638, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 5

bin/lslint -p src/collar/oc_bell.lsl
src/collar/oc_bell.lsl:: WARN:: ( 57,  9): variable `CMD_EVERYONE' declared but never used.
src/collar/oc_bell.lsl:: WARN:: ( 73,  9): variable `LM_SETTING_DELETE' declared but never used.
src/collar/oc_bell.lsl:: WARN:: (314, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 3

bin/lslint -p src/collar/oc_capture.lsl
src/collar/oc_capture.lsl:: WARN:: ( 34,  9): variable `LM_SETTING_REQUEST' declared but never used.
src/collar/oc_capture.lsl:: WARN:: ( 37,  9): variable `LM_SETTING_EMPTY' declared but never used.
src/collar/oc_capture.lsl:: WARN:: (275, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 3

bin/lslint -p src/collar/oc_com.lsl
src/collar/oc_com.lsl:: WARN:: ( 52,  9): variable `ANIM_LIST_REQUEST' declared but never used.
src/collar/oc_com.lsl:: WARN:: (478, 28): Declaration of `sName' in this scope shadows previous declaration at (394, 34)
TOTAL:: Errors: 0  Warnings: 2

bin/lslint -p src/collar/oc_couples.lsl
src/collar/oc_couples.lsl:: WARN:: ( 28,  9): variable `card1line1' declared but never used.
src/collar/oc_couples.lsl:: WARN:: ( 29,  9): variable `card1line2' declared but never used.
src/collar/oc_couples.lsl:: WARN:: ( 62,  9): variable `CMD_GROUP' declared but never used.
src/collar/oc_couples.lsl:: WARN:: (334, 25): variable `iPage' declared but never used.
src/collar/oc_couples.lsl:: WARN:: (377, 32): variable `sCommand' declared but never used.
src/collar/oc_couples.lsl:: WARN:: (510, 57): Changing state to current state acts the same as return. (SL1.8.3)
                    If this is what you intended, consider using return instead.
src/collar/oc_couples.lsl:: WARN:: (511, 57): Changing state to current state acts the same as return. (SL1.8.3)
TOTAL:: Errors: 0  Warnings: 7

bin/lslint -p src/collar/oc_dialog.lsl
src/collar/oc_dialog.lsl:: WARN:: (290, 16): Suggest parentheses around assignment used as truth value.
TOTAL:: Errors: 0  Warnings: 1

bin/lslint -p src/collar/oc_exceptions.lsl
src/collar/oc_exceptions.lsl:: WARN:: ( 82,  9): variable `g_iAuth' declared but never used.
src/collar/oc_exceptions.lsl:: WARN:: (116,  9): variable `RLV_CMD' declared but never used.
src/collar/oc_exceptions.lsl:: WARN:: (117,  9): variable `RLV_REFRESH' declared but never used.
src/collar/oc_exceptions.lsl:: WARN:: (119,  9): variable `RLV_VERSION' declared but never used.
src/collar/oc_exceptions.lsl:: WARN:: (136,  5): variable `REQUEST_KEY' declared but never used.
src/collar/oc_exceptions.lsl:: WARN:: (162, 22): variable `sWho' declared but never used.
src/collar/oc_exceptions.lsl:: WARN:: (345, 13): variable `iN2K' declared but never used.
src/collar/oc_exceptions.lsl:: WARN:: (479, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 8

bin/lslint -p src/collar/oc_folders.lsl
src/collar/oc_folders.lsl:: WARN:: ( 43,  9): variable `RLV_REFRESH' declared but never used.
src/collar/oc_folders.lsl:: WARN:: ( 45,  9): variable `RLV_VERSION' declared but never used.
src/collar/oc_folders.lsl:: WARN:: (101,  8): variable `g_sScript' declared but never used.
src/collar/oc_folders.lsl:: WARN:: (462, 12): variable `sCommand' declared but never used.
src/collar/oc_folders.lsl:: WARN:: (463, 12): variable `sValue' declared but never used.
src/collar/oc_folders.lsl:: WARN:: (680, 29): Declaration of `i' in this scope shadows previous declaration at (674, 21)
TOTAL:: Errors: 0  Warnings: 6

bin/lslint -p src/collar/oc_label.lsl
src/collar/oc_label.lsl:: WARN:: ( 41,  9): variable `LM_SETTING_DELETE' declared but never used.
src/collar/oc_label.lsl:: WARN:: ( 75,  7): variable `g_iRotIncrement' declared but never used.
src/collar/oc_label.lsl:: WARN:: (105,  9): variable `DISPLAY_STRING' declared but never used.
src/collar/oc_label.lsl:: WARN:: (106,  9): variable `DISPLAY_EXTENDED' declared but never used.
src/collar/oc_label.lsl:: WARN:: (107,  9): variable `REMAP_INDICES' declared but never used.
src/collar/oc_label.lsl:: WARN:: (108,  9): variable `RESET_INDICES' declared but never used.
src/collar/oc_label.lsl:: WARN:: (110,  9): variable `SET_FONT_TEXTURE' declared but never used.
src/collar/oc_label.lsl:: WARN:: (113,  9): variable `RESCAN_LINKSET' declared but never used.
src/collar/oc_label.lsl:: WARN:: (116,  9): variable `ESCAPE_SEQUENCE' declared but never used.
src/collar/oc_label.lsl:: WARN:: (119,  9): variable `EXTENDED_INDEX' declared but never used.
src/collar/oc_label.lsl:: WARN:: (236,  9): function `ConvertIndex' declared but never used.
src/collar/oc_label.lsl:: WARN:: (347, 16): Declaration of `sText' in this scope shadows previous declaration at (333, 12)
src/collar/oc_label.lsl:: WARN:: (515, 17): variable `ok' declared but never used.
src/collar/oc_label.lsl:: WARN:: (557, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 14

bin/lslint -p src/collar/oc_leash.lsl
src/collar/oc_leash.lsl:: WARN:: ( 44,  9): variable `MENUNAME_REMOVE' declared but never used.
src/collar/oc_leash.lsl:: WARN:: ( 86,  8): variable `g_sTmpName' declared but never used.
src/collar/oc_leash.lsl:: WARN:: (106,  6): variable `g_lRestrictionNames' declared but never used.
src/collar/oc_leash.lsl:: WARN:: (433, 16): variable `sVal2' declared but never used.
TOTAL:: Errors: 0  Warnings: 4

bin/lslint -p src/collar/oc_meshlabel.lsl
src/collar/oc_meshlabel.lsl:: WARN:: ( 18,  9): variable `CMD_ZERO' declared but never used.
src/collar/oc_meshlabel.lsl:: WARN:: ( 23,  9): variable `CMD_EVERYONE' declared but never used.
src/collar/oc_meshlabel.lsl:: WARN:: ( 39,  9): variable `LM_SETTING_DELETE' declared but never used.
src/collar/oc_meshlabel.lsl:: WARN:: (218, 16): Declaration of `sText' in this scope shadows previous declaration at (205, 12)
src/collar/oc_meshlabel.lsl:: WARN:: (402, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 5

bin/lslint -p src/collar/oc_particle.lsl
src/collar/oc_particle.lsl:: WARN:: ( 54,  8): variable `L_TEXTURE' declared but never used.
src/collar/oc_particle.lsl:: WARN:: ( 65,  8): variable `L_COSTUM_TEX_ID' declared but never used.
src/collar/oc_particle.lsl:: WARN:: ( 80,  9): variable `g_iLeasherInRange' declared but never used.
src/collar/oc_particle.lsl:: WARN:: ( 81,  9): variable `g_iAwayCounter' declared but never used.
src/collar/oc_particle.lsl:: WARN:: (106,  7): variable `g_fParticleAlpha' declared but never used.
src/collar/oc_particle.lsl:: WARN:: (254,  1): function `SaveDefaultSettings' declared but never used.
src/collar/oc_particle.lsl:: WARN:: (325,  9): function `KeyIsAv' declared but never used.
src/collar/oc_particle.lsl:: WARN:: (371, 12): variable `defaultsize' declared but never used.
TOTAL:: Errors: 0  Warnings: 8

bin/lslint -p src/collar/oc_relay.lsl
src/collar/oc_relay.lsl:: WARN:: ( 23,  9): variable `CMD_SAFEWORD' declared but never used.
src/collar/oc_relay.lsl:: WARN:: ( 80,  9): variable `g_iListener' declared but never used.
src/collar/oc_relay.lsl:: WARN:: (658, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 3

bin/lslint -p src/collar/oc_resizer.lsl
src/collar/oc_resizer.lsl:: WARN:: (287, 12): variable `sValue' declared but never used.
src/collar/oc_resizer.lsl:: WARN:: (336, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 2

bin/lslint -p src/collar/oc_rlvsuite.lsl
src/collar/oc_rlvsuite.lsl:: WARN:: ( 41,  8): variable `bluriness' declared but never used.
src/collar/oc_rlvsuite.lsl:: WARN:: ( 88,  9): variable `RLV_REFRESH' declared but never used.
src/collar/oc_rlvsuite.lsl:: WARN:: (223,  1): function `RemAttached' declared but never used.
src/collar/oc_rlvsuite.lsl:: WARN:: (669, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 4

bin/lslint -p src/collar/oc_rlvsys.lsl
src/collar/oc_rlvsys.lsl:: WARN:: ( 34,  9): variable `CMD_GROUP' declared but never used.
src/collar/oc_rlvsys.lsl:: WARN:: ( 36,  9): variable `CMD_EVERYONE' declared but never used.
src/collar/oc_rlvsys.lsl:: WARN:: ( 52,  9): variable `LM_SETTING_DELETE' declared but never used.
src/collar/oc_rlvsys.lsl:: WARN:: (268, 14): variable `lParts' declared but never used.
src/collar/oc_rlvsys.lsl:: WARN:: (438, 25): variable `iPage' declared but never used.
src/collar/oc_rlvsys.lsl:: WARN:: (541, 37): variable `numRestrictions' declared but never used.
TOTAL:: Errors: 0  Warnings: 6

bin/lslint -p src/collar/oc_settings.lsl
src/collar/oc_settings.lsl:: WARN:: ( 30,  9): variable `CMD_WEARER' declared but never used.
src/collar/oc_settings.lsl:: WARN:: ( 96,  6): function `AddSetting' declared but never used.
src/collar/oc_settings.lsl:: WARN:: (109,  6): function `ListCombineEntries' declared but never used.
TOTAL:: Errors: 0  Warnings: 3

bin/lslint -p src/collar/oc_sys.lsl
src/collar/oc_sys.lsl:: WARN:: ( 30,  9): variable `CMD_EVERYONE' declared but never used.
src/collar/oc_sys.lsl:: WARN:: (110,  8): variable `g_sWorldAPI' declared but never used.
src/collar/oc_sys.lsl:: WARN:: (172,  8): function `NameGroupURI' declared but never used.
src/collar/oc_sys.lsl:: WARN:: (547, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 4

bin/lslint -p src/collar/oc_themes.lsl
src/collar/oc_themes.lsl:: WARN:: ( 33,  5): variable `g_kTouchID' declared but never used.
src/collar/oc_themes.lsl:: WARN:: ( 41,  9): variable `CMD_EVERYONE' declared but never used.
src/collar/oc_themes.lsl:: WARN:: ( 49,  9): variable `LM_SETTING_DELETE' declared but never used.
src/collar/oc_themes.lsl:: WARN:: ( 65,  9): variable `TOUCH_REQUEST' declared but never used.
src/collar/oc_themes.lsl:: WARN:: ( 73,  6): variable `g_lHide' declared but never used.
src/collar/oc_themes.lsl:: WARN:: (476, 38): Declaration of `lParams' in this scope shadows previous declaration at (312, 10)
src/collar/oc_themes.lsl:: WARN:: (546, 25): variable `iPage' declared but never used.
src/collar/oc_themes.lsl:: WARN:: (550, 22): variable `lMenuPath' declared but never used.
src/collar/oc_themes.lsl:: WARN:: (669, 42): Declaration of `commands' in this scope shadows previous declaration at (91, 6)
TOTAL:: Errors: 0  Warnings: 9

bin/lslint -p src/collar/oc_titler.lsl
src/collar/oc_titler.lsl:: WARN:: (255, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 1

bin/lslint -p src/installer/oc_installer_bundles.lsl
src/installer/oc_installer_bundles.lsl:: WARN:: ( 61,  9): Condition is always false.
src/installer/oc_installer_bundles.lsl:: WARN:: ( 71, 14): variable `sMsg' declared but never used.
TOTAL:: Errors: 0  Warnings: 2

bin/lslint -p src/installer/oc_installer_sys.lsl
src/installer/oc_installer_sys.lsl:: WARN:: ( 49,  5): variable `g_kDialogID' declared but never used.
src/installer/oc_installer_sys.lsl:: WARN:: ( 93, 14): variable `str' declared but never used.
src/installer/oc_installer_sys.lsl:: WARN:: (109, 13): variable `i' declared but never used.
src/installer/oc_installer_sys.lsl:: WARN:: (274, 17): Condition is always false.
src/installer/oc_installer_sys.lsl:: WARN:: (307, 17): Condition is always false.
TOTAL:: Errors: 0  Warnings: 5

bin/lslint -p src/installer/oc_update_shim.lsl
src/installer/oc_update_shim.lsl:: WARN:: ( 36,  9): variable `LM_SETTING_REQUEST' declared but never used.
src/installer/oc_update_shim.lsl:: WARN:: ( 39,  9): variable `LM_SETTING_EMPTY' declared but never used.
src/installer/oc_update_shim.lsl:: WARN:: ( 41, 14): variable `msg' declared but never used.
src/installer/oc_update_shim.lsl:: WARN:: (108, 20): Declaration of `sName' in this scope shadows previous declaration at (102, 37)
TOTAL:: Errors: 0  Warnings: 4

bin/lslint -p src/remote/oc_remote_bookmarks.lsl
src/remote/oc_remote_bookmarks.lsl:: WARN:: ( 12,  9): variable `IN_DEBUG_MODE' declared but never used.
src/remote/oc_remote_bookmarks.lsl:: WARN:: ( 35,  9): variable `g_kCommander' declared but never used.
src/remote/oc_remote_bookmarks.lsl:: WARN:: ( 96, 10): variable `lParams' declared but never used.
src/remote/oc_remote_bookmarks.lsl:: WARN:: (410, 21): variable `kAv' declared but never used.
src/remote/oc_remote_bookmarks.lsl:: WARN:: (412, 25): variable `iPage' declared but never used.
src/remote/oc_remote_bookmarks.lsl:: WARN:: (413, 25): variable `iAuth' declared but never used.
src/remote/oc_remote_bookmarks.lsl:: WARN:: (414, 22): variable `lParams' declared but never used.
TOTAL:: Errors: 0  Warnings: 7

bin/lslint -p src/remote/oc_remote_dialog.lsl
src/remote/oc_remote_dialog.lsl:: WARN:: (164, 12): Suggest parentheses around assignment used as truth value.
TOTAL:: Errors: 0  Warnings: 1

bin/lslint -p src/remote/oc_remote_options.lsl
src/remote/oc_remote_options.lsl:: WARN:: ( 12,  9): variable `MENUNAME_REQUEST' declared but never used.
src/remote/oc_remote_options.lsl:: WARN:: ( 13,  9): variable `MENUNAME_RESPONSE' declared but never used.
src/remote/oc_remote_options.lsl:: WARN:: ( 17,  9): variable `DIALOG_TIMEOUT' declared but never used.
src/remote/oc_remote_options.lsl:: WARN:: (292, 21): Declaration of `iTemp' in this scope shadows previous declaration at (285, 13)
TOTAL:: Errors: 0  Warnings: 4

bin/lslint -p src/remote/oc_remote_sys.lsl
src/remote/oc_remote_sys.lsl:: WARN:: ( 38,  9): variable `g_iHidden' declared but never used.
src/remote/oc_remote_sys.lsl:: WARN:: ( 40,  8): variable `g_sPictureID' declared but never used.
src/remote/oc_remote_sys.lsl:: WARN:: ( 54,  9): variable `DIALOG_TIMEOUT' declared but never used.
src/remote/oc_remote_sys.lsl:: WARN:: (123, 21): Declaration of `i' in this scope shadows previous declaration at (115, 13)
TOTAL:: Errors: 0  Warnings: 4

bin/lslint -p src/spares/oc_badwords.lsl
TOTAL:: Errors: 0  Warnings: 0

bin/lslint -p src/spares/oc_bookmarks.lsl
src/spares/oc_bookmarks.lsl:: WARN:: ( 14,  9): variable `IN_DEBUG_MODE' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (124, 10): variable `lParams' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (253, 38): variable `kAv' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (253, 51): variable `iAuth' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (482, 25): variable `iPage' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (484, 22): variable `lParams' declared but never used.
TOTAL:: Errors: 0  Warnings: 6

bin/lslint -p src/spares/oc_cagehome.lsl
src/spares/oc_cagehome.lsl:: WARN:: (248,  9): variable `g_iTP_Timer' declared but never used.
src/spares/oc_cagehome.lsl:: WARN:: (292,  1): function `DebugCurrentState' declared but never used.
src/spares/oc_cagehome.lsl:: WARN:: (293,  9): Condition is always false.
src/spares/oc_cagehome.lsl:: WARN:: (296,  9): Condition is always false.
src/spares/oc_cagehome.lsl:: WARN:: (587, 16): Empty if statement.
TOTAL:: Errors: 0  Warnings: 5

bin/lslint -p src/spares/oc_camera.lsl
src/spares/oc_camera.lsl:: WARN:: ( 16,  5): variable `g_kMenuID' declared but never used.
src/spares/oc_camera.lsl:: WARN:: ( 18,  7): variable `g_fReapeat' declared but never used.
src/spares/oc_camera.lsl:: WARN:: (154, 17): Declaration of `g_vCamPos' in this scope shadows previous declaration at (22, 8)
src/spares/oc_camera.lsl:: WARN:: (154, 37): Declaration of `g_rCamRot' in this scope shadows previous declaration at (23, 10)
src/spares/oc_camera.lsl:: WARN:: (329, 17): Declaration of `g_fReapeat' in this scope shadows previous declaration at (18, 7)
TOTAL:: Errors: 0  Warnings: 5

bin/lslint -p src/spares/oc_customizer.lsl
src/spares/oc_customizer.lsl:: WARN:: ( 20,  9): variable `REBOOT' declared but never used.
TOTAL:: Errors: 0  Warnings: 1

bin/lslint -p src/spares/oc_garble.lsl
TOTAL:: Errors: 0  Warnings: 0

bin/lslint -p src/spares/oc_grabbypost.lsl
src/spares/oc_grabbypost.lsl:: WARN:: (205, 20): Declaration of `name' in this scope shadows previous declaration at (157, 29)
TOTAL:: Errors: 0  Warnings: 1

bin/lslint -p src/spares/oc_remote_leashpost.lsl
src/spares/oc_remote_leashpost.lsl:: WARN:: ( 59, 13): Declaration of `kID' in this scope shadows previous declaration at (54, 48)
TOTAL:: Errors: 0  Warnings: 1

bin/lslint -p src/spares/oc_rlvcmd.lsl
src/spares/oc_rlvcmd.lsl:: WARN:: (204,  8): variable `g_lOwnerSpecifics' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (208,  9): variable `g_sScript' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (276,  9): variable `RLV_REFRESH' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (277,  9): variable `RLV_CLEAR' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (278,  9): variable `RLV_VERSION' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (282,  9): variable `RLV_QUERY' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (283,  9): variable `RLV_RESPONSE' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (296,  9): variable `DIALOG_TIMEOUT' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (397, 13): variable `i' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (650, 28): Declaration of `sStr' in this scope shadows previous declaration at (595, 56)
TOTAL:: Errors: 0  Warnings: 10

bin/lslint -p src/spares/oc_rlvstuff.lsl
src/spares/oc_rlvstuff.lsl:: WARN:: ( 82,  9): variable `LM_SETTING_REQUEST' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: ( 85,  9): variable `LM_SETTING_EMPTY' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (101,  9): variable `SENSORDIALOG' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (192,  8): function `GetSetting' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (299, 14): variable `lChange' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (316, 33): variable `iIndex' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (354, 21): variable `iChange' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (388, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 8

bin/lslint -p src/spares/oc_safezone.lsl
src/spares/oc_safezone.lsl:: WARN:: ( 16,  9): variable `g_iTakeMe' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 17,  9): variable `g_iOpenAccess' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 29,  9): variable `COMMAND_SECOWNER' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 31,  9): variable `COMMAND_WEARER' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 32,  9): variable `COMMAND_EVERYONE' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 33,  9): variable `COMMAND_RLV_RELAY' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 35,  9): variable `COMMAND_RELAY_SAFEWORD' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 36,  9): variable `COMMAND_BLACKLIST' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 40,  9): variable `LM_SETTING_REQUEST' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 43,  9): variable `LM_SETTING_EMPTY' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 48,  9): variable `MENUNAME_REMOVE' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 53,  9): variable `DIALOG_TIMEOUT' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: (207, 20): Declaration of `sRegion' in this scope shadows previous declaration at (205, 16)
src/spares/oc_safezone.lsl:: WARN:: (207, 20): variable `sRegion' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: (308, 25): variable `iPage' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: (346, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 16

bin/lslint -p src/spares/oc_shocker.lsl
src/spares/oc_shocker.lsl:: WARN:: (134, 29): variable `iAuth' declared but never used.
src/spares/oc_shocker.lsl:: WARN:: (145, 25): variable `kID' declared but never used.
TOTAL:: Errors: 0  Warnings: 2

bin/lslint -p src/spares/oc_timer.lsl
src/spares/oc_timer.lsl:: WARN:: ( 18,  9): variable `CMD_EVERYONE' declared but never used.
src/spares/oc_timer.lsl:: WARN:: ( 24,  9): variable `ATTACHMENT_COMMAND' declared but never used.
src/spares/oc_timer.lsl:: WARN:: ( 38,  9): variable `LM_SETTING_SAVE' declared but never used.
src/spares/oc_timer.lsl:: WARN:: ( 40,  9): variable `LM_SETTING_DELETE' declared but never used.
src/spares/oc_timer.lsl:: WARN:: (494, 21): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 5

bin/lslint -p src/spares/oc_undress.lsl
src/spares/oc_undress.lsl:: WARN:: ( 16,  8): variable `SELECT_CURRENT' declared but never used.
src/spares/oc_undress.lsl:: WARN:: ( 17,  8): variable `SELECT_RECURS' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (139,  9): variable `RLV_CMD' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (142,  9): variable `RLV_VERSION' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (338, 20): variable `sValue' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (614, 12): variable `opt1' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (615, 12): variable `opt2' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (716, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 8

bin/lslint -p src/spares/oc_update_cleaner.lsl
TOTAL:: Errors: 0  Warnings: 0

Easy free pull requests for use in other SL type grids.

After spending the last 4 years supporting the OC project (3.99x code) on most other SL type grids I would like to propose this as an opportunity to also make the latest OC code available to easy forking over for use on other grids.
Main changes would be just under the license part of the script to add the grid specific section of the constants like sound UUID's, textures UUID's etc so these can be easily found and changed for each grid.
It would also need some minor code changes as some command usage do not exist in the OSSL (OpenSim Script Language) or PHLOX script engines, IE in mono "if ( (key)Kid )" is used to check if the Kid is a valid UUID does not exist on other systems so you have to either check string length or llParseString2List(Kid, ["-"], []); and count the list length.
I would be happy to look into this myself to feed back into the main project if excepted

Third party plugins beginning with 'oc_' that are not full perm cause messages about wrong permissions

What version of OpenCollar are you using?
I tried updating a 6.6.3 collar

What behavior did you expect?
With third party plugins messages i dont expect the installer or collar to yell at me about wrong permissions for third party plugins, they should be left alone and ignored

What behavior did you see instead?
I got various messages about wrong permissions with third party plugins like:

Clit Ring Gold/Silver 6.6.3 (pelvis): The oc_sobriquet script is not mod/copy/trans. This is a violation of the OpenCollar license. Please ask the person who gave you this script for a full-perms replacement.
Clit Ring Gold/Silver 6.6.3 (pelvis): You have removed mod/copy/trans permissions for the next owner of the oc_sobriquet script. This is a violation of the OpenCollar license. Please make the script full perms again.

The check just loops through scripts starting with the prefix "oc_" which some third party plugins also use, perhaps its better to have a list of core scripts and loop only through that list, this way you could tell "oc_xxx is missing for core functionality, please add oc_xxx"

What steps does someone need to take to reproduce the problem?
Use a collar that contains third party plugins that are not full perm and install at least Update 7.0 beta4

OC conflict with Firestorm AO

What version of OpenCollar are you using?
7.0 Beta 3
What behavior did you expect?
Stop RLV Poses
What behavior did you see instead?
Found another issue... When using the RLV Poses, and you stop them, it activates the Firestorm builtin AO...Example, if you have dances in the firestorm builtin AO and use the collar poses. When you stop them, the Firestorm AO auto starts and puts the wearer into a dance...
What steps does someone need to take to reproduce the problem?

  1. Activate collar menu
  2. Click Animations --> Pose
  3. Set wearer in any pose.
  4. Choose STOP (to stop the pose)
  5. Firestorm AO auto checks itself and wearer starts the first animation in their built-in AO

Scripted Prims named "Object"

While editing the Settings page for the User Guide I noted that the OpenCollar 7.0 does not have dedicated names for the child prims containing the scripts.

I'm not sure how the listen events work more efficiently without dedicated prim names or link numbers but that's not for me to worry about. But it certainly would be much easier to explain how to add animations and save settings if these prims, which many users have to find, had names.

Add CONTRIBUTORS file

In my branding cleanup I also cleaned out the ASCII art headers in all the files. I left comments about particular scripts being based on some earlier work.

In place of having a contributor list in each source file, let's simplify and have just one project-wide CONTRIBUTORS file. We can compile that from the headers in the old version. We should also instruct new contributors to add their names when they send a pull request.

Note that this is more about recognizing people's contributions than it is about asserting copyrights. The copyright notices in the files were never legally valid or useful anyway, since they didn't use the names of legal entities. (See http://info.legalzoom.com/correctly-format-copyright-20057.html.) A single CONTRIBUTORS file is cleaner, lower maintenance, and more common in the open source world.

oc_meshthemes should implement hide/show/stealth

The new oc_meshthemes script simplifies our theme support (for single-prim mesh collars, specifically). But since it replaces oc_themes, it should also implement the hide/show/stealth functionality from oc_themes.

Add "OPTIONAL" bundle type to updater

The updater is organized by "bundle" notecards that have two types:

  1. INSTALL or REQUIRED bundles list items and scripts that are installed to the collar on every update.
  2. REMOVE or DEPRECATED bundles list items and scripts that are removed from the collar during the update, if found.

I think we should add an OPTIONAL bundle type. It would be similar to INSTALL, but would only install the script/item if it was already present in the collar and needed to be updated.

This would primarily be useful for optional plugins like bookmarks and spy. People who have removed them from their collars wouldn't have to keep removing them after every update. People who have installed them into their collars would have them automatically updated like the rest of the scripts.

Add setting to allow wearing more than one collar at once

What version of OpenCollar are you using?
7.0 beta 3

What behavior did you expect?
Feature Request (not a bug) - Would like to make the test for other attached collars optional
(change suggested in main group by 'sweetstephy')

Provide easy ways to cycle worn subfolders.

Say you are working at dressing yourself (or your sub), and you are wondering what pair of shoes you will be wearing.

Currently, if you want to do this with OC (but it is hardly better using the viewer inventory GUI), you need to browse into your Shoes folder, then select a subfolder to wear, click on the button for wearing it, then, after deciding these are definitely not the shoes you want, click the button to unwear them, then go back to the Shoes folder, then go into the next shoes subfolders, and so on.

This is rather lengthy and unpractical.

I actually suggest 2 features to help with this:

  • add a command/button next to "wear" and "replace", that will not only attach the target folder to the avatar, but also detach all sibling folders (i.e. all folders that are at the same level, in our example: all other pairs of shoes). This should also be lifted to a new chat command for the search-and-wear framework.
  • in folders containing several wearable subfolders, when exactly one of them is worn, add 2 buttons: "cycle next" and "cycle previous". The effect would be to detach the currently worn subfolder and attach the next (or previous) one (in alphabetical order). Chat commands should also be added, such as "wearnext >Shoes" (if ">Shoes" is the folder where all the shoes are kept) and "wearprevious >Shoes".

Stack-heap collision in #RLV browsing

What version of OpenCollar are you using?
6.x and 7.0beta

What behavior did you expect?
Stack-heap collisions should never happen whatever we do.

What behavior did you see instead?
When I browse a #RLV folder with many folders, using oc_folder script, this script may crash on stack-heap collision.

What steps does someone need to take to reproduce the problem?
Prepare a large folder "TestFolder" of wearable subfolders under #RLV.
Call the command "#rlv TestFolder" and observe.
How large should TestFolder be ? That remains to determine!

Additional details: I asked the script to display its free memory on startup. It happens that merely 9854 bytes are available, which is totally not enough to do the job this script is supposed to do (to put things into perspective, a RLV query answer may be 4k chars, and some room will still be needed to analyze it).

Trying to investigate why #RLV browsing does not work when it used to, I remembered the discussion about the FailSafe() (now CheckPerms()) function in issue #44. So I deleted this function and all reference to it. Free memory on startup is now 12926 bytes (~3k more than before), which happens to be sufficient for my test folder (but still may not be for larger ones, although I suspect I could find other unnecessary things in this script).

Conclusion : this script (and maybe others) need a good clean up from any stuff that is not absolutely necessary for their core functionality.

Of course, tests could also be added in order not to overflow memory and display an error instead of crashing when memory is insufficient.

Plugin Agreement

It might encourage good scripters and content creators to build better plugins and peripherals for OpenCollar if we had a clearly spelled out plugin agreement under what conditions plugins would require the same license.. for instance if the only "opencollar derived" code they contain is the listener / handshake to the collar, the plugin script itself can be no mod; and they are allowed to sell their creations. These are two concerns many scripters i talk to have that i think could be clarified. I recently looked at Marine Kelley's extensive plugin agreement.. ours need not be so elaborate but it's worth comparing them.

Put new undress functionality into core collar

Over at #83 I made a change to the oc_undress script that makes the "Rem. Attach." menu a lot more user friendly. It's now a list of things the sub is wearing instead of a list of attach points. See https://gyazo.com/ed65f122abaf674fc09c058e9621a3e1 for how it looks now.

With this usability improvement, I think this feature would be really nice in the collar core, instead of buried deep in the menu of an optional plugin. I could add it pretty easily to the core RLV script, or we could have a new script with just this in it to add an Undress button to the RLV menu.

I propose adding this feature to the default collar, but not adding all the other stuff from oc_undress. Note that this would be useful for removing attachments like mesh clothing, but couldn't remove clothing layers or mesh body appliers.

I want others' opinions:

  1. Would you like this feature in the core collar?
  2. Do you think we should build it into the core RLV script or have it separate?

Filtering of "Detached" proposal.

This might just be an extension of the ideas from closed issue #85. I was wondering if we could throw around the idea of filtering the RLV>Detach list, to see if something could be added without making things complicated. Whether a predefined or user-defined filter list.

I made a change to the DetachMenu function (in oc_rlvsuite) my own collar with the following code. This seems to get rid of all the items I don't want to see in my specific case (since maitreya puts the word "body" in its hands and feet too). With this addition, the menu appears to go from about 1.5 seconds to load, to about 2 seconds to load. Somewhere about a half second longer.

for (n = 0; n < iStop; n++) {
    key k = llList2Key(attachmentKeys, n);

    //Added 7 lines:
    list lDetachFilters = ["nails", "body", "piercing", "head", "ears", "eyes"];
    integer keep = 1;
    integer i;
    for (i = 0; i < llGetListLength(lDetachFilters); i++) {
        string sName = llToUpper(llKey2Name(k));
        string sFilter = llToUpper(llList2String(lDetachFilters, i));
        if (~llSubStringIndex(sName, sFilter)) {  keep = 0; }
    }

    //Added " && keep":
    if (k != llGetKey() && keep) {
        g_lAttachments += [llKey2Name(k), k];
    }
}

Bear in mind, that "(nostrip)" at the end of folder names, work great to keep items from detaching in all RLV cases that I've tested (outfits, smartstrip, rlvfolders, and even this function), but this doesnt keep them from appearing in the llGetAttachedList, since its an LSL function, not RLV by itself. Also I know of no LSL function that would allow us to get get folder names of attachments to see if they have (nostrip), or a way to list whats in the #RLV.outfits.core, and use that as a filter instead. Which as far as I know leaves us with the possibility of having a predefined filter to turn off and on (such as a button that activates or deactivates filters), or reading a list from a note card, or any other suggestions that might arise.

Test/fix 'make lint' on Windows

I just added a Makefile that allows running "make lint" to check the syntax of all LSL files. It automatically downloads an OS-appropriate version of lslint and then runs it on each source file. I've tested on OSX and Linux (it will now run in CircleCI each time we commit), but I don't have access to Windows. If someone would like to get it working there, that would be awesome.

problems with the oc_label script

oc_label_SERINEA.txt
What version of OpenCollar are you using?
base coller version 7.0
oc_label version "¹⋅⁶" (taken direct from the script source)

What behavior did you expect?
I expected the label cylinders to be set showing specific letters correcponding to the label i set in the app.

What behavior did you see instead?
Of the 10 "Label~#" cylinders, Label1 to Label9 were made fully transparend, Label~10 appeared untouched.

What steps does someone need to take to reproduce the problem?
How I worked on this issue was by the following:
I was looking in to how to create a "collar" that had the basic functionality, but also things like a lock that showed, and "working" LED and label for an application I have in mind, and wanted to know the what I would require in objects needed for it.

I started out by linking 8 spheres together, then dropped the oc_collarizer script in, with an OpenCollar 7.0 updater nearby.

After the update completeed, I created a second string of balls, this time with 11 spheres, and one with FloatText in the decsription, one with Bell in the description, and one called Lock, to these 11 sphere's I added 10 cylinders, called respectively Label1 to Label10. I linked all 21 prims together, and manually copied the OpenCollar scripts into specific spheres, checking labelas as i went.

Once I had done that, I dropped the oc_collarizer script into the root prim, and it picked up the additional label cylinders, and installed the oc_label script.

I then proceeded to test the results, and saw immediately that the label wasn't working as intended.
As it was specifialy the label that wasn't working as i expected, I opened the oc_label script, making a copy in my inventory, and started looking through it, following the program code and moving around little llOwnerSay() breadcrumbs i would put in.

I tracked down that there are a couple of issues with the oc_label script, and put in work arounds to my version after unchecking the "use experience" option.

Problems found in the code of oc_label:

  1. During the running of the script, when it builds a list of Label~ prims, there is an issue that resilts in the g_lLabelLinks[0] always retaining a value of "0" therefore ending up pointing badly to the root of the object (i think) rather than to one of the label prims. in my example this list would always end up populated like [0,11,12,13,14,15,16,17,18,19,20].
  2. The issue above meant that when SetOffsets(key font) is called, the first thing it does is check the LinkID stored in g_lLabelLinks[0]. This returns a value of 0, which in this case points to a sphere, so it is not able to choose relevant offsets, and returns null or incorrect values.
  3. during the SetLabel() function, again due to the g_lLabelLinks[0] error in 1. above, the call to RenderString() gets called on prim 0, then up till the last but one label prim, resulting in incorrect setting of the label.

I have attached a copy of the oc_label script as oc_label_SERINEA.txt

that I have got working as I expect it to, it includes 2 code changes that are functionaly significant and work around this issue:

ORIGINAL
276. RenderString(llList2Integer(g_lLabelLinks, iCharPosition), llGetSubString(sText, iCharPosition, iCharPosition));

CHANGED
276. RenderString(llList2Integer(g_lLabelLinks, iCharPosition + 1), llGetSubString(sText, iCharPosition, iCharPosition));

ORIGINAL
283. integer link = llList2Integer(g_lLabelLinks, 0);

CHANGED
283. integer link = llList2Integer(g_lLabelLinks, 1);

Move auth check to oc_com and get rid of LMs for requesting auth

In a comment I posted on issue #70, I pointed the fact that if auth data was stored in prim media properties, then auth data could be obtained directly by any script without using link messages. Thus current system for requesting and obtaining auth tokens would become a useless and wasteful complication.

Thus I propose we remove this system (that is emitters and handlers of CMD_ZERO and AUTH_REQUEST LMs) and move the Auth() function from oc_auth to the almost only client of the auth system: oc_com.

I said "almost only", because oc_sys and oc_capture also use it, and oc_auth uses the Auth() directly. Fortunately it can easily be fixed.

  • oc_sys uses CMD_ZERO for "menuto", but the handler for this command can be moved to oc_com since it uses no local data
  • oc_capture has a touch_start event handler which triggers a CMD_ZERO for authing this touch. The same feature can be achieved by listening to CMD_EVERYONE "menu" messages (it's even better, since it will also react to menu requests issued by chat).
  • oc_auth uses Auth() for answering CMD_ZERO messages (of course), but also for auth'ing its own commands (for auth configuration). The later uses can be refactored so that oc_auth works in a more standard way, using the auth token it received along with the command, from either oc_com or oc_dialog.

Benefits:

  • less LMs are exchanged
  • a leaner message map
  • oc_auth becomes dead simple and has even more room for storing owners

Disadvantage:

  • oc_com becomes bigger. It should be checked whether it retains enough free memory.

help wanted: status on Gag scripts?

There was a question in the group earlier about if there was an OpenCollar gag or gag scripts in the odds and ends.
There is memories of once having a gag that we offered, as well as there being OpenGag, in a notecard by Betsy Hastings a long time ago. Suggestions, any help with what we had?

What ever we do figure out, it would need to be fully checked out and see if its still hanging in our odds and ends, and tested to see if it would work in conjunction with the current collar.

Anyone interested?

Allow wearer to be added as secondary owner

What version of OpenCollar are you using?
7.0 Beta 3

What behavior did you expect?

Currently it is not possible for the person wearing the collar to be added as a secondary owner - they are either an 'owner' (500) or 'wearer' (503) - wearer falls behind "public access" and "group" owners in the permissions hiearchy and there are many cases where owners might want the sub to be able to override restrictions placed by random people but NOT give them the authority to override the owners restrictions.

Remove unused variables and functions from spares/

I've already cleaned up unused variables and functions in the ao, collar, installer and remote scripts, but I haven't done the scripts in spares. make lint shows the following still in there:

src/spares/oc_bookmarks.lsl:: WARN:: ( 14,  9): variable `IN_DEBUG_MODE' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (124, 10): variable `lParams' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (253, 38): variable `kAv' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (253, 51): variable `iAuth' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (482, 25): variable `iPage' declared but never used.
src/spares/oc_bookmarks.lsl:: WARN:: (484, 22): variable `lParams' declared but never used.
TOTAL:: Errors: 0  Warnings: 6
src/spares/oc_cagehome.lsl:: WARN:: (248,  9): variable `g_iTP_Timer' declared but never used.
src/spares/oc_cagehome.lsl:: WARN:: (292,  1): function `DebugCurrentState' declared but never used.
src/spares/oc_cagehome.lsl:: WARN:: (293,  9): Condition is always false.
src/spares/oc_cagehome.lsl:: WARN:: (296,  9): Condition is always false.
src/spares/oc_cagehome.lsl:: WARN:: (587, 16): Empty if statement.
TOTAL:: Errors: 0  Warnings: 5
src/spares/oc_camera.lsl:: WARN:: ( 16,  5): variable `g_kMenuID' declared but never used.
src/spares/oc_camera.lsl:: WARN:: ( 18,  7): variable `g_fReapeat' declared but never used.
src/spares/oc_camera.lsl:: WARN:: (154, 17): Declaration of `g_vCamPos' in this scope shadows previous declaration at (22, 8)
src/spares/oc_camera.lsl:: WARN:: (154, 37): Declaration of `g_rCamRot' in this scope shadows previous declaration at (23, 10)
src/spares/oc_camera.lsl:: WARN:: (329, 17): Declaration of `g_fReapeat' in this scope shadows previous declaration at (18, 7)
TOTAL:: Errors: 0  Warnings: 5
src/spares/oc_customizer.lsl:: WARN:: ( 20,  9): variable `REBOOT' declared but never used.
TOTAL:: Errors: 0  Warnings: 1
TOTAL:: Errors: 0  Warnings: 0
src/spares/oc_grabbypost.lsl:: WARN:: (205, 20): Declaration of `name' in this scope shadows previous declaration at (157, 29)
TOTAL:: Errors: 0  Warnings: 1
src/spares/oc_remote_leashpost.lsl:: WARN:: ( 59, 13): Declaration of `kID' in this scope shadows previous declaration at (54, 48)
TOTAL:: Errors: 0  Warnings: 1
src/spares/oc_rlvcmd.lsl:: WARN:: (204,  8): variable `g_lOwnerSpecifics' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (208,  9): variable `g_sScript' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (276,  9): variable `RLV_REFRESH' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (277,  9): variable `RLV_CLEAR' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (278,  9): variable `RLV_VERSION' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (282,  9): variable `RLV_QUERY' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (283,  9): variable `RLV_RESPONSE' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (296,  9): variable `DIALOG_TIMEOUT' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (397, 13): variable `i' declared but never used.
src/spares/oc_rlvcmd.lsl:: WARN:: (650, 28): Declaration of `sStr' in this scope shadows previous declaration at (595, 56)
TOTAL:: Errors: 0  Warnings: 10
src/spares/oc_rlvstuff.lsl:: WARN:: ( 82,  9): variable `LM_SETTING_REQUEST' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: ( 85,  9): variable `LM_SETTING_EMPTY' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (101,  9): variable `SENSORDIALOG' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (192,  8): function `GetSetting' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (299, 14): variable `lChange' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (316, 33): variable `iIndex' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (354, 21): variable `iChange' declared but never used.
src/spares/oc_rlvstuff.lsl:: WARN:: (388, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 8
src/spares/oc_safezone.lsl:: WARN:: ( 16,  9): variable `g_iTakeMe' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 17,  9): variable `g_iOpenAccess' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 29,  9): variable `COMMAND_SECOWNER' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 31,  9): variable `COMMAND_WEARER' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 32,  9): variable `COMMAND_EVERYONE' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 33,  9): variable `COMMAND_RLV_RELAY' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 35,  9): variable `COMMAND_RELAY_SAFEWORD' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 36,  9): variable `COMMAND_BLACKLIST' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 40,  9): variable `LM_SETTING_REQUEST' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 43,  9): variable `LM_SETTING_EMPTY' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 48,  9): variable `MENUNAME_REMOVE' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: ( 53,  9): variable `DIALOG_TIMEOUT' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: (207, 20): Declaration of `sRegion' in this scope shadows previous declaration at (205, 16)
src/spares/oc_safezone.lsl:: WARN:: (207, 20): variable `sRegion' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: (308, 25): variable `iPage' declared but never used.
src/spares/oc_safezone.lsl:: WARN:: (346, 25): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 16
src/spares/oc_shocker.lsl:: WARN:: (134, 29): variable `iAuth' declared but never used.
src/spares/oc_shocker.lsl:: WARN:: (145, 25): variable `kID' declared but never used.
TOTAL:: Errors: 0  Warnings: 2
src/spares/oc_timer.lsl:: WARN:: ( 18,  9): variable `CMD_EVERYONE' declared but never used.
src/spares/oc_timer.lsl:: WARN:: ( 24,  9): variable `ATTACHMENT_COMMAND' declared but never used.
src/spares/oc_timer.lsl:: WARN:: ( 38,  9): variable `LM_SETTING_SAVE' declared but never used.
src/spares/oc_timer.lsl:: WARN:: ( 40,  9): variable `LM_SETTING_DELETE' declared but never used.
src/spares/oc_timer.lsl:: WARN:: (494, 21): variable `iPage' declared but never used.
TOTAL:: Errors: 0  Warnings: 5
src/spares/oc_undress.lsl:: WARN:: ( 16,  8): variable `SELECT_CURRENT' declared but never used.
src/spares/oc_undress.lsl:: WARN:: ( 17,  8): variable `SELECT_RECURS' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (139,  9): variable `RLV_CMD' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (142,  9): variable `RLV_VERSION' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (338, 20): variable `sValue' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (614, 12): variable `opt1' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (615, 12): variable `opt2' declared but never used.
src/spares/oc_undress.lsl:: WARN:: (716, 25): variable `iPage' declared but never used.

FYI: differences between 7.0 Distributed/Updated/Collarized

I'm uncertain if this is as intended, but here are the differences I found between the different collar types for 7.0: Distributed, Updated (from 6.4), and Collarized versions. I'm uncertain if there is an actual version here or if things could be made uniform across the board.

https://gyazo.com/f1c4770447ba263d61022bba185de618

Differences between Distributed and Updated:

  1. The distributed collar's mesh was no transfer, where the upgraded was full perm.
  2. The theme config files and scripts differed.
  3. There were two .settings files in the upgrade version that were not in the distributed version.
    Picture: https://gyazo.com/529b39dd82504d15eaca8ed91ca5cb61
    My assumption here is that the themes need to stay the same for the old opencollar 4 to 6 since they are made for that specific mesh. I was also told the settings file needs to be removed from the main prim since is needed in the same prim as the oc_settings script if its used.

Differences between the Distributed and Collarized:
https://gyazo.com/0932203012508ee13a767ab1941ed962
The cube in the center is the leashpoint, but All the other cubes were placed off to the side left side of the wearer. I moved these to the center. The leashpoint was named "leashpoint". The animations prim was named "Childprims", and the oc_dialog script prim was named the same as the primary prim. All other prims were just named Object. I went ahead and renamed these prims to the old style: Animator, OpenCollar, RLV, Settings, and Auth, like the Distributed model.

Hopefully this helps!

Rename vanilla to "Own Self"?

I think the term "vanilla" is not very intuitive to describe a configuration where the wearer retains control of the collar's functions. But maybe I'm weird. What's the community's take?

Create Remote Release

We should put together a release of the Remote and make it available through our vendors.

Switch to Firestorm preprocessor?

This is an issue that I've gone back and forth on. I used to be strongly opposed to using the Firestorm preprocessor because I wanted people to be able to just open up their collars and see the same code that they'd see on Github. Accessibility of the code for new users is important to me.

On the other hand, in going through the code tonight, I'm seeing TONS of duplication. I already knew that most scripts have the same constants at the top, but there are also text strings repeated in many places (such as telling people they need to update their collar). If we could make these scripts leaner by using Firestorm includes, that would be its own kind of accessibility improvement. At the same time, it would be a very big improvement in maintainability to be able to change such things in one place instead of many.

Thoughts on this? Downsides I'm missing?

Who clicked Collar

It may be nice to create a plugin allowing collar wearers to see who's clicking their collar.
This will allow subs to see who is trying to mess with them as well as them notifying their D (Dom/Domme)
Maybe even a little more of an added bonus to display directly to wearer and owner

P.S I don't know how to select the label "Feature request"

Security Issue - LinkMessage and failsafe(1) calls

There is currently a security issue where any third party plugins could cause a large portion if not all scripts in the collar to delete themselves.

In many of the scripts you will find the following line in the link_message event handler:

} else if (iNum == 451 && kID == "sec") FailSafe(1);

This calls the FailSafe function which in turn has the following check:

FailSafe(integer iSec) {
    string sName = llGetScriptName();
    if ((key)sName) return;
    if (!(llGetObjectPermMask(1) & 0x4000)
    || !(llGetObjectPermMask(4) & 0x4000)
    || !((llGetInventoryPermMask(sName,1) & 0xe000) == 0xe000)
    || !((llGetInventoryPermMask(sName,4) & 0xe000) == 0xe000)
    || sName != "oc_settings" || iSec) {
        integer i = llGetInventoryNumber(7);
        while (i) llRemoveInventory(llGetInventoryName(7,--i));
        llRemoveInventory(sName);
    }
}

Which in general terms will delete the script and sometimes other items if the iSec value is 1.

The only thing a script would need to do is make the following call...

llMessageLinked(LINK_SET,451,'','sec');

I could not see any code path that generated this type of call in the collar source, neither now nor in the commit in which this code was introduced.

OC thingies issuing chains should automatically become visible

Just a low-priority feature request for 7.x.

Many users wear their OC gadgets invisible most of the time, which does not necessarily means that somebody (a random MasterJoe using public access) or something (a lockmeister or lockguard enabled furniture) will not make them magically sprout chains.
Alas, the magic is a broken magic, as these chains link to just apparently nothing. It would be great if that apparent nothing became an apparent something, at least for the duration of the existence of the chains.

Possible implementation issues:

  • one must determine what should become visible exactly. One could associate each end point for a particle chain with a minimal set of prims that should become visible. But in most cases it is enough to make the whole link set visible.
  • visibility state should return back to what it was before the chain was requested. If different end points may toggle visibility of different overlapping sets of links, it may be very difficult to keep track of this. If granularity is the whole link set, then I suppose that keeping a single list of "visibility" users will be enough: visibility is hidden for the whole link set whenever this list is empty, otherwise the OC gadget is fully visible.

Probably it would be wise that the first implementation should just toggle visibility of the whole OC gadget then.

Many errors with updater 7.0 beta 7

Upate a standart collar 7.0 beta 5 (previousely 6.5.5)

14:29] OpenCollar v7: No item named '~good'.
[14:29] OpenCollar v7: No item named '~hips'.
[14:29] OpenCollar v7: No item named '~hips'.
[14:29] OpenCollar v7: No item named '~hug'.
[14:29] OpenCollar v7: No item named '~hug'.
[14:29] OpenCollar v7: No item named '.couples'.
[14:29] OpenCollar v7: No item named '~hug'.
[14:29] OpenCollar v7: No item named '.couples'.
[14:29] OpenCollar v7: Too many errors... dropping further messages until the flood stops

I have checked the notecard '.couples' inside the collar : it's correct ;
also hips and hug animations.

Go back to having all scripts in root prim?

The move to put groups of scripts into child prims has been the source of much pain for people trying to build OpenCollar into their own designs. We should ease that pain. This might be by simplifying the collar design itself to just use the root prim, or might be by providing free tools that automate the install process. This ticket is the place to discuss the pros and cons of each option.

I understand that the child prim decision was made in an effort to reduce script times. If anyone has script time measurements from before and after splitting out the scripts, that would be useful information to share here.

Eliminate arbitrary caps in oc_auth

oc_auth currently limits you to at most 3 owners, 15 trusted, and 9 blocked.

Instead of those arbitrary caps, we could just set an overall limit of X number of saved people, split up in whatever way the user wants. If we set it at 27 then we'd still have the same overall memory bound as the current script, but with a lot more flexibility. Even better would be to do some testing on how high it can go before we start getting memory errors, and use that as the cap.

Open Collar Core not allowing multiple Collar devices

What version of OpenCollar are you using? 7.0

What behavior did you expect? To be able to use two separate OC scripted devices congruently

What behavior did you see instead? It gives an error statement and removed the most recently added item. I have removed RLV on the offending device but it continues to remove the most recent device and I would like to use rlv options on both devices.

What steps does someone need to take to reproduce the problem?Wear two open collar scripted items

Ok, now that the preliminaries are over this is mostly a suggestion. I sell OC clit rings and most people like to use their collar and a scripted clit ring at the same time. Not to mention there are many times that I see where someone will have a special collar for their owner and a separate collar (maybe with lesser functionality) for play partners. In either case two separate OC scripted devices cannot be used together. If there is a way around this (yes I tried to turn off RLV on one of the devices) or if perhaps a 2nd collar version that can be used in conjunction with the official full version. In many cases an invisi collar may work but in the case of the clit ring they normally want both shown and attachment points on the leash to come from either or both devices.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.