Peril_Dice/Verbose_Logger.lsl

79 lines
2.9 KiB
Text

// === Verbose Logger - Simple Debug Toggle Controller ===
// Provides system-wide verbose logging toggle functionality
// Scripts use their own VERBOSE_LOGGING flags, this just coordinates the toggle
// Verbose logging control
integer VERBOSE_LOGGING = FALSE;
// Loop protection - prevent rapid toggle spam
float lastToggleTime = 0.0;
#define TOGGLE_COOLDOWN 2.0 // Minimum 2 seconds between toggles
// Message constants for verbose logging system
#define MSG_VERBOSE_TOGGLE 9010 // Toggle verbose logging on/off
#define MSG_VERBOSE_BROADCAST 9011 // Broadcast logging state to all modules
// Report memory status of this script
reportMemoryStatus() {
if (VERBOSE_LOGGING) {
integer free = llGetFreeMemory();
integer used = llGetUsedMemory();
llOwnerSay("🔍 [Verbose Logger] Memory - Free: " + (string)free + " Used: " + (string)used);
}
}
default {
state_entry() {
llOwnerSay("🔍 Verbose Logger initialized - ready to handle debug toggle");
}
on_rez(integer start_param) {
llOwnerSay("🔍 Verbose Logger rezzed - debug system ready");
VERBOSE_LOGGING = FALSE; // Default to off after rez
}
link_message(integer sender, integer num, string str, key id) {
// Handle verbose logging toggle - FIXED to prevent loops
if (num == MSG_VERBOSE_TOGGLE && str == "TOGGLE_VERBOSE_LOGS") {
// Only respond if sender is NOT the Main Controller (prevent forwarding loop)
if (sender == 1) {
// This came from Main Controller forwarding - ignore to prevent loop
return;
}
// Loop protection - prevent rapid toggle spam
float currentTime = llGetTime();
if (currentTime - lastToggleTime < TOGGLE_COOLDOWN) {
return; // Silent ignore during cooldown
}
lastToggleTime = currentTime;
VERBOSE_LOGGING = !VERBOSE_LOGGING;
string status = "OFF";
if (VERBOSE_LOGGING) {
status = "ON";
llOwnerSay("🔍 [Verbose Logger] Debug logging: ENABLED");
} else {
llOwnerSay("🔍 [Verbose Logger] Debug logging: DISABLED");
}
// Public announcement
llSay(0, "🔍 Verbose logging system-wide: " + status);
// Broadcast the new setting to all modules
llMessageLinked(LINK_SET, MSG_VERBOSE_BROADCAST, "VERBOSE_LOGGING|" + (string)VERBOSE_LOGGING, id);
return;
}
// Handle verbose logging broadcast from other scripts
if (num == MSG_VERBOSE_BROADCAST) {
list parts = llParseString2List(str, ["|"], []);
if (llList2String(parts, 0) == "VERBOSE_LOGGING") {
VERBOSE_LOGGING = llList2Integer(parts, 1);
return;
}
}
}
}