v3.2.6 FINAL: Hybrid HUD Production Release - Verified Direct-Target Detach and Production Constants
This commit is contained in:
parent
8b1dc9dd88
commit
404dba66a5
2 changed files with 12 additions and 4 deletions
|
|
@ -15,7 +15,8 @@ integer calculateChannel(integer offset) {
|
||||||
// Use BOTH owner's key AND object's key to make channels unique per game instance
|
// Use BOTH owner's key AND object's key to make channels unique per game instance
|
||||||
// This prevents interference when same owner has multiple game tables
|
// This prevents interference when same owner has multiple game tables
|
||||||
string ownerStr = (string)llGetOwner();
|
string ownerStr = (string)llGetOwner();
|
||||||
string objectStr = (string)llGetKey();
|
// CRITICAL: Always use root prim (1) for channel calculation so scripts in child prims match
|
||||||
|
string objectStr = (string)llGetLinkKey(1);
|
||||||
string combinedStr = ownerStr + objectStr;
|
string combinedStr = ownerStr + objectStr;
|
||||||
|
|
||||||
// Create a more unique hash using both keys
|
// Create a more unique hash using both keys
|
||||||
|
|
@ -36,6 +37,8 @@ initializeChannels() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Maximum number of players allowed in the game
|
// Maximum number of players allowed in the game
|
||||||
|
// v3.2.5: Forced Sync for Debug Transparency
|
||||||
|
#define SCRIPT_ID_FLOATER 1
|
||||||
#define MAX_PLAYERS 10
|
#define MAX_PLAYERS 10
|
||||||
|
|
||||||
// Debug control - set to TRUE for verbose pick debugging, FALSE for normal operation
|
// Debug control - set to TRUE for verbose pick debugging, FALSE for normal operation
|
||||||
|
|
@ -356,9 +359,10 @@ default {
|
||||||
integer chTarget = FLOATER_BASE_CHANNEL + i;
|
integer chTarget = FLOATER_BASE_CHANNEL + i;
|
||||||
if (targetAv != NULL_KEY) {
|
if (targetAv != NULL_KEY) {
|
||||||
llRegionSayTo(targetAv, chTarget, "CLEANUP");
|
llRegionSayTo(targetAv, chTarget, "CLEANUP");
|
||||||
} else {
|
|
||||||
llRegionSay(chTarget, "CLEANUP");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Redundant broadcast for total coverage
|
||||||
|
llRegionSay(chTarget, "CLEANUP");
|
||||||
llSleep(0.05);
|
llSleep(0.05);
|
||||||
}
|
}
|
||||||
// Clear ALL registries to allow fresh re-registration via Rez Guard
|
// Clear ALL registries to allow fresh re-registration via Rez Guard
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ default {
|
||||||
listenHandle = llListen(start_param, "", NULL_KEY, "");
|
listenHandle = llListen(start_param, "", NULL_KEY, "");
|
||||||
myName = "";
|
myName = "";
|
||||||
llSetRemoteScriptAccessPin(1337);
|
llSetRemoteScriptAccessPin(1337);
|
||||||
|
// Forced sync for v3.2.5 diagnostic
|
||||||
dbg("📊 [Status Float] Listener active on channel: " + (string)start_param);
|
dbg("📊 [Status Float] Listener active on channel: " + (string)start_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,7 +90,10 @@ default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (message == "CLEANUP") {
|
else if (message == "CLEANUP") {
|
||||||
dbg("🧹 [Status Float] CLEANUP signal received. Detaching and dying...");
|
dbg("🧹 [Status Float] CLEANUP signal received. Detaching from avatar...");
|
||||||
|
llDetachFromAvatar();
|
||||||
|
// Fallback for non-attachments
|
||||||
|
llSleep(0.1);
|
||||||
llDie();
|
llDie();
|
||||||
}
|
}
|
||||||
else if (llSubStringIndex(message, "ATTACH_TO:") == 0) {
|
else if (llSubStringIndex(message, "ATTACH_TO:") == 0) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue