v3.2.6 REFINEMENT: Finalized KVP Handshake Sentinel for 'Final Girlz I.N.C.' detection
This commit is contained in:
parent
a0ee02c7f8
commit
478a808676
1 changed files with 27 additions and 8 deletions
|
|
@ -20,6 +20,7 @@ string getPlayerName(key id) {
|
||||||
#define TIMER_IDLE 0
|
#define TIMER_IDLE 0
|
||||||
#define TIMER_STATUS 1
|
#define TIMER_STATUS 1
|
||||||
#define TIMER_VICTORY_DELAY 2 // Timer mode for victory glow display
|
#define TIMER_VICTORY_DELAY 2 // Timer mode for victory glow display
|
||||||
|
#define TIMER_XP_CHECK 3 // Timer mode for Experience sentinel ping
|
||||||
integer currentTimerMode = 0; // Track what the timer is currently doing
|
integer currentTimerMode = 0; // Track what the timer is currently doing
|
||||||
float timerInterval = 1.0; // How often timer() is called for checks
|
float timerInterval = 1.0; // How often timer() is called for checks
|
||||||
integer victoryDelayTimer = 0; // Track victory delay timing
|
integer victoryDelayTimer = 0; // Track victory delay timing
|
||||||
|
|
@ -131,6 +132,7 @@ integer DIALOG_CHANNEL;
|
||||||
integer dialogHandle = -1;
|
integer dialogHandle = -1;
|
||||||
integer botHandle = -1;
|
integer botHandle = -1;
|
||||||
integer rollHandle = -1;
|
integer rollHandle = -1;
|
||||||
|
key sentinelQueryID = NULL_KEY; // Track the Experience Sentinel ping
|
||||||
|
|
||||||
// Channel initialization function
|
// Channel initialization function
|
||||||
initializeChannels() {
|
initializeChannels() {
|
||||||
|
|
@ -180,15 +182,12 @@ checkMemoryUsage(string context) {
|
||||||
// REMOVED: emergencyMemoryCleanup() - delegated to Controller_Memory.lsl
|
// REMOVED: emergencyMemoryCleanup() - delegated to Controller_Memory.lsl
|
||||||
// REMOVED: reportMemoryStats() - delegated to Controller_Memory.lsl
|
// REMOVED: reportMemoryStats() - delegated to Controller_Memory.lsl
|
||||||
|
|
||||||
// Experience Sentinel - Checks if the required experience is enabled on the parcel
|
// Experience Sentinel - Functional probe to check if Experience is allowed on land
|
||||||
checkExperience() {
|
checkExperience() {
|
||||||
list parcelXps = llGetParcelDetails(llGetPos(), [PARCEL_DETAILS_EXPERIENCE_LIST]);
|
dbg("🔍 [Peril Dice] Experience Sentinel: Pinging KVP to verify land readiness...");
|
||||||
if (llListFindList(parcelXps, [EXPERIENCE_ID]) == -1) {
|
currentTimerMode = TIMER_XP_CHECK;
|
||||||
llOwnerSay("⚠️ [Peril Dice] SYSTEM WARNING: The 'Final Girlz I.N.C.' Experience is NOT active on this parcel!");
|
llSetTimerEvent(3.0); // 3-second window for KVP handshake
|
||||||
llOwnerSay("🛡️ [Peril Dice] Auto-HUD attachment will FAIL. To fix: Open 'About Land' -> 'Experiences' -> 'Add' and search for 'Final Girlz I.N.C.'");
|
sentinelQueryID = llReadKeyValue("_SENTINEL_PING_");
|
||||||
} else {
|
|
||||||
dbg("✅ [Peril Dice] Experience Sentinel: Land is ready for Final Girlz I.N.C. features.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send status message to scoreboard using link messages
|
// Send status message to scoreboard using link messages
|
||||||
|
|
@ -1261,6 +1260,15 @@ default {
|
||||||
llSetTimerEvent(0);
|
llSetTimerEvent(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (currentTimerMode == TIMER_XP_CHECK) {
|
||||||
|
// If the timer hits in XP_CHECK mode, it means llReadKeyValue FAILED to respond
|
||||||
|
// This almost always means the Experience is not enabled on the land.
|
||||||
|
llSetTimerEvent(0);
|
||||||
|
currentTimerMode = TIMER_IDLE;
|
||||||
|
|
||||||
|
llOwnerSay("⚠️ [Peril Dice] SYSTEM WARNING: The 'Final Girlz I.N.C.' Experience is NOT active on this parcel!");
|
||||||
|
llOwnerSay("🛡️ [Peril Dice] Auto-HUD attachment will FAIL. To fix: Open 'About Land' -> 'Experiences' -> 'Add' and search for 'Final Girlz I.N.C.'");
|
||||||
|
}
|
||||||
else if (currentTimerMode == TIMER_VICTORY_DELAY) {
|
else if (currentTimerMode == TIMER_VICTORY_DELAY) {
|
||||||
if (victoryDelayTimer > 0) {
|
if (victoryDelayTimer > 0) {
|
||||||
integer elapsed = llGetUnixTime() - victoryDelayTimer;
|
integer elapsed = llGetUnixTime() - victoryDelayTimer;
|
||||||
|
|
@ -1274,4 +1282,15 @@ default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dataserver(key query_id, string data) {
|
||||||
|
if (query_id == sentinelQueryID) {
|
||||||
|
// WE GOT A RESPONSE! This means the Experience IS enabled on the land.
|
||||||
|
// Even if data is "NOT_FOUND", the fact that we got an event is confirmation.
|
||||||
|
sentinelQueryID = NULL_KEY;
|
||||||
|
llSetTimerEvent(0);
|
||||||
|
currentTimerMode = TIMER_IDLE;
|
||||||
|
dbg("✅ [Peril Dice] Experience Sentinel: KVP Handshake Successful. Land is ready!");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue