Archive for the ‘Code Stuffs’ Category
Slowly, but surely, I’m getting to the bottom of the prison cell project 🙂
- ✔ Config for the inside/outside lamp behavior: always on/off and toggled by the switch.
- ✔ (Optional) automatic unlocking after X minutes.
- ✔ (Experimental) “secure locking”, a padlock ID whitelist for roleplay areas that want some level of key control.
- ✔ RLV feature toggle (restrictions and/or force teleport).
- ✔ Experience feature toggle (teleport on/off).
- ✔ I got pretty much all the sounds I needed to be done: door, hatch, shutter, etc…
- ✔ Color, intensity & other light properties are now saved by the script when you edit them.
- ✔ A variant of the main cell body without the window.
- ✔ A standalone anchor bar with advanced reach checks.
- ✔ A standalone version of the light ramp.
I started working on the furniture script. I came up with a cool configurable, directional range check. You can decide in which directions the furniture will allow an avatar to sit, including top & bottom (useful to allow sitting on a top bunk, but only from “below”, or to prevent sitting through a wall).
That’s all for today!
Brief late night update!
- I added an (optiona) automatic prisoner number generator, it is unique and fixed for all avatars, (I’ll share the code if others want to use it).
- All major interactions have a small built in delay (1 second or less), specifically those that produce messages or sounds.
- Touch areas check not only for range, but also evaluate whether you can realistically reach the object you are clicking from your location (example: from inside the cell, door closed, you can only pull the door handle if the hatch is open)
- RLV restrictions via relay is in, I still need to do some testing to implement (optional) vision spheres.
- Experience Force-teleport is in.
- RLV Force-Teleport is in.
- Some of the sounds are in and are inventory-based to help with modding, it is also fault tolerant (missing sounds won’t play at all).
- All standard TouchBound locks and Heavy-Duty locks are implemented.
- Mod-friendly animation system, resizing & moving parts ‘should’ be handled gracefully (no hard-coded positions & scales on anything).
- Very satisfying light switch & neon light?
Terribly produced videos! And a short list of the prison cell features (so far):
- ✔ The door handle latches/unlatches.
- ✔ The door opens.
- ✔ The hatches swing open/closed.
- ✔ The window shutter slides.
- ✔ Light turns on/off inside and outside, the light switch actuates.
- ✔ The door takes standard/heavy locks but also timelocks & accessories.
- ✔ Handle rattles when it can’t unlatch.
- ⭕ Swing open/close sounds, shutters, hatch sounds, lamp sounds.
- ⭕ Touch distance check, inside/outside reachability checks.
- ⭕ RLV relay force-teleport & seating restrictions.
- ⭕ Experience force-teleport.
- ⭕ TouchBound anchor code.
- ⭕ Furniture scripting (toilet & bed).
- ⭕ Furniture poses (toilet & bed).
I’m probably forgetting a bunch…
Well, I did not write the entire thing, it depends on the buttplug project, for all the important stuff.
It essentially allows you to run a mini web server that can be interacted with from Second Life (http requests)
The project is written in c# dotnet core and also includes a couple of LSL examples on how to interface with it.
The sourcecode and documentation can be found here:
I’m trying something different for this one, in line with the meat market set’s decorative rings, there is a handy little button row for setting your prefered stud configuration. But you can also load presets, same as my other items that have this feature.
It’s functional, I started fresh code-wise and it took me most of the evening to get it done. The HUD texture isn’t 100% final yet and I’m sure there are issues here and there that need fixing.
After much back and forth, various changes and improvements, the LockMeister plugin for AVsitter2 is now part of the official repository!
The final version includes a couple of optimisation improvements and support for sitter swapping.
I’ve finished debugging, testing, re-testing, re-debugging, and so on. This is as good as it is going to get code-wise.
So here are more pictures:
- On top of the “light” version (cannot be padlocked or chained) I’ve added two variants with a shorter and longer shackle (called XS and XL) to offer more adjustment flexibility.
- I haven’t really shown a good shot of what the captive ring indents ended up looking like, pretty crisp for what it is.
- XL + a tag plate, and while they are smaller than on other items, it’s still ridiculously cumbersome. I guess it works if you don’t plan on having a formal diner that day.
(But you don’t, since you eat your food from a bowl on the floor, right? :P)
I am more or less done with the nose shackle code, so I figured I would give a long hard look at some of the TouchBound core code to see what could potentially be improved.
I have found a handful of small little issues that I’m going to correct, I know this is probably not something anyone cares about, but here is what I’ve found and fixed:
- Some of my timer threads would end timer processing before other threads had a chance to run, this causes the animation watchdog to stop running during a suspension.
- Lock “pins” wouldn’t reset to hidden on script reset.
- Some messages still used llInstantMessage rather than llRegionSayTo (causing some delay).
- I MIGHT have greatly improved memory & script time of the animation watchdog.
- I removed some message arguments I don’t use anymore.
- I was accidentally loading some lists in the module script that… aren’t actually used there.
- A few functions were passing sounds around that are already the default one.
I’m tempted to merge all of this into the master branch right now but I’m afraid of introducing bugs -_-.
- Fixes a timer bug in toggle shaft valves & toggle gearbox valves.
- Adds one-time owner report on shaft position (for configuring/min maxes).
- Ensure that gearboxes & shafts prims have been found before touching them.
Marketplace: Use the auto-redelivery.
In-world: Pester me in IM 🙂
I’m surprised, with all the documentations I have for LockMeister on the lsl wiki that no one ported the example code to AVsitter already.
If you are already familiar with the lockguard plugin, configuring this one should be almost identical.
Github PR (It might end up merged/closed but I don’t know how long that’s gonna take)