alarm-system/Scripts/Dialer.lua
2024-08-01 21:28:06 -06:00

107 lines
3.1 KiB
Lua

--- DONT TOUCH ---
local HttpService = game:GetService("HttpService")
local indicator = script.Parent.housing.logo.Logo.Model.ThreeDTextObject.uni0069
local acct = script.Parent.accountNumber.Value
local data = script.Parent.Parent.Reporting
local GetName = game:GetService("MarketplaceService"):GetProductInfo(game.PlaceId)
local placeName = GetName.Name
local dialing = false
local sent = false
local fail = false
local url = "http://pbx.litenet.tel:3000/api/v1/webhook/kca/" .. acct
task.spawn(function()
local state = false
if not indicator then return end
while true do
wait()
if not HttpService.HttpEnabled then
indicator.Color = Color3.new(1,1,0)
return
end
if dialing then
if state then
state = false
indicator.Color = Color3.new(1, 1, 1)
indicator.Material = Enum.Material.SmoothPlastic
wait(.1)
else
state = true
indicator.Color = Color3.new(0, 1, 1)
indicator.Material = Enum.Material.Neon
wait(.1)
end
elseif sent then
indicator.Color = Color3.new(0,1,0)
indicator.Material = Enum.Material.Neon
wait(1)
indicator.Color = Color3.new(1, 1, 1)
indicator.Material = Enum.Material.SmoothPlastic
sent = false
elseif fail then
indicator.Color = Color3.new(1,1,0)
indicator.Material = Enum.Material.Neon
wait(1)
indicator.Color = Color3.new(1, 1, 1)
indicator.Material = Enum.Material.SmoothPlastic
sent = false
end
end
end)
function generateTransactionId()
-- generate a 10 digit random number
local transactionId = ""
for i = 1, 10 do
transactionId = transactionId .. tostring(math.random(0, 9))
end
return transactionId
end
-- Watch for updates to script.Parent.Parent.Reporting.armState.Value
script.Parent.Parent.Reporting.armState.Changed:Connect(function(val)
if val == 3 then -- We've gone into alarm
-- Prepare an HTTP POST request JSON data
local postData = {
["event"] = "alarm",
["transaction"] = generateTransactionId(),
["zoneNumber"] = data.alarmZone.Value,
["zoneName"] = data.Parent.Zones[data.alarmZone.Value].zoneName.Value,
["placeName"] = placeName,
["systemName"] = data.Parent.Settings.SystemName.Value or "Your security system"
}
dialing = true
local success, response = HttpService:PostAsync(url, HttpService:JSONEncode(postData), Enum.HttpContentType.ApplicationJson)
if success then
dialing = false
sent = true
else
dialing = false
fail = true
end
elseif val == 4 then -- fire
-- Prepare an HTTP POST request JSON data
local postData = {
["accountNumber"] = acct,
["event"] = "fire alarm",
["transaction"] = generateTransactionId(),
["zoneNumber"] = data.fireZone.Value,
["zoneName"] = data.Parent.Zones[data.fireZone.Value].zoneName.Value,
["placeName"] = placeName,
["systemName"] = data.Parent.Settings.SystemName.Value or "Your security system"
}
dialing = true
local success, response = HttpService:PostAsync(url, HttpService:JSONEncode(postData), Enum.HttpContentType.ApplicationJson)
if success then
dialing = false
sent = true
else
dialing = false
fail = true
end
end
end)