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 651e4fe..3802011 100644 Binary files a/Individual Components/Base Parts/SystemTemplate.rbxm and b/Individual Components/Base Parts/SystemTemplate.rbxm differ diff --git a/Individual Components/Sirens/RFS NAC Converter.rbxm b/Individual Components/Sirens/RFS NAC Converter.rbxm index d09ccc8..5be03c6 100644 Binary files a/Individual Components/Sirens/RFS NAC Converter.rbxm and b/Individual Components/Sirens/RFS NAC Converter.rbxm differ 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