Not a member of GistPad yet?
Sign Up,
it unlocks many cool features!
- --[[
- WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
- ]]
- -- =====================================================
- -- ACHERON DEMONOLOGY HELPER
- -- FIXED VERSION
- -- =====================================================
- local Players = game:GetService("Players")
- local UserInputService = game:GetService("UserInputService")
- local Player = Players.LocalPlayer
- local CoreGui = game:GetService("CoreGui")
- -- =====================================================
- -- CLEAN OLD GUI
- -- =====================================================
- local OldGui = CoreGui:FindFirstChild("AcheronDemonologyHelper")
- if OldGui then
- OldGui:Destroy()
- end
- -- =====================================================
- -- GUI
- -- =====================================================
- local AcheronGui = Instance.new("ScreenGui")
- AcheronGui.Name = "AcheronDemonologyHelper"
- AcheronGui.ResetOnSpawn = false
- AcheronGui.Parent = CoreGui
- local Main = Instance.new("Frame")
- Main.Name = "Main"
- Main.Size = UDim2.fromOffset(320, 440)
- Main.Position = UDim2.new(0.5, -160, 0.5, -220)
- Main.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
- Main.BorderSizePixel = 0
- Main.Active = true
- Main.Parent = AcheronGui
- local Corner = Instance.new("UICorner")
- Corner.CornerRadius = UDim.new(0, 10)
- Corner.Parent = Main
- -- =====================================================
- -- DRAGGING
- -- =====================================================
- local dragging = false
- local dragStart
- local startPosition
- Main.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseButton1
- or input.UserInputType == Enum.UserInputType.Touch then
- dragging = true
- dragStart = input.Position
- startPosition = Main.Position
- input.Changed:Connect(function()
- if input.UserInputState == Enum.UserInputState.End then
- dragging = false
- end
- end)
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if not dragging then
- return
- end
- if input.UserInputType == Enum.UserInputType.MouseMovement
- or input.UserInputType == Enum.UserInputType.Touch then
- local delta = input.Position - dragStart
- Main.Position = UDim2.new(
- startPosition.X.Scale,
- startPosition.X.Offset + delta.X,
- startPosition.Y.Scale,
- startPosition.Y.Offset + delta.Y
- )
- end
- end)
- -- =====================================================
- -- TITLE
- -- =====================================================
- local Title = Instance.new("TextLabel")
- Title.Size = UDim2.new(1, -20, 0, 40)
- Title.Position = UDim2.fromOffset(10, 5)
- Title.BackgroundTransparency = 1
- Title.Text = "Acheron Demonology Helper"
- Title.TextColor3 = Color3.fromRGB(255, 255, 255)
- Title.TextSize = 20
- Title.Font = Enum.Font.GothamBold
- Title.TextXAlignment = Enum.TextXAlignment.Left
- Title.Parent = Main
- -- =====================================================
- -- EVIDENCE FRAME
- -- =====================================================
- local EvidenceFrame = Instance.new("Frame")
- EvidenceFrame.Size = UDim2.new(1, -20, 0, 275)
- EvidenceFrame.Position = UDim2.fromOffset(10, 48)
- EvidenceFrame.BackgroundTransparency = 1
- EvidenceFrame.Parent = Main
- local Layout = Instance.new("UIListLayout")
- Layout.Padding = UDim.new(0, 2)
- Layout.Parent = EvidenceFrame
- local EvidenceLabels = {}
- local EvidenceNames = {
- "EMF Level 5",
- "Freezing Temperatures",
- "Handprints",
- "Ghost Orb",
- "Spirit Box",
- "Inscription",
- "Wither",
- "Laser Projector"
- }
- for _, Name in ipairs(EvidenceNames) do
- local Label = Instance.new("TextLabel")
- Label.Size = UDim2.new(1, 0, 0, 31)
- Label.BackgroundTransparency = 1
- Label.Text = Name .. ": False"
- Label.TextColor3 = Color3.fromRGB(255, 80, 80)
- Label.TextSize = 16
- Label.Font = Enum.Font.Gotham
- Label.TextXAlignment = Enum.TextXAlignment.Left
- Label.Parent = EvidenceFrame
- EvidenceLabels[Name] = Label
- end
- -- =====================================================
- -- TEMPERATURE
- -- =====================================================
- local TemperatureLabel = Instance.new("TextLabel")
- TemperatureLabel.Size = UDim2.new(1, -20, 0, 30)
- TemperatureLabel.Position = UDim2.fromOffset(10, 326)
- TemperatureLabel.BackgroundTransparency = 1
- TemperatureLabel.Text = "Temperature: --.-°C (Unknown)"
- TemperatureLabel.TextColor3 = Color3.fromRGB(255, 80, 80)
- TemperatureLabel.TextSize = 16
- TemperatureLabel.Font = Enum.Font.Gotham
- TemperatureLabel.TextXAlignment = Enum.TextXAlignment.Left
- TemperatureLabel.Parent = Main
- -- =====================================================
- -- GHOST DATABASE
- -- =====================================================
- local GhostEvidence = {
- Aswang = {
- "Wither",
- "EMF Level 5",
- "Inscription"
- },
- Banshee = {
- "Ghost Orb",
- "Handprints",
- "Freezing Temperatures"
- },
- Demon = {
- "EMF Level 5",
- "Handprints",
- "Freezing Temperatures"
- },
- Doppelganger = {
- "Freezing Temperatures",
- "Inscription",
- "Spirit Box"
- },
- Dullahan = {
- "Wither",
- "Laser Projector",
- "Freezing Temperatures"
- },
- Dybbuk = {
- "Wither",
- "Handprints",
- "Freezing Temperatures"
- },
- Entity = {
- "Spirit Box",
- "Handprints",
- "Laser Projector"
- },
- Ghoul = {
- "Spirit Box",
- "Freezing Temperatures",
- "Ghost Orb"
- },
- Keres = {
- "Wither",
- "Handprints",
- "Spirit Box"
- },
- Leviathan = {
- "Ghost Orb",
- "Inscription",
- "Handprints"
- },
- Nightmare = {
- "EMF Level 5",
- "Spirit Box",
- "Ghost Orb"
- },
- Oni = {
- "Spirit Box",
- "Freezing Temperatures",
- "Laser Projector"
- },
- Phantom = {
- "EMF Level 5",
- "Handprints",
- "Ghost Orb"
- },
- Ravager = {
- "EMF Level 5",
- "Handprints",
- "Laser Projector"
- },
- Revenant = {
- "Inscription",
- "EMF Level 5",
- "Freezing Temperatures"
- },
- Shadow = {
- "EMF Level 5",
- "Inscription",
- "Laser Projector"
- },
- Siren = {
- "Wither",
- "Spirit Box",
- "EMF Level 5"
- },
- Specter = {
- "EMF Level 5",
- "Freezing Temperatures",
- "Laser Projector"
- },
- Spirit = {
- "Handprints",
- "Inscription",
- "Spirit Box"
- },
- ["The Wisp"] = {
- "Wither",
- "Laser Projector",
- "Ghost Orb"
- },
- Umbra = {
- "Ghost Orb",
- "Laser Projector",
- "Handprints"
- },
- Vesper = {
- "Inscription",
- "Wither",
- "Handprints"
- },
- Vex = {
- "Wither",
- "Ghost Orb",
- "Freezing Temperatures"
- },
- Wraith = {
- "EMF Level 5",
- "Spirit Box",
- "Laser Projector"
- },
- Wretch = {
- "EMF Level 5",
- "Inscription",
- "Laser Projector"
- }
- }
- -- =====================================================
- -- GHOST RESULT
- -- =====================================================
- local GhostResult = Instance.new("TextLabel")
- GhostResult.Size = UDim2.new(1, -20, 0, 45)
- GhostResult.Position = UDim2.fromOffset(10, 360)
- GhostResult.BackgroundTransparency = 1
- GhostResult.Text = "Ghost: Unknown"
- GhostResult.TextColor3 = Color3.fromRGB(255, 255, 255)
- GhostResult.TextSize = 20
- GhostResult.Font = Enum.Font.GothamBold
- GhostResult.TextXAlignment = Enum.TextXAlignment.Left
- GhostResult.Parent = Main
- -- =====================================================
- -- CONFIRMED EVIDENCE
- -- =====================================================
- local ConfirmedEvidence = {}
- for _, Name in ipairs(EvidenceNames) do
- ConfirmedEvidence[Name] = false
- end
- -- =====================================================
- -- SAFE TEMPERATURE DETECTION
- -- =====================================================
- local function GetTemperature()
- local Map = workspace:FindFirstChild("Map")
- if not Map then
- return nil, nil
- end
- local Rooms = Map:FindFirstChild("Rooms")
- if not Rooms then
- return nil, nil
- end
- local LowestTemp = nil
- local LowestRoom = nil
- for _, Room in ipairs(Rooms:GetChildren()) do
- local Temp = Room:GetAttribute("Temperature")
- if typeof(Temp) == "number" then
- if LowestTemp == nil or Temp < LowestTemp then
- LowestTemp = Temp
- LowestRoom = Room
- end
- end
- end
- return LowestTemp, LowestRoom
- end
- local function DetectFreezing(Temp)
- return Temp ~= nil and Temp < 0
- end
- -- =====================================================
- -- HANDPRINTS
- -- =====================================================
- local function DetectHandprints()
- for _, Obj in ipairs(workspace:GetDescendants()) do
- if Obj:IsA("BasePart") then
- if Obj.Name == "Handprint1"
- or Obj.Name == "Handprint2"
- or Obj.Name == "Footprint"
- or Obj.Name == "Footprint1" then
- return true
- end
- end
- end
- return false
- end
- -- =====================================================
- -- GHOST ORB
- -- =====================================================
- local function DetectGhostOrb()
- for _, Obj in ipairs(workspace:GetDescendants()) do
- if Obj:IsA("BasePart")
- and Obj.Name == "GhostOrb" then
- return true
- end
- end
- return false
- end
- -- =====================================================
- -- EMF
- -- =====================================================
- local function GetEMFLevel()
- local Level = 0
- for _, Obj in ipairs(workspace:GetDescendants()) do
- if Obj:IsA("Folder")
- and Obj.Name == "Indicators" then
- for _, V in ipairs(Obj:GetChildren()) do
- if V:IsA("BasePart")
- and V.Material == Enum.Material.Neon then
- local Number = tonumber(V.Name)
- if Number and Number > Level then
- Level = Number
- end
- end
- end
- end
- end
- return Level
- end
- -- =====================================================
- -- WITHER
- -- =====================================================
- local function DetectWither()
- local Items = workspace:FindFirstChild("Items")
- if not Items then
- return false
- end
- for _, Obj in ipairs(Items:GetDescendants()) do
- if Obj:IsA("BasePart")
- and Obj.Name == "Petals"
- and Obj.Color == Color3.new(0, 0, 0) then
- return true
- end
- end
- return false
- end
- -- =====================================================
- -- INSCRIPTION
- -- =====================================================
- local function CheckSpiritBook(Container)
- if not Container then
- return false
- end
- for _, Obj in ipairs(Container:GetDescendants()) do
- if Obj:IsA("Decal") then
- local Model =
- Obj:FindFirstAncestorWhichIsA("Model")
- if Model
- and Model:GetAttribute("ItemName") == "Spirit Book"
- and Obj.Texture ~= "" then
- return true
- end
- end
- end
- return false
- end
- local function DetectInscription()
- if CheckSpiritBook(workspace:FindFirstChild("Items")) then
- return true
- end
- if CheckSpiritBook(Player.Character) then
- return true
- end
- return false
- end
- -- =====================================================
- -- SPIRIT BOX
- -- =====================================================
- local function DetectSpiritBox()
- local PlayerGui = Player:FindFirstChild("PlayerGui")
- if not PlayerGui then
- return false
- end
- local Subtitles = PlayerGui:FindFirstChild("Subtitles")
- if not Subtitles then
- return false
- end
- local Holder = Subtitles:FindFirstChild("Holder")
- if not Holder then
- return false
- end
- local TextLabel = Holder:FindFirstChild("TextLabel")
- if not TextLabel then
- return false
- end
- local GhostText = TextLabel.Text or ""
- return #GhostText:gsub("%s+", "") >= 3
- end
- -- =====================================================
- -- LASER PROJECTOR
- -- =====================================================
- local function DetectLaser()
- local Ghost = workspace:FindFirstChild("Ghost")
- if not Ghost then
- return false
- end
- return Ghost:GetAttribute("InLaser") == true
- end
- -- =====================================================
- -- UPDATE CONFIRMED EVIDENCE
- -- =====================================================
- local function UpdateConfirmedEvidence(Current)
- if Current.EMFLevel == 5 then
- ConfirmedEvidence["EMF Level 5"] = true
- end
- if Current["Freezing Temperatures"] then
- ConfirmedEvidence["Freezing Temperatures"] = true
- end
- if Current["Handprints"] then
- ConfirmedEvidence["Handprints"] = true
- end
- if Current["Ghost Orb"] then
- ConfirmedEvidence["Ghost Orb"] = true
- end
- if Current["Spirit Box"] then
- ConfirmedEvidence["Spirit Box"] = true
- end
- if Current["Inscription"] then
- ConfirmedEvidence["Inscription"] = true
- end
- if Current["Wither"] then
- ConfirmedEvidence["Wither"] = true
- end
- if Current["Laser Projector"] then
- ConfirmedEvidence["Laser Projector"] = true
- end
- end
- -- =====================================================
- -- GET EVIDENCE
- -- =====================================================
- local function GetEvidence()
- local Temp, TempRoom = GetTemperature()
- local EMF = GetEMFLevel()
- local Current = {
- ["EMF Level 5"] = EMF == 5,
- ["Freezing Temperatures"] =
- DetectFreezing(Temp),
- ["Handprints"] =
- DetectHandprints(),
- ["Ghost Orb"] =
- DetectGhostOrb(),
- ["Spirit Box"] =
- DetectSpiritBox(),
- ["Inscription"] =
- DetectInscription(),
- ["Wither"] =
- DetectWither(),
- ["Laser Projector"] =
- DetectLaser(),
- EMFLevel = EMF,
- Temperature = Temp,
- TemperatureRoom = TempRoom
- }
- UpdateConfirmedEvidence(Current)
- for _, Name in ipairs(EvidenceNames) do
- Current[Name] = ConfirmedEvidence[Name]
- end
- return Current
- end
- -- =====================================================
- -- IDENTIFY GHOST
- -- =====================================================
- local function IdentifyGhost(Evidence)
- local Matches = {}
- for GhostName, RequiredEvidence in pairs(GhostEvidence) do
- local Match = true
- for _, RequiredEvidenceName in ipairs(RequiredEvidence) do
- if Evidence[RequiredEvidenceName] ~= true then
- Match = false
- break
- end
- end
- if Match then
- table.insert(Matches, GhostName)
- end
- end
- if #Matches == 1 then
- return Matches[1]
- elseif #Matches > 1 then
- table.sort(Matches)
- return table.concat(Matches, " / ")
- end
- return "Unknown"
- end
- -- =====================================================
- -- UPDATE UI
- -- =====================================================
- local function UpdateUI()
- local Evidence = GetEvidence()
- -- =============================================
- -- EVIDENCE
- -- =============================================
- for _, Name in ipairs(EvidenceNames) do
- local Label = EvidenceLabels[Name]
- local State = Evidence[Name] == true
- if Name == "EMF Level 5" then
- if State then
- Label.Text = "EMF 5: True"
- Label.TextColor3 =
- Color3.fromRGB(0, 255, 120)
- else
- Label.Text =
- "EMF Level: " ..
- tostring(Evidence.EMFLevel or 0)
- Label.TextColor3 =
- Color3.fromRGB(255, 80, 80)
- end
- else
- Label.Text =
- Name .. ": " .. tostring(State)
- if State then
- Label.TextColor3 =
- Color3.fromRGB(0, 255, 120)
- else
- Label.TextColor3 =
- Color3.fromRGB(255, 80, 80)
- end
- end
- end
- -- =============================================
- -- TEMPERATURE
- -- =============================================
- if Evidence.Temperature ~= nil
- and Evidence.TemperatureRoom then
- TemperatureLabel.Text = string.format(
- "Temperature: %.1f°C (%s)",
- Evidence.Temperature,
- Evidence.TemperatureRoom.Name
- )
- if Evidence.Temperature < 0 then
- TemperatureLabel.TextColor3 =
- Color3.fromRGB(0, 255, 120)
- else
- TemperatureLabel.TextColor3 =
- Color3.fromRGB(255, 80, 80)
- end
- else
- TemperatureLabel.Text =
- "Temperature: --.-°C (Unknown)"
- TemperatureLabel.TextColor3 =
- Color3.fromRGB(255, 80, 80)
- end
- -- =============================================
- -- GHOST
- -- =============================================
- local Ghost = IdentifyGhost(Evidence)
- GhostResult.Text =
- "Ghost: " .. Ghost
- if Ghost ~= "Unknown" then
- GhostResult.TextColor3 =
- Color3.fromRGB(0, 255, 120)
- else
- GhostResult.TextColor3 =
- Color3.fromRGB(255, 255, 255)
- end
- end
- -- =====================================================
- -- UPDATE LOOP
- -- =====================================================
- task.spawn(function()
- while AcheronGui.Parent do
- local Success, Error =
- pcall(UpdateUI)
- if not Success then
- warn("[Acheron] Update error:", Error)
- end
- task.wait(0.5)
- end
- end)
RAW Paste Data
Copied
