Peril_Dice/Leaderboard_Bridge.lsl

56 lines
2.8 KiB
Text

// Leaderboard Bridge - Receives text from Game Scoreboard Manager and sends to XyzzyText
// This script goes in the root prim of your leaderboard object (alongside XyzzyText master)
// Communication channels
integer LEADERBOARD_CHANNEL = -12346; // Listen for messages from scoreboard
// XyzzyText Communication Constants
integer DISPLAY_STRING = 204000;
integer DISPLAY_EXTENDED = 204001;
default {
state_entry() {
llListen(LEADERBOARD_CHANNEL, "", "", "");
llOwnerSay("Leaderboard Bridge ready - listening on channel " + (string)LEADERBOARD_CHANNEL);
// Send initial blank display to all banks
llMessageLinked(LINK_SET, DISPLAY_STRING, " ", "0"); // Bank 0 (left)
llMessageLinked(LINK_SET, DISPLAY_STRING, " ", "1"); // Bank 1 (middle)
llMessageLinked(LINK_SET, DISPLAY_STRING, " ", "2"); // Bank 2 (right)
}
listen(integer channel, string name, key id, string message) {
if (channel == LEADERBOARD_CHANNEL) {
llOwnerSay("DEBUG: Received leaderboard message: " + message);
if (llSubStringIndex(message, "LEFT_TEXT|") == 0) {
// Extract left column text and send to bank 0
string leftText = llGetSubString(message, 10, -1); // Remove "LEFT_TEXT|" prefix
llOwnerSay("DEBUG: Sending to LEFT bank (0): " + leftText);
llMessageLinked(LINK_SET, DISPLAY_STRING, leftText, "0");
} else if (llSubStringIndex(message, "MIDDLE_TEXT|") == 0) {
// Extract middle column text and send to bank 1
string middleText = llGetSubString(message, 12, -1); // Remove "MIDDLE_TEXT|" prefix
llOwnerSay("DEBUG: Sending to MIDDLE bank (1): " + middleText);
llMessageLinked(LINK_SET, DISPLAY_STRING, middleText, "1");
} else if (llSubStringIndex(message, "RIGHT_TEXT|") == 0) {
// Extract right column text and send to bank 2
string rightText = llGetSubString(message, 11, -1); // Remove "RIGHT_TEXT|" prefix
llOwnerSay("DEBUG: Sending to RIGHT bank (2): " + rightText);
llMessageLinked(LINK_SET, DISPLAY_STRING, rightText, "2");
} else if (message == "CLEAR_LEADERBOARD") {
// Clear all displays
llOwnerSay("DEBUG: Clearing all leaderboard displays");
llMessageLinked(LINK_SET, DISPLAY_STRING, " ", "0");
llMessageLinked(LINK_SET, DISPLAY_STRING, " ", "1");
llMessageLinked(LINK_SET, DISPLAY_STRING, " ", "2");
} else {
llOwnerSay("DEBUG: Unrecognized leaderboard message: " + message);
}
}
}
}