iuehsgorujdhzfnlkzudfjhawierfg
parent
2366c40049
commit
731c64c691
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* External Communications Program
|
||||
*/
|
||||
|
||||
#include <ARES/a>
|
||||
#define CLIENT_VERSION "0.0.1"
|
||||
#define CLIENT_VERSION_TAGS "alpha 1"
|
||||
|
||||
#define C_EARBUDS 1313
|
||||
#define LN_EARBUDS 4
|
||||
|
||||
integer hearing_state = 1;
|
||||
integer language_state = 1;
|
||||
|
||||
integer earbuds_state = 0;
|
||||
|
||||
main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||
if (n == SIGNAL_INVOKE) {
|
||||
list argv = split(m, " ");
|
||||
integer argc = count(argv);
|
||||
string cmd = gets(argv, 1);
|
||||
string output_msg = "";
|
||||
if (argc == 1 || cmd == "help") {
|
||||
output_msg = "Syntax: " + PROGRAM_NAME + " <action>";
|
||||
} else if (cmd == "refresh") {
|
||||
output_msg = "Refreshing earbuds...";
|
||||
if (earbuds_state) {
|
||||
linked(LN_EARBUDS, C_EARBUDS, "EARMUFFS_ON", user);
|
||||
} else {
|
||||
linked(LN_EARBUDS, C_EARBUDS, "EARMUFFS_OFF", user);
|
||||
}
|
||||
} else {
|
||||
output_msg = "Unknown command \"" + cmd + "\".";
|
||||
}
|
||||
|
||||
if(output_msg != "")
|
||||
print(outs, user, output_msg);
|
||||
} else if (n == SIGNAL_NOTIFY) {
|
||||
list argv = delitem(splitnulls(m, " "), 0);
|
||||
integer ci = count(argv);
|
||||
while (ci > 0) {
|
||||
ci -= 2;
|
||||
string cmd = gets(argv, ci);
|
||||
string status = gets(argv, ci + 1);
|
||||
if (cmd == "hearing") {
|
||||
hearing_state = (status == "y");
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
echo("[" + PROGRAM_NAME + "] received notify from " + (string)src + ", user " + (string)user + ": [" + concat(argv, ", ") + "]");
|
||||
#endif
|
||||
|
||||
if (hearing_state && earbuds_state) {
|
||||
linked(LN_EARBUDS, C_EARBUDS, "EARMUFFS_OFF", user);
|
||||
earbuds_state = 0;
|
||||
} else if (!hearing_state && !earbuds_state) {
|
||||
linked(LN_EARBUDS, C_EARBUDS, "EARMUFFS_ON", user);
|
||||
earbuds_state = 1;
|
||||
}
|
||||
} else if (n == SIGNAL_INIT) {
|
||||
#ifdef DEBUG
|
||||
echo("[" + PROGRAM_NAME + "] init event");
|
||||
#endif
|
||||
hearing_state = 1;
|
||||
language_state = 1;
|
||||
earbuds_state = 0;
|
||||
} else if (n == SIGNAL_UNKNOWN_SCRIPT) {
|
||||
echo("[" + PROGRAM_NAME + "] failed to run '" + m + "' (kernel could not find the program specified)");
|
||||
} else {
|
||||
echo("[" + PROGRAM_NAME + "] unimplemented signal " + (string)n + ": " + m);
|
||||
}
|
||||
}
|
||||
|
||||
#include <ARES/program>
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* External Communications Program
|
||||
*/
|
||||
|
||||
#include <ARES/a>
|
||||
#define CLIENT_VERSION "0.0.1"
|
||||
#define CLIENT_VERSION_TAGS "alpha 1"
|
||||
|
||||
#define C_UNHEARING 20538
|
||||
#define LN_UNHEARING 4
|
||||
|
||||
#define UH_CLEAR 0
|
||||
#define UH_GARBLE 1
|
||||
#define UH_DEAF 2
|
||||
|
||||
integer hearing_state = 1;
|
||||
integer language_state = 1;
|
||||
|
||||
integer unhearing_state = UH_CLEAR;
|
||||
|
||||
main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||
if (n == SIGNAL_INVOKE) {
|
||||
list argv = split(m, " ");
|
||||
integer argc = count(argv);
|
||||
string cmd = gets(argv, 1);
|
||||
string output_msg = "";
|
||||
if (argc == 1 || cmd == "help") {
|
||||
output_msg = "Syntax: " + PROGRAM_NAME + " <action>";
|
||||
} else if (cmd == "dictionary") {
|
||||
linked(LN_UNHEARING, C_UNHEARING, "dictionary", user);
|
||||
} else if (cmd == "refresh") {
|
||||
@refresh_start;
|
||||
output_msg = "Refreshing externals...";
|
||||
if (unhearing_state == UH_CLEAR) {
|
||||
linked(LN_UNHEARING, C_UNHEARING, "on:ARES", user);
|
||||
} else if (unhearing_state == UH_GARBLE) {
|
||||
linked(LN_UNHEARING, C_UNHEARING, "garble:ARES", user);
|
||||
} else if (unhearing_state == UH_DEAF) {
|
||||
linked(LN_UNHEARING, C_UNHEARING, "off:ARES", user);
|
||||
} else {
|
||||
// Something went wrong, reset.
|
||||
unhearing_state = UH_CLEAR;
|
||||
jump refresh_start;
|
||||
}
|
||||
} else {
|
||||
output_msg = "Unknown command \"" + cmd + "\".";
|
||||
}
|
||||
|
||||
if(output_msg != "")
|
||||
print(outs, user, output_msg);
|
||||
} else if (n == SIGNAL_NOTIFY) {
|
||||
list argv = delitem(splitnulls(m, " "), 0);
|
||||
integer ci = count(argv);
|
||||
while (ci > 0) {
|
||||
ci -= 2;
|
||||
string cmd = gets(argv, ci);
|
||||
string status = gets(argv, ci + 1);
|
||||
if (cmd == "hearing") {
|
||||
hearing_state = (status == "y");
|
||||
} else if (cmd == "language") {
|
||||
language_state = (status == "y");
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
echo("[" + PROGRAM_NAME + "] received notify from " + (string)src + ", user " + (string)user + ": [" + concat(argv, ", ") + "]");
|
||||
#endif
|
||||
|
||||
if (hearing_state) {
|
||||
if (language_state) {
|
||||
if (unhearing_state != UH_CLEAR) {
|
||||
linked(LN_UNHEARING, C_UNHEARING, "on:ARES", user);
|
||||
unhearing_state = UH_CLEAR;
|
||||
}
|
||||
} else {
|
||||
if (unhearing_state != UH_GARBLE) {
|
||||
linked(LN_UNHEARING, C_UNHEARING, "garble:ARES", user);
|
||||
unhearing_state = UH_GARBLE;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (unhearing_state != UH_DEAF) {
|
||||
linked(LN_UNHEARING, C_UNHEARING, "off:ARES", user);
|
||||
unhearing_state = UH_DEAF;
|
||||
}
|
||||
}
|
||||
} else if (n == SIGNAL_INIT) {
|
||||
#ifdef DEBUG
|
||||
echo("[" + PROGRAM_NAME + "] init event");
|
||||
#endif
|
||||
hearing_state = 1;
|
||||
language_state = 1;
|
||||
} else if (n == SIGNAL_UNKNOWN_SCRIPT) {
|
||||
echo("[" + PROGRAM_NAME + "] failed to run '" + m + "' (kernel could not find the program specified)");
|
||||
} else {
|
||||
echo("[" + PROGRAM_NAME + "] unimplemented signal " + (string)n + ": " + m);
|
||||
}
|
||||
}
|
||||
|
||||
#include <ARES/program>
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
/*
|
||||
* Subsystem Status Notifications Program
|
||||
*
|
||||
* Duplicates a fair amount of _power, not for redistribution.
|
||||
*/
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#include <ARES/a>
|
||||
#define CLIENT_VERSION "0.0.1"
|
||||
#define CLIENT_VERSION_TAGS "alpha 1"
|
||||
|
||||
integer power_on = 1;
|
||||
integer sys_state = 0xFFFFFFFF;
|
||||
integer forbidden_state = 0;
|
||||
integer masked_state = 0;
|
||||
string power_systems = "{}";
|
||||
string power_system_names = "{}";
|
||||
|
||||
integer C_LIGHTS = NOWHERE;
|
||||
|
||||
update_state() {
|
||||
string s_status = llLinksetDataRead("status");
|
||||
sys_state = (integer)getjs(s_status, ["state"]);
|
||||
power_on = (integer)getjs(s_status, ["on"]);
|
||||
forbidden_state = (integer)getjs(s_status, ["forbidden"]);
|
||||
masked_state = 0;
|
||||
|
||||
if (!power_on) {
|
||||
// Power off - all subsystems will be off, and light bus will be messaged.
|
||||
// No need to continue update.
|
||||
#ifdef DEBUG
|
||||
echo("Powered off, no subsystems to check");
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
integer psi = 0;
|
||||
string ps;
|
||||
|
||||
while ((ps = getjs(power_systems, [(string)psi])) != JSON_INVALID) {
|
||||
integer system_forbidden = (forbidden_state & (1 << psi)) != 0;
|
||||
integer system_enabled = (sys_state & (1 << psi)) != 0;
|
||||
|
||||
if (system_forbidden) {
|
||||
// System forbidden
|
||||
if (system_enabled) {
|
||||
// System forbidden, but status reports enabled.
|
||||
// Shouldn't happen, sanity check just in case.
|
||||
sys_state = sys_state & ~(1 << psi);
|
||||
}
|
||||
} else if (system_enabled) {
|
||||
// System enabled
|
||||
list psreqs = js2list(getjs(ps, ["req"]));
|
||||
integer psri = count(psreqs);
|
||||
while (psri--) {
|
||||
integer psreq = geti(psreqs, psri);
|
||||
if (!(sys_state & (1 << psreq)) || ((forbidden_state & (1 << psreq)) != 0)) {
|
||||
// Requirement disabled or forbidden, system masked.
|
||||
sys_state = sys_state & ~(1 << psi);
|
||||
masked_state = masked_state | (1 << psi);
|
||||
jump psribrk;
|
||||
}
|
||||
}
|
||||
@psribrk;
|
||||
} // else | System disabled
|
||||
|
||||
++psi;
|
||||
}
|
||||
|
||||
if (C_LIGHTS == NOWHERE) {
|
||||
echo("[" + PROGRAM_NAME + "] light bus channel not set");
|
||||
return;
|
||||
}
|
||||
|
||||
list light_msg = ["subsys", sys_state, masked_state, forbidden_state];
|
||||
io_tell(NULL_KEY, C_LIGHTS, concat(light_msg, " "));
|
||||
}
|
||||
|
||||
main(integer src, integer n, string m, key outs, key ins, key user) {
|
||||
#ifdef DEBUG
|
||||
echo("[" + PROGRAM_NAME + "] signal " + (string)n + ": " + m);
|
||||
#endif
|
||||
if (n == SIGNAL_INVOKE) {
|
||||
list argv = split(m, " ");
|
||||
integer argc = count(argv);
|
||||
string cmd = gets(argv, 1);
|
||||
string output_msg = "";
|
||||
if (argc == 1 || cmd == "help") {
|
||||
output_msg = "Syntax: " + PROGRAM_NAME + " <action>";
|
||||
} else if (cmd == "query") {
|
||||
// send current status without updating
|
||||
list light_msg = ["subsys", sys_state, masked_state, forbidden_state];
|
||||
io_tell(NULL_KEY, C_LIGHTS, concat(light_msg, " "));
|
||||
} else {
|
||||
output_msg = "Unknown command \"" + cmd + "\".";
|
||||
}
|
||||
|
||||
if(output_msg != "")
|
||||
print(outs, user, output_msg);
|
||||
} else if (n == SIGNAL_NOTIFY) {
|
||||
list argv = splitnulls(m, " ");
|
||||
string cmd = gets(argv, 1);
|
||||
if (cmd == "update") {
|
||||
update_state();
|
||||
}
|
||||
#ifdef DEBUG
|
||||
else {
|
||||
echo("[" + PROGRAM_NAME + "] unrecognised notify " + m);
|
||||
}
|
||||
#endif
|
||||
} else if (n == SIGNAL_INIT) {
|
||||
#ifdef DEBUG
|
||||
echo("[" + PROGRAM_NAME + "] init event");
|
||||
#endif
|
||||
|
||||
if (llGetAttached()) {
|
||||
C_LIGHTS = 105 - (integer)("0x" + substr(avatar, 29, 35));
|
||||
} else {
|
||||
C_LIGHTS = 105 - (integer)("0x" + substr(KERNEL, 29, 35));
|
||||
}
|
||||
|
||||
string s_power = llLinksetDataRead("power");
|
||||
power_systems = getjs(s_power, ["system"]);
|
||||
|
||||
integer psi = 0;
|
||||
string ps = "";
|
||||
while ((ps = getjs(power_systems, [(string)psi])) != JSON_INVALID) {
|
||||
string psname = getjs(ps, ["name"]);
|
||||
power_system_names = setjs(power_system_names, [psname], (string)psi);
|
||||
++psi;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
echo("[" + PROGRAM_NAME + "] (DEBUG) available subsystems: " + (string)psi);
|
||||
#endif
|
||||
|
||||
update_state();
|
||||
} else if (n == SIGNAL_UNKNOWN_SCRIPT) {
|
||||
echo("[" + PROGRAM_NAME + "] failed to run '" + m + "' (kernel could not find the program specified)");
|
||||
} else {
|
||||
echo("[" + PROGRAM_NAME + "] unimplemented signal " + (string)n + ": " + m);
|
||||
}
|
||||
}
|
||||
|
||||
#include <ARES/program>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# <name> <bit flag> <tex-x> <tex-y>
|
||||
video 0x00000002 1 0
|
||||
hearing 0x00000020 6 0
|
||||
lidar 0x00000004 2 0
|
||||
language 0x00800000 7 0
|
||||
optics 0x00000010 4 0
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# <name> <bit flag> <tex-x> <tex-y>
|
||||
base 0x00000001 0 0
|
||||
video 0x00000002 1 0
|
||||
lidar 0x00000004 2 0
|
||||
hud 0x00000008 3 0
|
||||
optics 0x00000010 4 0
|
||||
hearing 0x00000020 6 0
|
||||
identify 0x00000040 5 0
|
||||
radio 0x00000080 0 1
|
||||
location 0x00000100 1 1
|
||||
teleport 0x00000200 2 1
|
||||
receive 0x00000400 3 1
|
||||
transmit 0x00000800 4 1
|
||||
wifi 0x00001000 5 1
|
||||
motors 0x00002000 6 1
|
||||
locomotion 0x00004000 0 2
|
||||
athletics 0x00008000 1 2
|
||||
flight 0x00010000 2 2
|
||||
reach 0x00020000 3 2
|
||||
voice 0x00040000 4 2
|
||||
speech 0x00080000 5 2
|
||||
amplifier 0x00100000 6 2
|
||||
mind 0x00200000 7 2
|
||||
finemotors 0x00400000 7 1
|
||||
language 0x00800000 7 0
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# ARES CUSTOMIZATIONS - UNIT SETTINGS
|
||||
# Last updated: 2026-01-23
|
||||
# Keep all of your customizations in this file and back it up before version updates. You may rename it if you wish.
|
||||
# Look through the other ".db" files to find settings you want to alter, and copy them into here.
|
||||
# The manual includes some hints as to what many settings do. http://support.nanite-systems.com/?id=2832
|
||||
# To load, run the system command @db load local.db
|
||||
|
||||
# useful sound: "475b270a-8dc0-2b53-210d-32d4dc6ebc7c" is silence
|
||||
|
||||
# change #RLV path:
|
||||
env.rlv ~ARES
|
||||
|
||||
# SILENCE, MARKER
|
||||
env.marker-female 475b270a-8dc0-2b53-210d-32d4dc6ebc7c
|
||||
env.marker-male 475b270a-8dc0-2b53-210d-32d4dc6ebc7c
|
||||
env.marker-neuter 475b270a-8dc0-2b53-210d-32d4dc6ebc7c
|
||||
persona.marker 475b270a-8dc0-2b53-210d-32d4dc6ebc7c 475b270a-8dc0-2b53-210d-32d4dc6ebc7c 475b270a-8dc0-2b53-210d-32d4dc6ebc7c
|
||||
|
||||
# set lighting colors:
|
||||
id.color.0 0.612001 0.175943 0.970192
|
||||
id.color.1 0.983944 0.629795 0.753035
|
||||
id.color.2 0.962978 0.301208 0.255559
|
||||
id.color.3 0.368628 0.960784 0.996079
|
||||
|
||||
id.scheme.meow ["0.612001 0.175943 0.970192","0.983944 0.629795 0.753035","0.962978 0.301208 0.255559","0.368628 0.960784 0.996079"]
|
||||
|
||||
# change name and model:
|
||||
id.name Livie
|
||||
id.serial CX/S 44-5137
|
||||
id.model CX/S
|
||||
|
||||
# it might be helpful to save your interface height settings:
|
||||
interface.height 985
|
||||
interface.height-mlook 1004
|
||||
|
||||
# block public bus charging (except from your seat and your attachments):
|
||||
power.induction.local 1
|
||||
power.induction.remote 0
|
||||
|
||||
# YEET THE AUTOMOUNTS
|
||||
DELETE fs.source.ns-persona
|
||||
DELETE fs.source.setup
|
||||
|
||||
# do some settings
|
||||
id.gender.physical ["female","she","her","her","hers","herself"]
|
||||
id.gender.mental ["inanimate","it","it","its","its","itself"]
|
||||
id.gender.voice f
|
||||
input.censored /me beepboops
|
||||
sexuality.anorgasmia 0
|
||||
hardware.controller.volume.master 0.5
|
||||
hardware.controller.volume.marker 0
|
||||
hardware.controller.volume.announcer 0.5
|
||||
|
|
@ -0,0 +1,230 @@
|
|||
# power.system.[].flag - used by subsys for external panels
|
||||
|
||||
power.system []
|
||||
|
||||
power.system.0 {}
|
||||
power.system.0.name base
|
||||
power.system.0.notify _power base ?
|
||||
power.system.0.req []
|
||||
power.system.0.draw 30
|
||||
power.system.0.flag 0x00000001
|
||||
|
||||
power.system.1 {}
|
||||
power.system.1.name video
|
||||
power.system.1.notify _power video ?
|
||||
power.system.1.req [0]
|
||||
power.system.1.draw 20
|
||||
power.system.1.flag 0x00000002
|
||||
|
||||
power.system.2 {}
|
||||
power.system.2.name lidar
|
||||
power.system.2.notify _power lidar ?
|
||||
power.system.2.req [0]
|
||||
power.system.2.draw 10
|
||||
power.system.2.flag 0x00000004
|
||||
|
||||
power.system.3 {}
|
||||
power.system.3.name hud
|
||||
power.system.3.notify _power hud ?
|
||||
power.system.3.req [0,1]
|
||||
power.system.3.draw 5
|
||||
power.system.3.flag 0x00000008
|
||||
|
||||
power.system.4 {}
|
||||
power.system.4.name optics
|
||||
power.system.4.notify _power optics ?
|
||||
power.system.4.req [0,1]
|
||||
power.system.4.draw 50
|
||||
power.system.4.flag 0x00000010
|
||||
|
||||
power.system.5 {}
|
||||
power.system.5.name hearing
|
||||
power.system.5.notify extcom hearing ?
|
||||
power.system.5.req [0]
|
||||
power.system.5.draw 10
|
||||
power.system.5.flag 0x00000020
|
||||
|
||||
power.system.6 {}
|
||||
power.system.6.name identify
|
||||
power.system.6.rlv showhovertextworld=?,shownametags=?
|
||||
power.system.6.req [0,1,4]
|
||||
power.system.6.draw 20
|
||||
power.system.6.flag 0x00000040
|
||||
|
||||
power.system.7 {}
|
||||
power.system.7.name radio
|
||||
power.system.7.req [0]
|
||||
power.system.7.draw 30
|
||||
power.system.7.flag 0x00000080
|
||||
|
||||
power.system.8 {}
|
||||
power.system.8.name location
|
||||
power.system.8.rlv showworldmap=?,showminimap=?,showloc=?
|
||||
power.system.8.notify nav location ?
|
||||
power.system.8.req [0,7]
|
||||
power.system.8.draw 5
|
||||
power.system.8.flag 0x00000100
|
||||
|
||||
power.system.9 {}
|
||||
power.system.9.name teleport
|
||||
power.system.9.rlv tplocal=?,tplm=?,tploc=?,sittp=?,tplure=?
|
||||
power.system.9.notify nav teleport ?
|
||||
power.system.9.req [0,2,7,8]
|
||||
power.system.9.draw 120
|
||||
power.system.9.flag 0x00000200
|
||||
|
||||
power.system.10 {}
|
||||
power.system.10.name receive
|
||||
power.system.10.rlv recvim=?
|
||||
power.system.10.req [0,7]
|
||||
power.system.10.draw 10
|
||||
power.system.10.flag 0x00000400
|
||||
|
||||
power.system.11 {}
|
||||
power.system.11.name transmit
|
||||
power.system.11.rlv sendim=?,startim=?
|
||||
power.system.11.req [0,7]
|
||||
power.system.11.draw 10
|
||||
power.system.11.flag 0x00000800
|
||||
|
||||
power.system.12 {}
|
||||
power.system.12.name wifi
|
||||
power.system.12.notify _power wifi ?
|
||||
power.system.12.req [0,7]
|
||||
power.system.12.draw 10
|
||||
power.system.12.flag 0x00001000
|
||||
|
||||
power.system.13 {}
|
||||
power.system.13.name motors
|
||||
power.system.13.rlv touchworld=?
|
||||
power.system.13.notify _power motors ?
|
||||
power.system.13.req [0]
|
||||
power.system.13.draw 60
|
||||
power.system.13.flag 0x00002000
|
||||
|
||||
power.system.14 {}
|
||||
power.system.14.name locomotion
|
||||
power.system.14.rlv sit=?
|
||||
power.system.14.notify _power locomotion ?
|
||||
power.system.14.req [0,13]
|
||||
power.system.14.draw 40
|
||||
power.system.14.flag 0x00004000
|
||||
|
||||
power.system.15 {}
|
||||
power.system.15.name athletics
|
||||
power.system.15.rlv temprun=?,alwaysrun=?
|
||||
power.system.15.req [0,13,14]
|
||||
power.system.15.draw 30
|
||||
power.system.15.flag 0x00008000
|
||||
|
||||
power.system.16 {}
|
||||
power.system.16.name flight
|
||||
power.system.16.rlv fly=?
|
||||
power.system.16.req [0,13,14]
|
||||
power.system.16.draw 50
|
||||
power.system.16.flag 0x00010000
|
||||
|
||||
power.system.17 {}
|
||||
power.system.17.name reach
|
||||
power.system.17.rlv touchfar:3=?
|
||||
power.system.17.req [0,13]
|
||||
power.system.17.draw 20
|
||||
power.system.17.flag 0x00020000
|
||||
|
||||
power.system.18 {}
|
||||
power.system.18.name voice
|
||||
power.system.18.notify _input voice ?
|
||||
power.system.18.req [0]
|
||||
power.system.18.draw 20
|
||||
power.system.18.flag 0x00040000
|
||||
|
||||
power.system.19 {}
|
||||
power.system.19.name speech
|
||||
power.system.19.rlv chatnormal=?
|
||||
power.system.19.notify _input speech ?
|
||||
power.system.19.req [0,13,18]
|
||||
power.system.19.draw 20
|
||||
power.system.19.flag 0x00080000
|
||||
|
||||
power.system.20 {}
|
||||
power.system.20.name amplifier
|
||||
power.system.20.rlv chatshout=?
|
||||
power.system.20.notify _input amplifier ?
|
||||
power.system.20.req [0,13,18,19]
|
||||
power.system.20.draw 30
|
||||
power.system.20.flag 0x00100000
|
||||
|
||||
power.system.21 {}
|
||||
power.system.21.name mind
|
||||
power.system.21.rlv sendchat=?
|
||||
power.system.21.notify _input mind ?
|
||||
power.system.21.req [0,18]
|
||||
power.system.21.draw 70
|
||||
power.system.21.flag 0x00200000
|
||||
|
||||
power.system.22 {}
|
||||
power.system.22.name finemotors
|
||||
power.system.22.rlv touchattach=?
|
||||
power.system.22.req [0,13]
|
||||
power.system.22.draw 20
|
||||
power.system.22.flag 0x00400000
|
||||
|
||||
power.system.23 {}
|
||||
power.system.23.name language
|
||||
power.system.23.notify extcom language ?
|
||||
power.system.23.req [0,5]
|
||||
power.system.23.draw 30
|
||||
power.system.23.flag 0x00800000
|
||||
|
||||
#power.system.24 {}
|
||||
#power.system.24.name inventory
|
||||
#power.system.24.rlv
|
||||
#power.system.24.req [0]
|
||||
#power.system.24.draw 10
|
||||
|
||||
#power.system.25 {}
|
||||
#power.system.25.name drones
|
||||
#power.system.25.rlv
|
||||
#power.system.25.req [0]
|
||||
#power.system.25.draw 20
|
||||
|
||||
#power.system.26 {}
|
||||
#power.system.26.name wrenches
|
||||
#power.system.26.rlv
|
||||
#power.system.26.req [0]
|
||||
#power.system.26.draw 10
|
||||
|
||||
# -----------------------------------
|
||||
|
||||
m:power {}
|
||||
m:power.desc power control
|
||||
m:power.p menu
|
||||
m:power.e []
|
||||
m:power.e.0 ["base",2,"power base toggle","status.state|0"]
|
||||
m:power.e.1 ["video",2,"power video toggle","status.state|1"]
|
||||
m:power.e.2 ["LiDAR",2,"power lidar toggle","status.state|2"]
|
||||
m:power.e.3 ["HUD",2,"power hud toggle","status.state|3"]
|
||||
m:power.e.4 ["optics",2,"power optics toggle","status.state|4"]
|
||||
m:power.e.5 ["hearing",2,"power hearing toggle","status.state|5"]
|
||||
m:power.e.6 ["language",2,"power language toggle","status.state|23"]
|
||||
m:power.e.7 ["face detect",2,"power identify toggle","status.state|6"]
|
||||
m:power.e.8 ["main radio",2,"power radio toggle","status.state|7"]
|
||||
m:power.e.9 ["GPS (location)",2,"power location toggle","status.state|8"]
|
||||
m:power.e.10 ["FTL (teleport)",2,"power teleport toggle","status.state|9"]
|
||||
m:power.e.11 ["receive IMs",2,"power receive toggle","status.state|10"]
|
||||
m:power.e.12 ["transmit IMs",2,"power transmit toggle","status.state|11"]
|
||||
m:power.e.13 ["net devices",2,"power wifi toggle","status.state|12"]
|
||||
m:power.e.14 ["all motors",2,"power motors toggle","status.state|13"]
|
||||
m:power.e.15 ["fine motors",2,"power finemotors toggle","status.state|22"]
|
||||
m:power.e.16 ["walking",2,"power locomotion toggle","status.state|14"]
|
||||
m:power.e.17 ["running",2,"power athletics toggle","status.state|15"]
|
||||
m:power.e.18 ["flight",2,"power flight toggle","status.state|16"]
|
||||
m:power.e.19 ["reach",2,"power reach toggle","status.state|17"]
|
||||
m:power.e.20 ["allow talking",2,"power voice toggle","status.state|18"]
|
||||
m:power.e.21 ["talk volume",2,"power speech toggle","status.state|19"]
|
||||
m:power.e.22 ["shout volume",2,"power amplifier toggle","status.state|20"]
|
||||
m:power.e.23 ["mind",2,"power mind toggle","status.state|21"]
|
||||
m:power.e.24 ["power profiles...",1,"m:profile"]
|
||||
m:power.e.25 ["back",1,"m:main"]
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
//--------------------------------------------------------------------------
|
||||
// BEGIN config
|
||||
|
||||
#define USE_LIGHTS
|
||||
#define USE_PUBLIC
|
||||
#define USE_ACS
|
||||
|
||||
// END config
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN macros
|
||||
|
||||
#define listen_on(_h, _ch) llListenRemove(_h); _h = llListen(_ch, "", NULL_KEY, "")
|
||||
|
||||
// END macros
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN includes
|
||||
|
||||
#include <utils.lsl>
|
||||
#include <objects.lsl>
|
||||
|
||||
// END includes
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN globals
|
||||
|
||||
#ifdef USE_LIGHTS
|
||||
integer L_LIGHTS = 0;
|
||||
integer C_LIGHTS = 0;
|
||||
#endif
|
||||
#ifdef USE_PUBLIC
|
||||
integer L_PUBLIC = 0;
|
||||
integer C_PUBLIC = -9999999;
|
||||
#endif
|
||||
#ifdef USE_ACS
|
||||
integer L_ACS = 0;
|
||||
integer C_ACS = 360;
|
||||
#endif
|
||||
|
||||
key avatar = NULL_KEY;
|
||||
|
||||
// END globals
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN functions
|
||||
|
||||
init() {
|
||||
avatar = llGetOwner();
|
||||
|
||||
#ifdef USE_LIGHTS
|
||||
C_LIGHTS = 105 - (integer)("0x" + substr(avatar, 29, 35));
|
||||
listen_on(L_LIGHTS, C_LIGHTS);
|
||||
#endif
|
||||
#ifdef USE_PUBLIC
|
||||
listen_on(L_PUBLIC, C_PUBLIC);
|
||||
#endif
|
||||
#ifdef USE_ACS
|
||||
listen_on(L_ACS, C_ACS);
|
||||
#endif
|
||||
} // init()
|
||||
|
||||
// END functions
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN main
|
||||
|
||||
default {
|
||||
state_entry() {
|
||||
init();
|
||||
} // state_entry()
|
||||
|
||||
on_rez(integer n) {
|
||||
init();
|
||||
} // on_rez(...)
|
||||
|
||||
listen(integer cc, string src, key id, string msg) {
|
||||
#ifdef USE_LIGHTS
|
||||
if (cc == C_LIGHTS) {
|
||||
if (substr(msg, 0, 5) != "power ") {
|
||||
echo("recv (light bus) from " + src + " (" + (string)id + "): " + msg);
|
||||
}
|
||||
} // if (cc == C_LIGHTS)
|
||||
#endif
|
||||
#ifdef USE_PUBLIC
|
||||
if (cc == C_PUBLIC) {
|
||||
echo ("recv (public bus) from " + src + " (" + (string)id + "):" + msg);
|
||||
}
|
||||
#endif
|
||||
#ifdef USE_ACS
|
||||
if (cc == C_ACS) {
|
||||
echo("recv (ACS) from " + src + " (" + (string)id + "): " + msg);
|
||||
}
|
||||
#endif
|
||||
} // listen(...)
|
||||
|
||||
} // state default
|
||||
|
||||
// END main
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
@ -0,0 +1,397 @@
|
|||
// init flow -> init() -> populate_link_nums() -> dataserver -> finalize_init()
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN config
|
||||
|
||||
// use flags
|
||||
//#define USE_BOLTS
|
||||
//#define USE_VERBOSE
|
||||
|
||||
#define DEVICE_VERSION "0.1"
|
||||
#define DEVICE_NAME "indicators"
|
||||
|
||||
// lights
|
||||
#define MAX_GLOW 0.3
|
||||
#define FULLBRIGHT_ON_GLOW
|
||||
#define OFF_DAMP_FACTOR 0.4
|
||||
#define MASKED_TINT_FACTOR 0.5
|
||||
|
||||
#define INDICATOR_LINK_NAME "icon"
|
||||
#define TOUCHABLE_LINK_NAME "glass"
|
||||
|
||||
#define TEXTURE_TILES 8
|
||||
|
||||
// END config
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN macros
|
||||
|
||||
#define color_parse(_argv) <(float)gets(_argv, 1), (float)gets(argv, 2), (float)gets(argv, 3)>
|
||||
#define add_device(_id, _ch) tell(_id, _ch, "add " + DEVICE_NAME)
|
||||
|
||||
// END macros
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN includes
|
||||
|
||||
#include <utils.lsl>
|
||||
#include <objects.lsl>
|
||||
|
||||
// END includes
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN globals
|
||||
|
||||
key config_query = NULL_KEY;
|
||||
integer config_cur_line = 0;
|
||||
string config_nc_name = "config";
|
||||
key config_nc_key = NULL_KEY;
|
||||
|
||||
list system_names = [];
|
||||
list system_flags = [];
|
||||
list system_texcoords = [];
|
||||
|
||||
list ind_links = [];
|
||||
list touch_links = [];
|
||||
|
||||
integer L_CAPS = 0;
|
||||
integer L_LIGHTS = 0;
|
||||
|
||||
#define C_CAPS 411
|
||||
integer C_LIGHTS = 0;
|
||||
|
||||
integer power_on = 1;
|
||||
integer broken = 0;
|
||||
float gap = 0;
|
||||
|
||||
vector color = <1, 1, 1>;
|
||||
vector color2 = <1, 1, 1>;
|
||||
vector color3 = <1, 1, 1>;
|
||||
vector color4 = <1, 1, 1>;
|
||||
|
||||
integer sys_state = 0xFFFFFFFF;
|
||||
integer masked_state = 0;
|
||||
integer forbidden_state = 0;
|
||||
|
||||
key avatar = NULL_KEY;
|
||||
key controller = NULL_KEY;
|
||||
|
||||
// END globals
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN functions
|
||||
|
||||
set_tint(integer link, integer side, vector tint, vector repeats, vector offsets, float glow) {
|
||||
#ifdef FULLBRIGHT_ON_GLOW
|
||||
integer fullbright = 0;
|
||||
if (glow > 0) {
|
||||
fullbright = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
setp(link, [
|
||||
PRIM_COLOR, side, tint, 1,
|
||||
PRIM_GLOW, side, glow,
|
||||
#ifdef FULLBRIGHT_ON_GLOW
|
||||
PRIM_FULLBRIGHT, side, fullbright,
|
||||
#endif
|
||||
PRIM_GLTF_BASE_COLOR, side, "", repeats, offsets, 0, llsRGB2Linear(tint), 1, PRIM_GLTF_ALPHA_MODE_OPAQUE, 0.5, 0,
|
||||
PRIM_GLTF_NORMAL, side, "", repeats, offsets, 0,
|
||||
PRIM_GLTF_METALLIC_ROUGHNESS, side, "", repeats, offsets, 0, 1, 1,
|
||||
PRIM_GLTF_EMISSIVE, side, "", repeats, offsets, 0, llsRGB2Linear(tint)
|
||||
]);
|
||||
}
|
||||
|
||||
update_colors(float level) {
|
||||
if (level < 0) {
|
||||
level = 0;
|
||||
}
|
||||
if (level > 1) {
|
||||
level = 1;
|
||||
}
|
||||
|
||||
integer sysi = count(system_names);
|
||||
float tex_scale = 1.0 / TEXTURE_TILES;
|
||||
vector repeats = <tex_scale, tex_scale, 0>;
|
||||
|
||||
while (sysi--) {
|
||||
integer l = geti(ind_links, sysi);
|
||||
string name = gets(system_names, sysi);
|
||||
integer flag = geti(system_flags, sysi);
|
||||
vector texcoord = getv(system_texcoords, sysi);
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Updating sysi " + (string)sysi + ": link " + (string)l + ", system " + name + ", flag " + (string)flag + ", with offset " + (string)texcoord);
|
||||
#endif
|
||||
if (!l || !strlen(name) || !flag || texcoord == ZERO_VECTOR) {
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Invalid, skipping " + (string)sysi + "...");
|
||||
#endif
|
||||
jump sysicontinue;
|
||||
}
|
||||
|
||||
if (power_on) {
|
||||
if (forbidden_state & flag) {
|
||||
// System forbidden
|
||||
set_tint(l, ALL_SIDES, color * OFF_DAMP_FACTOR, repeats, texcoord * tex_scale, 0);
|
||||
} else if (masked_state & flag) {
|
||||
// System requirements unmet
|
||||
set_tint(l, ALL_SIDES, color3 * level * MASKED_TINT_FACTOR, repeats, texcoord * tex_scale, level * MAX_GLOW);
|
||||
} else if (sys_state & flag) {
|
||||
// System enabled
|
||||
set_tint(l, ALL_SIDES, color * level, repeats, texcoord * tex_scale, level * MAX_GLOW);
|
||||
} else {
|
||||
// System disabled explicitly
|
||||
set_tint(l, ALL_SIDES, color3 * level, repeats, texcoord * tex_scale, level * MAX_GLOW);
|
||||
}
|
||||
} else {
|
||||
set_tint(l, ALL_SIDES, color * OFF_DAMP_FACTOR, repeats, texcoord * tex_scale, 0);
|
||||
}
|
||||
|
||||
@sysicontinue;
|
||||
}
|
||||
}
|
||||
|
||||
integer get_prim_count() {
|
||||
if (llGetAttached()) {
|
||||
return llGetNumberOfPrims();
|
||||
}
|
||||
|
||||
return llGetObjectPrimCount(llGetKey());
|
||||
} // get_prim_count()
|
||||
|
||||
populate_link_nums() {
|
||||
ind_links = [];
|
||||
touch_links = [];
|
||||
integer i = get_prim_count();
|
||||
string link_name;
|
||||
for (; i > 0; i--) {
|
||||
link_name = llGetLinkName(i);
|
||||
if (strpos(link_name, INDICATOR_LINK_NAME) != -1) {
|
||||
ind_links += i;
|
||||
}
|
||||
if (strpos(link_name, TOUCHABLE_LINK_NAME) != -1) {
|
||||
touch_links += i;
|
||||
}
|
||||
} // for (...)
|
||||
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Found " + (string)count(ind_links) + " icons, with " + (string)count(touch_links) + " touchable links");
|
||||
#endif
|
||||
} // populate_link_nums()
|
||||
|
||||
init() {
|
||||
avatar = llGetOwner();
|
||||
controller = NULL_KEY;
|
||||
|
||||
populate_link_nums();
|
||||
|
||||
power_on = 1;
|
||||
|
||||
key nc = llGetInventoryKey(config_nc_name);
|
||||
if (nc == config_nc_key && nc != NULL_KEY) {
|
||||
// No config change.
|
||||
finalize_init();
|
||||
return;
|
||||
}
|
||||
system_names = [];
|
||||
system_flags = [];
|
||||
system_texcoords = [];
|
||||
config_nc_key = nc;
|
||||
config_cur_line = 0;
|
||||
if (config_nc_key == NULL_KEY) {
|
||||
echo("No config found, cannot start");
|
||||
return;
|
||||
}
|
||||
config_query = llGetNotecardLine(config_nc_name, config_cur_line);
|
||||
}
|
||||
|
||||
finalize_init() {
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Found " + (string)count(system_names) + " configured systems to track, finalizing");
|
||||
#endif
|
||||
update_colors(1);
|
||||
|
||||
// Called from dataserver once config is read.
|
||||
C_LIGHTS = 105 - (integer)("0x" + substr(avatar, 29, 35));
|
||||
llListenRemove(L_LIGHTS);
|
||||
L_LIGHTS = llListen(C_LIGHTS, "", NULL_KEY, "");
|
||||
|
||||
llListenRemove(L_CAPS);
|
||||
L_CAPS = llListen(C_CAPS, "", NULL_KEY, "");
|
||||
|
||||
add_device(avatar, C_LIGHTS);
|
||||
}
|
||||
|
||||
// END functions
|
||||
//--------------------------------------------------------------------------
|
||||
// BEGIN main
|
||||
|
||||
default {
|
||||
state_entry() {
|
||||
init();
|
||||
} // state_entry()
|
||||
|
||||
on_rez(integer n) {
|
||||
init();
|
||||
} // on_rez(...)
|
||||
|
||||
changed(integer chg) {
|
||||
if (chg & CHANGED_INVENTORY) {
|
||||
init();
|
||||
}
|
||||
if (chg & CHANGED_OWNER) {
|
||||
init();
|
||||
}
|
||||
if (chg & CHANGED_LINK) {
|
||||
init();
|
||||
}
|
||||
}
|
||||
|
||||
dataserver(key qid, string data) {
|
||||
if (qid == config_query) {
|
||||
if (data == EOF) {
|
||||
echo("Config reloaded.");
|
||||
finalize_init();
|
||||
} else {
|
||||
// line
|
||||
if (substr(data, 0, 0) == "#") {
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Skipping comment in config: " + data);
|
||||
#endif
|
||||
jump confignextline;
|
||||
}
|
||||
list cl = split(data, " ");
|
||||
if (count(cl) != 4) {
|
||||
echo("Invalid line in config: " + data);
|
||||
jump confignextline;
|
||||
}
|
||||
system_names += gets(cl, 0);
|
||||
system_flags += geti(cl, 1);
|
||||
system_texcoords += <geti(cl, 2), geti(cl, 3), 1>;
|
||||
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Registered system " + concat(cl, " "));
|
||||
#endif
|
||||
|
||||
@confignextline;
|
||||
config_query = llGetNotecardLine(config_nc_name, ++config_cur_line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listen(integer cc, string src, key id, string msg) {
|
||||
if (cc == C_CAPS) {
|
||||
if (substr(msg, 0, 4) == "info ") {
|
||||
integer rc = (integer)delstring(msg, 0, 4);
|
||||
tell(id, rc, "hwc " + jsobject([
|
||||
"vendor", "Cat Conspiracy",
|
||||
"version", DEVICE_VERSION,
|
||||
"purpose", "info",
|
||||
"channel", jsobject(["caps", C_CAPS, "lights", C_LIGHTS]),
|
||||
"private", 0,
|
||||
"busy", 0,
|
||||
"usable", power_on,
|
||||
"health", 1.0,
|
||||
"info", "http://localhost:8080/"
|
||||
]));
|
||||
} // if (cmd == "info")
|
||||
} // if (cc == C_CAPS)
|
||||
else if (cc == C_LIGHTS) {
|
||||
list argv = split(msg, " ");
|
||||
string cmd = gets(argv, 0);
|
||||
|
||||
switch (cmd) {
|
||||
case "off":
|
||||
power_on = 0;
|
||||
gap = 0;
|
||||
update_colors(1);
|
||||
break;
|
||||
case "on":
|
||||
power_on = 1;
|
||||
if (broken) {
|
||||
gap = 0.05;
|
||||
} else {
|
||||
gap = 0;
|
||||
}
|
||||
update_colors(1);
|
||||
break;
|
||||
#ifdef USE_BOLTS
|
||||
case "bolts":
|
||||
if (gets(argv, 1) == "on") {
|
||||
echo("@detach=n");
|
||||
} else if (gets(argv, 1) == "off") {
|
||||
echo("@detach=y");
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case "broken":
|
||||
gap = 0.05;
|
||||
broken = 1;
|
||||
break;
|
||||
case "fixed":
|
||||
gap = 0;
|
||||
broken = 0;
|
||||
update_colors(1);
|
||||
break;
|
||||
case "color":
|
||||
color = color_parse(argv);
|
||||
update_colors(1);
|
||||
break;
|
||||
case "color-2":
|
||||
color2 = color_parse(argv);
|
||||
update_colors(1);
|
||||
break;
|
||||
case "color-3":
|
||||
color3 = color_parse(argv);
|
||||
update_colors(1);
|
||||
break;
|
||||
case "color-4":
|
||||
color4 = color_parse(argv);
|
||||
update_colors(1);
|
||||
break;
|
||||
case "name":
|
||||
llSetObjectName(concat(delrange(argv, 0, 0), " ") + " (" + DEVICE_NAME + ")");
|
||||
case "probe":
|
||||
add_device(id, C_LIGHTS);
|
||||
break;
|
||||
case "add-confirm":
|
||||
controller = id;
|
||||
tell(id, C_LIGHTS, "color-q");
|
||||
tell(id, C_LIGHTS, "command " + (string)avatar + " " + (string)avatar + " subsys query");
|
||||
break;
|
||||
case "subsys":
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Received " + msg);
|
||||
#endif
|
||||
sys_state = geti(argv, 1);
|
||||
masked_state = geti(argv, 2);
|
||||
forbidden_state = geti(argv, 3);
|
||||
update_colors(1);
|
||||
break;
|
||||
case "power":
|
||||
break;
|
||||
case "rate":
|
||||
break;
|
||||
default:
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Unhandled light bus (" + src + "): " + msg);
|
||||
#endif
|
||||
break;
|
||||
} // switch (cmd)
|
||||
|
||||
llSetTimerEvent(gap);
|
||||
} // if (cc == C_LIGHTS)
|
||||
} // listen(...)
|
||||
|
||||
timer() {
|
||||
if (!broken) {
|
||||
return;
|
||||
}
|
||||
|
||||
float t = 1;
|
||||
if (llFrand(1.0) < 0.1) {
|
||||
t = llFrand(0.2);
|
||||
}
|
||||
|
||||
update_colors(t);
|
||||
} // timer()
|
||||
} // state default
|
||||
|
||||
// END main
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
@ -30,7 +30,6 @@
|
|||
|
||||
#define color_parse(_argv) <(float)gets(_argv, 1), (float)gets(argv, 2), (float)gets(argv, 3)>
|
||||
#define add_device(_id, _ch) tell(_id, _ch, "add " + PANEL_DEVICE_NAME)
|
||||
#define try_add_port(_id, _ch, _port, _link) if (_link != LINK_THIS) tell(_id, _ch, "port " + _port + " " + (string)llGetLinkKey(_link))
|
||||
|
||||
#define GAUGE_SRC_Q GAUGE_SRC + "-q"
|
||||
|
||||
|
|
@ -300,13 +299,7 @@ default {
|
|||
integer touched_link = llDetectedLinkNumber(n);
|
||||
|
||||
if (touched_link == LN_POWER_BUTTON) {
|
||||
if(power_on) {
|
||||
tell(controller, C_LIGHTS, "command " + (string)user + " " + (string)user + " power off");
|
||||
llTriggerSound("88af7a41-10e7-06ad-799e-313cbbe0ffad", 1);
|
||||
} else {
|
||||
tell(controller, C_LIGHTS, "command " + (string)user + " " + (string)user + " power on");
|
||||
llTriggerSound("dccca2d0-b50c-e069-a1f9-c3336249421d", 1);
|
||||
}
|
||||
tell(controller, C_LIGHTS, "auth " + PANEL_DEVICE_NAME + " " + (string)user);
|
||||
}
|
||||
}
|
||||
} // touch_end(...)
|
||||
|
|
@ -395,11 +388,11 @@ default {
|
|||
tell(id, C_LIGHTS, GAUGE_SRC_Q);
|
||||
|
||||
// Ports
|
||||
/*try_add_port(id, C_LIGHTS, "power", LN_PLUG_POWER);
|
||||
try_add_port(id, C_LIGHTS, "audio-in", LN_PLUG_AUDIO1);
|
||||
try_add_port(id, C_LIGHTS, "audio-out", LN_PLUG_AUDIO2);
|
||||
try_add_port(id, C_LIGHTS, "data-1", LN_PLUG_DATA1);
|
||||
try_add_port(id, C_LIGHTS, "data-2", LN_PLUG_DATA2);*/
|
||||
update_port("power", avatar, 0);
|
||||
update_port("audio-in", avatar, 0);
|
||||
update_port("audio-out", avatar, 0);
|
||||
update_port("data-1", avatar, 0);
|
||||
update_port("data-2", avatar, 0);
|
||||
tell(id, C_LIGHTS, "port power " + (string)llGetKey());
|
||||
tell(id, C_LIGHTS, "port audio-in " + (string)llGetKey());
|
||||
tell(id, C_LIGHTS, "port audio-out " + (string)llGetKey());
|
||||
|
|
@ -426,6 +419,19 @@ default {
|
|||
case "port-disconnect":
|
||||
update_port(gets(argv, 1), id, 0);
|
||||
break;
|
||||
case "accept":
|
||||
key user = getk(argv, 1);
|
||||
if(power_on) {
|
||||
tell(controller, C_LIGHTS, "command " + (string)user + " " + (string)user + " power off");
|
||||
llTriggerSound("88af7a41-10e7-06ad-799e-313cbbe0ffad", 1);
|
||||
} else {
|
||||
tell(controller, C_LIGHTS, "command " + (string)user + " " + (string)user + " power on");
|
||||
llTriggerSound("dccca2d0-b50c-e069-a1f9-c3336249421d", 1);
|
||||
}
|
||||
break;
|
||||
case "denyaccess":
|
||||
tell(getk(argv, 1), 0, "Access denied.");
|
||||
break;
|
||||
default:
|
||||
#ifdef USE_VERBOSE
|
||||
echo("Unhandled light bus (" + src + "): " + msg);
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
echo Loading interface preset; this may take a minute.
|
||||
input say !working loading theme...
|
||||
xset width = interface.width
|
||||
xset height = interface.height
|
||||
xset ratio = interface.ratio
|
||||
if $ratio < 0.1 then jump fail
|
||||
if $width > 1 then jump width-set
|
||||
set width = height * ratio
|
||||
echo Inferring screen width is $width px
|
||||
@width-set:
|
||||
db interface.sound.go bd99a429-e579-0367-57c7-5dda70605ad0
|
||||
db interface.sound.deny edf4ea86-3472-6c85-ad0c-c9b154c86f5d
|
||||
db interface.sound.act ad78297b-25a7-ba88-65b3-bfecb20f50a8
|
||||
db interface.sound.menu-open 5724f680-4c89-110f-4ab5-fd4e0d48e44c
|
||||
db interface.sound.menu-close b3a1c106-c602-fba6-895e-e9b440d78c86
|
||||
db interface.sound.shield-down 348fcd3d-7993-54fb-720c-c5ebc42de505
|
||||
db interface.sound.env-alarm 5db9d9d6-6eda-485e-6436-e97dfdc1983c
|
||||
db interface.sound.damage d248834e-ae0d-a844-8a98-de6cdaa67760
|
||||
db interface.sound.repair 5b93518c-2a6d-baef-3fc2-ee3af6cf74a4
|
||||
db interface.sound.alert 83f5fcc7-3084-853c-8402-218b0f45abd2
|
||||
db interface.sound.alert-dismiss 08d80c61-8c9e-3a3b-7855-4f8d17ccc791
|
||||
db interface.sound.test 971afde2-73e2-5dd8-6c8a-6c7ee25c7411
|
||||
db interface.compass {"enabled":1,"texture":"59e91121-24d6-4b75-a8fb-86b5d7884d05"}
|
||||
db interface.gauges {"backdrop":"b6be113e-ca8a-5dd5-ae62-d98a594f9af7","left":"6c1677da-3269-a749-375b-ea4c58e6dbc4","mode":1,"right":"5dc5becd-fd4a-4bb5-fb67-4689ec5621be"}
|
||||
db interface.altimeter {"enabled":1,"texture":"a7a40d18-dad2-a0c9-f4c5-eef2f269b0f4"}
|
||||
db interface.speedometer.enabled 1
|
||||
db interface.crosshair 6
|
||||
db interface.crosshairs 78408016-021a-df86-1e54-045cee3a13bd
|
||||
db interface.sitrep {"enabled":1,"texture":"df7e2139-5292-55f9-ec1f-fe98f62db80e"}
|
||||
db interface.working.texture 37ae2327-ca45-b943-e576-e3f167d9ac5a
|
||||
db interface.combat {"labels":"14d62124-1a1e-adfe-9801-198c5b8b445a","nums":"94b0deff-7902-167f-36cd-0d2cff968da3"}
|
||||
# db interface.boot {"animate":1,"size":"<512, 256, 0>","texture":"8c3988a5-decd-24b9-0065-941ecfb74a4d"}
|
||||
db interface.boot {"animate":0,"size":"<1024,1024,0>","texture":"73627ff7-145a-3336-074d-4efcde686388"}
|
||||
db interface.target 73f90096-3965-de9e-00d3-b2cae5c9df6d
|
||||
db interface.alert.texture 221f5de6-28c6-c475-1344-599a61f197cb
|
||||
db interface.menu {"anchor":"3b9b2508-4b6b-e194-5be5-18d6d75fcc2e","backdrop":"df7d6401-b07f-aedc-e250-018fbc54b7e4","mode":1}
|
||||
db interface.font murky-truth
|
||||
db display.warning.texture 61050423-80d6-89f4-b753-9a762693788c
|
||||
db display.warning.mode 2
|
||||
db display.devices.texture 23c806b8-b923-971c-765e-10cdebec7aa6
|
||||
set device-scale = 2
|
||||
if $height > 1600 then set device-scale = 4
|
||||
if $height < 900 then set device-scale = 1
|
||||
db display.devices.scale $device-scale
|
||||
set device-scale %undefined
|
||||
db display.devices.mode 1
|
||||
db display.devices.wires 1
|
||||
db interface.gauges.badge.offset <0, 0, 0>
|
||||
db interface.gauges.badge.scale 1
|
||||
db interface.color 4
|
||||
db interface.altimeter.offset <0, 380, 0>
|
||||
db interface.speedometer.offset <0, 408, -226>
|
||||
set x = $width \ 2.5
|
||||
set y = $height \ 2.5
|
||||
db interface.alert.offset <0, $x, $y>
|
||||
set y = $height \ 2 - 34
|
||||
db interface.compass.offset <0, 0, $y>
|
||||
set x = $width \ 2 - 121
|
||||
db interface.sitrep.offset <0, $x, 237>
|
||||
set y = 0 - $height \ 2 + 92
|
||||
db display.warning.offset <0, 0, $y>
|
||||
set x = 0 - $width \ 3.5
|
||||
set y = $height \ 2 - 56
|
||||
db interface.menu.offset <0, $x, $y>
|
||||
set y = 0 - $y
|
||||
db interface.gauges.offset <0, 0, $y>
|
||||
set y = $y + 64
|
||||
db interface.working.offset <0, -464, $y>
|
||||
set x = 0 - $width \ 2 + 100
|
||||
db display.devices.offset <0, $x, -256>
|
||||
|
||||
xset so = interface.sexuality.offset
|
||||
if $so is %undefined then jump no_sexuality
|
||||
set y = 0 - $height * 3 \ 8 + 14
|
||||
db interface.sexuality.offset <0, 0, $y>
|
||||
@no_sexuality:
|
||||
set so %undefined
|
||||
|
||||
service interface restart
|
||||
reset display
|
||||
set x %undefined
|
||||
set y %undefined
|
||||
echo Interface preset loaded.
|
||||
jump cleanup
|
||||
@fail:
|
||||
echo Could not determine screen width. Run Setup first.
|
||||
@cleanup:
|
||||
input say !done loading theme...
|
||||
set width %undefined
|
||||
set height %undefined
|
||||
set ratio %undefined
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
if $rlv is %undefined then set rlv ~ARES
|
||||
persona set marker 475b270a-8dc0-2b53-210d-32d4dc6ebc7c 475b270a-8dc0-2b53-210d-32d4dc6ebc7c475b270a-8dc0-2b53-210d-32d4dc6ebc7c
|
||||
persona set path $rlv/persona/cat
|
||||
persona set action {}
|
||||
|
||||
persona set action.yes Affirmative.
|
||||
persona set action.no Negative.
|
||||
persona set action.hi Mew there.
|
||||
persona set action.bye See nya.
|
||||
persona set action.ok Acknowledged.
|
||||
persona set action.thanks Thanks nyuw.
|
||||
persona set action.ready Ready.
|
||||
persona set action.cannot This unit cannot comply.
|
||||
persona set action.error An error has occurred.
|
||||
persona set action.use This unit is available to assist.
|
||||
persona set action.use? @say This unit offers \$pm.refl to assist.
|
||||
persona set action.help This unit requires assistance.
|
||||
persona set action.help? Do you require assistance?
|
||||
persona set action.explain Please, elaborate.
|
||||
persona set action.mind @say This unit cannot comply while \$pm.gen cortex is disabled.
|
||||
persona set action.mew Mew.~
|
||||
persona set action.nya Nya.~
|
||||
|
||||
power load full
|
||||
policy bolts off
|
||||
|
||||
db set input.censored /me meowmeows
|
||||
|
||||
kinematics Livie
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
if $rlv is %undefined then set rlv ~ARES
|
||||
persona set marker 475b270a-8dc0-2b53-210d-32d4dc6ebc7c 475b270a-8dc0-2b53-210d-32d4dc6ebc7c 475b270a-8dc0-2b53-210d-32d4dc6ebc7c
|
||||
persona set path $rlv/persona/pony
|
||||
persona set action {}
|
||||
|
||||
persona set action.y /me stomps once
|
||||
persona set action.yes /me stomps once
|
||||
persona set action.ok /me stomps once
|
||||
persona set action.ready /me stomps once
|
||||
persona set action.n /me stomps twice
|
||||
persona set action.no /me stomps twice
|
||||
persona set action.cannot /me stomps twice
|
||||
persona set action.hi /me curtsies
|
||||
persona set action.bye /me curtsies
|
||||
persona set action.thanks /me curtsies
|
||||
persona set action.nicker /me nickers
|
||||
persona set action.whinny /me whinnies
|
||||
persona set action.lol /me nickers
|
||||
persona set action.blow /me blows
|
||||
persona set action.fuck /me blows
|
||||
persona set action.tired /me yawns
|
||||
persona set action.yawn /me yawns
|
||||
persona set action.squeal /me squeals
|
||||
persona set action.scared /me squeals
|
||||
persona set action.sigh /me sighs
|
||||
|
||||
power flight off
|
||||
power reach off
|
||||
power amplifier off
|
||||
power mind off
|
||||
|
||||
power load pony
|
||||
policy bolts on
|
||||
|
||||
db set input.censored /me whinnies
|
||||
|
||||
kinematics Stumpy
|
||||
Loading…
Reference in New Issue