From 355ffb68730c79b4d0bcffe638d9a7b3cc91f1f7 Mon Sep 17 00:00:00 2001 From: onefang Date: Mon, 6 Sep 2021 22:19:32 +1000 Subject: Clean up various vehicle bugs. --- 1AOor2.lsl | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/1AOor2.lsl b/1AOor2.lsl index eae6b72..3305494 100644 --- a/1AOor2.lsl +++ b/1AOor2.lsl @@ -500,6 +500,7 @@ integer doThing(key id, string button, string fr, string cmd, string data, integ llGiveInventory(id, "soap-bubble"); llRemoteLoadScriptPin(id, "1chatter", llList2Integer(p, 0), TRUE, bREZ); llRemoteLoadScriptPin(id, ScriptName, llList2Integer(p, 0), TRUE, bREZ); + addEvent(0.5, "PING"); } else if ("REZ_DONE" == cmd) { @@ -507,7 +508,6 @@ integer doThing(key id, string button, string fr, string cmd, string data, integ { sendPrim(TheirKey, "SIT", [Stalkee, What, llDumpList2String(Whats, "|")]); sendPrim(TheirKey, "COUPLES", [Owner]); - Chosen = 0; } else if (-1 == Chosen) killPrim(); else @@ -573,7 +573,14 @@ integer doThing(key id, string button, string fr, string cmd, string data, integ else if ("SIT_DONE" == cmd) { d("SIT_DONE for " + llKey2Name(data)); - if(data == Stalkee) + if (0 == Chosen) + { + Chosen = 1; + addEvent(0.0, "COUPLE_TIMEOUT"); + sendScript(lCMD, "1ring", [fINT, Owner, Stalkee, "STOP", ""]); + S(llKey2Name(data) + " just grabbed your offer of '" + What + "'."); + } + if(NULL_KEY == Controller) { if ("" != Posed) { @@ -589,6 +596,35 @@ d("SIT_DONE for " + llKey2Name(data)); llRequestPermissions(Controller, PERMISSION_CONTROL_CAMERA | PERMISSION_TAKE_CONTROLS); } } + else if ("PING" == cmd) + { + key k = TheirKey; + + if (NULL_KEY != BossKey) + k = BossKey; + if (pingPrim(k)) + addEvent(0.5, "PING"); + else + { + if (NULL_KEY != BossKey) + { + S("Boss went away, slacking off."); + die(); + } + else + { + S("Vehicle went away."); + TheirKey = NULL_KEY; + if (99.0 <= TPangle) + { + s("Switching AO to 1ring object."); + nextPose = ""; + oldController(Owner); + checkAO(); + } + } + } + } else if ("DIE" == cmd) die(); else if ("DIE_DONE" == cmd) { @@ -765,11 +801,11 @@ float TPangle = 999.0; killPrim() { -d("killPrim"); if (NULL_KEY != TheirKey) sendPrim(TheirKey, "DIE", []); Stalkee = NULL_KEY; What = ""; + Whats = []; Chosen = 0; } @@ -1639,6 +1675,11 @@ oldController(key t) checkSitters(integer del) { + if (Attached) + { + checkAO(); + return; + } list new = []; integer l = llGetNumberOfPrims(); integer lnk; @@ -2070,9 +2111,22 @@ init() laterInit() { + integer i = llGetInventoryNumber(INVENTORY_NOTECARD); + list posCards = []; + string item; + while (i-- > 0) + { + item = llGetInventoryName(INVENTORY_NOTECARD, i); + if (llSubStringIndex(item, ".POSITIONS") == 0) posCards += (list) item; + } + readPos(posCards); + d("Loaded " + (string) (llGetListLength(Poses) / psSTRIDE) + " positions in " + + (string) (llGetTimeOfDay() - Start) + " seconds."); + if (!loadCard("ZHAO II", FALSE)) // In an object full of random scripts, "Default" is a lousy name. if (!loadCard("Default", FALSE)) loadCard("AOConfig", TRUE); // Casper AOs are less common. + if (Attached) { s("AO mode."); @@ -2085,23 +2139,19 @@ laterInit() } else { + llSitTarget(position, llEuler2Rot(rotat * DEG_TO_RAD)); if (NULL_KEY == BossKey) - d("Vehicle mode."); + s("Vehicle mode."); else - d("Vehicle mode, slaved to " + llKey2Name(BossKey) + "."); - integer i = llGetInventoryNumber(INVENTORY_NOTECARD); - list posCards = []; - string item; - while (i-- > 0) + s("Vehicle mode, slaved to " + llKey2Name(BossKey) + "."); + + if (NULL_KEY != BossKey) { - item = llGetInventoryName(INVENTORY_NOTECARD, i); - if (llSubStringIndex(item, ".POSITIONS") == 0) posCards += (list) item; + checkSitters(FALSE); + sendPrim(BossKey, "REZ_DONE", []); + addEvent(0.5, "PING"); +// llSetLinkCamera(LINK_THIS, <-3.0, 0.0, 1.0>, <0.0, 0.0, 0.0>); } - readPos(posCards); - d("Loaded " + (string) (llGetListLength(Poses) / psSTRIDE) + " positions in " - + (string) (llGetTimeOfDay() - Start) + " seconds."); - checkSitters(FALSE); - if (NULL_KEY != BossKey) sendPrim(BossKey, "REZ_DONE", []); } addEvent(6.0 + llFrand(10.0), "SMILE"); } -- cgit v1.1