Peril_Dice/StatFloat.lsl

39 lines
1.3 KiB
Text

key target;
string displayText;
default {
state_entry() {
llOwnerSay("🧭 StatFloat active");
llSetText("", <1,1,1>, 1.0);
llSetTimerEvent(1.0); // track every second
}
listen(integer channel, string name, key id, string message) {
if (llSubStringIndex(message, "FLOAT:") == 0) {
list parts = llParseString2List(message, ["|"], []);
if (llGetListLength(parts) >= 2) {
target = (key)llGetSubString(llList2String(parts, 0), 6, -1);
displayText = llList2String(parts, 1);
llSetText(displayText, <1,1,1>, 1.0);
llOwnerSay("✅ Received FLOAT for: " + (string)target);
}
} else if (message == "CLEANUP") {
llOwnerSay("🧹 Cleaning up...");
llDie();
}
}
on_rez(integer start_param) {
llListen(start_param, "", NULL_KEY, "");
llOwnerSay("📡 Listening on channel " + (string)start_param);
}
timer() {
if (target != NULL_KEY && llKey2Name(target) != "") {
vector pos = llList2Vector(llGetObjectDetails(target, [OBJECT_POS]), 0) + <1,0,1>;
llSetRegionPos(pos);
} else {
llOwnerSay("⚠️ Target key invalid or avatar not found.");
}
}
}