From 684767fe86f28f6e6023b5ca1d62983bf42ce609 Mon Sep 17 00:00:00 2001 From: ChrisChrome Date: Fri, 16 Aug 2024 21:56:51 -0600 Subject: [PATCH] v1.2.4 - Add setting to enable/disable exit delay countdown! --- Demo Stuff/DemoScript.lua | 7 ++ .../Base Parts/SystemTemplate.rbxm | Bin 79475 -> 80086 bytes .../Sirens/RFS NAC Converter.rbxm | Bin 3524 -> 3805 bytes Scripts/SecuritySystem.lua | 109 +++++++++--------- 4 files changed, 59 insertions(+), 57 deletions(-) diff --git a/Demo Stuff/DemoScript.lua b/Demo Stuff/DemoScript.lua index 4558a7b..658d87f 100644 --- a/Demo Stuff/DemoScript.lua +++ b/Demo Stuff/DemoScript.lua @@ -30,6 +30,13 @@ local demoLoop = function() repeat wait() until armState == 3 wait(5) disarm() + wait(5) + script.Parent.Zones["2"].Sensors.Demo.Alarm.Value = true + wait(1) + script.Parent.Zones["2"].Sensors.Demo.Alarm.Value = false + repeat wait() until armState == 4 + wait(5) + disarm() end end task.spawn(demoLoop) \ No newline at end of file diff --git a/Individual Components/Base Parts/SystemTemplate.rbxm b/Individual Components/Base Parts/SystemTemplate.rbxm index 651e4fed90fd0fc860d9bf6d5da84f6d2044c059..3802011f75ea473302db1aa3519eda2d9b1e9789 100644 GIT binary patch delta 9535 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 UmEhbCeUE;?EHS4)0#CVc3bKY}abG{h3 zH+axZ+7ElKknY3%G177Pz9_cQ)~6PhR|Wv!aYPRPPywGF#N~C%tT^BX0y!6@wBABO zr0aH+{3vvA>nI|JHf}92#BqSKVi8 zNO8A*eD`uOLZgM}(Tb>uZpV-qwf zuOXFcau~Op$8{kt=tYBY$EA(za=Ki)YFLh8@vp2XL(phLk>f>fUbogaSInZpo3fNi zYV#Q$^el3xO*?k;pgyjzmbjmB&FT7I3O}Rn_xekoCu>JNnw-jJV%eyur6*EiEU6^L z)TBHqCgO=?R-TBd@yXN}9Q9-}@wlW#Wig>jvKUJ%ikM8Mv!axYYnqZ#Cz9$Ux059` zp~SPQ7*D1%VoXXVMKzjAi5WSgrKB`k#pE$)^u{$grqn<1oF7`lbVqnO2uE`~_vXM) zT6a^Z-}gkuc68GTjk0{%=k=NeHVwM7X_S240Q_P%HzShMEu-W_QuSO*=u*II!L!jw zR2ubzUxh#*ItD}qnt)E@2k`H}nXFOD`zFC(g&vXs+$)^I=RQZbw<2~$-zkN>1fC}E zjr!Khc_Yte*mFR7f&Nwhu4SZFBQOpD3HRnA46p6J0C&R7F^ZM4rEfE37>49wARiU^ zsF;JZ@)2nNjkJGD{`4$Y41LS6BDRU?MsnNwu36gno{%@;W&DU^Rm)`9EPMsp%nXa3 z2iGzAn2#`WvUeSX?onE^Nh=m5sW8bz@f+}5fbkV2gJsGY+*vAAN$30nSmbLm3l#n) zf`)4Row{H+=}mJxkLiR)147Wd2!e;eBh-Bjgnr?bWHoQ% z!r!Ox8Fgty=p;~^g*|NFEu7R_gxmlNGnc|lxh~Kf;3|O70{$ZQ^F@JtEwD)ZlHi|) zAlw4aG{8-u?+71CqdtrvVuS?-i}rv6(qnHNs@9du7n2N0@?Cm#}{_?A2BNM?QwN%_4Gm*eYD7y-yJE=LiR` z??d_N;rZkA3ascGcJo@?9`xk}aRhCOJOIKRwBtYA`xC|M=WeAgg73Zr^xVPgf$p9D J`n&Ce{{m=#BTxVU delta 1034 zcmZWo&2JM&6n}4aV-pvQ2&EU2#G_hN^r=*R0#D@wS8kgF8xVw=Y7rW zn>WArB>iygtKG=AMlR#f*5)L}x9;Q%F&01daeXlj0AnNy-K0j}7)ib1JM9pd^7f!d zeVE1Mwuz55;}E$Hybg3nv}g{;N0eDRceW;IJ*W)A%jk69-qBi5e-qo+v*=$&^m*UD zrgE#jyWY5URYIJk>IByEy0jUfN*X7Zs#T#oq>_>(ryX}q+I6qvHzcZ%f=ZvD^>ELk z^wB60OCMABI(K}odgi!F`2W4Rig(-v&kg0ZaQOA+-f633tVCbLPDbqD0O76y9IHegXc4oCsyB?fKTa zn97NA2JnZL>H(U1_= z8Z2WTnPkQ{M2Q`wtHN{C?=rl@lJ_B1z7KF0_+Mz;h6H|z`_1xgFe)&NUqieCcnjbr zjPrRI)qg>@SH~)J4^zt+kt3hKbSaASv4WzN2)vGKOFs~f`vSULROJN#)BK1AvwGC#nTtQ_XaJO8J|~>!BmG-(xf6sUkYSL8RI3PO zdjA{Rg=tX|GoNW4Q zH(RuJV~T4!$)dFqD7tSK25jw+8maRn3bVigVelR!=%_Q6nuNhk0G^0`9!mcQrE}IR diff --git a/Scripts/SecuritySystem.lua b/Scripts/SecuritySystem.lua index 25e2758..334059b 100644 --- a/Scripts/SecuritySystem.lua +++ b/Scripts/SecuritySystem.lua @@ -1,4 +1,4 @@ -local defaultCodes = {"1234"} +local defaultCodes = require(script.DefaultCodes) local dataStore = nil local DataStoreService = game:GetService("DataStoreService") @@ -20,7 +20,7 @@ end function setup(parentScript) -- dont touch - local version = "v1.2.2" + local version = "v1.2.4" -- codes object, will be swapped for data store later codes = dataStore:GetAsync("codes") @@ -46,6 +46,8 @@ function setup(parentScript) fires = {} zones = {} keypads = {} + countdown = nil + --[[ armState 0 is disarmed @@ -135,71 +137,44 @@ delay 3 slow pulse (entry/exit delay main) 4 fast pulse (end of exit/entry delay and trouble) ]] - + function switchKeypadAudio(enabled) + for i,e in ipairs(script.KeypadAudio:GetChildren()) do + if e.Name ~= enabled then + e.Disabled = true + else + e.Enabled = true + end + end + end function audioLoop() while true do wait() if not power then curTone = 0 end if curTone == 0 then -- Stop tone - for i, keypad in ipairs(keypads) do - stopAud(keypad.Display.hi) - stopAud(keypad.Display.lo) - end + switchKeypadAudio("off") elseif curTone == 1 then -- Constant tone - for i, keypad in ipairs(keypads) do - playAud(keypad.Display.hi) - stopAud(keypad.Display.lo) - end + switchKeypadAudio("constant") elseif curTone == 2 then -- Slow pulse tone - for i, keypad in ipairs(keypads) do - stopAud(keypad.Display.hi) - stopAud(keypad.Display.lo) - end - wait(0.5) - for i, keypad in ipairs(keypads) do - playAud(keypad.Display.hi) - end - wait(0.5) + switchKeypadAudio("slowpulse") elseif curTone == 3 then -- Fast pulse tone - for i, keypad in ipairs(keypads) do - stopAud(keypad.Display.hi) - stopAud(keypad.Display.lo) - end - wait(0.065) - for i, keypad in ipairs(keypads) do - playAud(keypad.Display.hi) - end - wait(0.065) + switchKeypadAudio("fastpulse") elseif curTone == 4 then -- HiLo tone alarm - for i, keypad in ipairs(keypads) do - playAud(keypad.Display.hi) - stopAud(keypad.Display.lo) - end - wait(0.5) - for i, keypad in ipairs(keypads) do - stopAud(keypad.Display.hi) - playAud(keypad.Display.lo) - end - wait(0.5) + switchKeypadAudio("hilo") elseif curTone == 5 then -- Fire alarm tone - -- Make this do temporal 3 - for i = 1, 3 do - for i, keypad in ipairs(keypads) do - playAud(keypad.Display.hi) - stopAud(keypad.Display.lo) - end - wait(.5) - for i, keypad in ipairs(keypads) do - stopAud(keypad.Display.hi) - stopAud(keypad.Display.lo) - end - wait(.5) - end - wait(1) + switchKeypadAudio("fire") end end end + function alignText(leftText, rightText, totalWidth) + local leftLength = #leftText + local rightLength = #rightText + local spaceBetween = totalWidth - (leftLength + rightLength) + + -- If the total length of both texts exceeds the totalWidth, return concatenated textif spaceBetween < 0thenreturn leftText .. rightText + return leftText .. string.rep(" ", spaceBetween) .. rightText + end + function displayLoop() while true do wait() @@ -238,7 +213,12 @@ delay ux.setLEDs(keypads, "armed", true) ux.setLEDs(keypads, "ready", false) if delay == 1 then - ux.setDisplays(keypads, "ARMED ***AWAY***", "You may exit now") + if settings.showCountdown then + ln2 = alignText("May Exit Now", tostring(settings.exitDelay - countdown), 16) + else + ln2 = "You may exit now" + end + ux.setDisplays(keypads, "ARMED ***AWAY***", ln2) elseif delay == 2 then ux.setDisplays(keypads, "DISARM SYSTEM", "Or alarm occurs.") else @@ -265,7 +245,12 @@ delay ux.setLEDs(keypads, "armed", true) ux.setLEDs(keypads, "ready", false) if delay == 1 then - ux.setDisplays(keypads, "ARMED *MAXIMUM*", "You may exit now") + if settings.showCountdown then + ln2 = alignText("May Exit Now", tostring(settings.exitDelay - countdown), 16) + else + ln2 = "You may exit now" + end + ux.setDisplays(keypads, "ARMED *MAXIMUM*", ln2) else ux.setDisplays(keypads, "ARMED *MAXIMUM*", "***ALL SECURE***") end @@ -448,10 +433,12 @@ delay for i = 1, settings.exitDelay do if armState ~= 1 then delay = 0 + countdown = 0 return end + countdown = i wait(1) - if i >= settings.exitDelay then delay = 0 end + if i >= settings.exitDelay then delay = 0 countdown = 0 end end end) end @@ -469,13 +456,16 @@ delay if armState ~= 2 then changeTone(0) delay = 0 + countdown = 0 return end + countdown = i wait(1) if i >= settings.exitDelay - 10 then changeTone(3) end if i >= settings.exitDelay then changeTone(0) delay = 0 + countdown = 0 end end end) @@ -494,13 +484,16 @@ delay if armState ~= 6 then changeTone(0) delay = 0 + countdown = 0 return end + countdown = i wait(1) if i >= settings.exitDelay - 10 then changeTone(3) end if i >= settings.exitDelay then changeTone(0) delay = 0 + countdown = 0 end end end) @@ -518,10 +511,12 @@ delay for i = 1, settings.exitDelay do if armState ~= 5 then delay = 0 + countdown = 0 return end + countdown = i wait(1) - if i >= settings.exitDelay then delay = 0 end + if i >= settings.exitDelay then delay = 0 countdown = 0 end end end) end