fixed leaving game

This commit is contained in:
RebeccaNod1 2025-08-02 11:00:46 -05:00
parent d96b92a989
commit 61ff39cee0
2 changed files with 35 additions and 0 deletions

View file

@ -288,6 +288,36 @@ default {
}
return;
}
// Handle leave game requests
if (num == 107) {
list parts = llParseString2List(str, ["|"], []);
if (llList2String(parts, 0) == "LEAVE_GAME") {
string leavingName = llList2String(parts, 1);
key leavingKey = (key)llList2String(parts, 2);
integer idx = llListFindList(players, [leavingKey]);
if (idx != -1) {
// Remove player's float
integer ch = -777000 + idx;
llMessageLinked(LINK_SET, MSG_CLEANUP_FLOAT, (string)ch, NULL_KEY);
// Remove from all lists
players = llDeleteSubList(players, idx, idx);
names = llDeleteSubList(names, idx, idx);
lives = llDeleteSubList(lives, idx, idx);
picksData = llDeleteSubList(picksData, idx, idx);
// Update helpers
updateHelpers();
llOwnerSay("👋 " + leavingName + " left the game");
// Check if game should end (less than 2 players)
if (llGetListLength(names) == 1) {
llSay(0, " " + llList2String(names, 0) + " is the last player standing and wins the game!");
resetGame();
} else if (llGetListLength(names) == 0) {
resetGame();
}
}
}
return;
}
}
listen(integer channel, string name, key id, string msg) {

View file

@ -132,6 +132,11 @@ default {
llMessageLinked(LINK_SET, MSG_REGISTER_PLAYER, pname + "|" + (string)id, NULL_KEY);
llMessageLinked(LINK_SET, MSG_REZ_FLOAT, pname, id);
}
else if (msg == "Leave Game") {
// Send leave game message to main controller
string pname = llKey2Name(id);
llMessageLinked(LINK_SET, 107, "LEAVE_GAME|" + pname + "|" + (string)id, NULL_KEY);
}
else if (msg == "Manage Picks") {
llMessageLinked(LINK_THIS, 202, "REQUEST_PLAYER_LIST", id);
}