Deepwoken Script | PRIVATE SCRIPT SOURCE – APRIL 2022

Created by ????

Features:

  • NO FOG
  • NO CLIP
  • NO KILL BRICKS
  • NO FALL
  • NO STUN
  • CHEST ESP
  • ARTIFACT ESP
  • AREA ESP
  • PLAYER ESP
  • TRAIN CHARISMA
  • TRAIN INTELLIGENCE
  • & MORE!
if game.PlaceId ~= 6032399813 and game.PlaceId ~= 5735553160 then
	print("???? wrong game retard")
	return nil
end

local debugFlag = false

if getgenv().ArabwokenExecuteCheck and not debugFlag then
	return
end

local LPH_JIT_ULTRA = function(a) return a end
local LPH_JIT_MAX = function(a) return a end
local ContextActionService = game:GetService("ContextActionService")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local HttpService = game:GetService("HttpService")

if not debugFlag then
	getgenv().ArabwokenExecuteCheck = true
end

local library,errmsg = debugFlag and loadfile("UILibBackup.lua") or loadstring(game:HttpGet("https://raw.githubusercontent.com/Sem563/VenyxUILibraryEdit/main/UILibrary.lua"))
if not library then print(library, errmsg) return end

--Logging
local request = syn and syn.request or request

--Options
local OptionsTemplate = {
	NoFallEnabled = false,
	NoStunEnabled = false,
	WalkSpeedEnabled = false,
	WalkSpeed = 25,
	JumpPowerEnabled = false,
	JumpPower = 100,
	FlyEnabled = false,
	FlySpeed = 50,
	NoclipEnabled = false,
	NoKillBricks = false,
	NoFogEnabled = false,
	TrainCharisma = false,
	TrainIntelligence = false,
	TextSize = 15,
	PlayerESP = true,
	PlayerEnemyColor = Color3.fromRGB(255,0,0),
	PlayerFriendColor = Color3.fromRGB(0,255,0),
	MaxPlayerRange = 2500,
	PlayerShowHealth = true,
	PlayerShowDistance = true,
	PlayerShowWeapon = true,
	PlayerShowApproximateLevel = true,
	EnemyNPC = true,
	EnemyNPCColor = Color3.fromRGB(255,0,0),
	EnemyNPCRange = 1000,
	EnemyShowHealth = true,
	EnemyShowDistance = true,
	EnemyShowWeapon = true,
	ChestESPEnabled = false,
	ArtifactESPEnabled = false,
	AreaESPEnabled = false,
	NoclipKeybind = "",
	WalkSpeedKeybind = "",
	JumpPowerKeybind = "",
	ToggleMenuKeybind = "F4",
	FlyKeybind = "",
	PlayerESPKeybind = "",
	NPCESPKeybind = "",
}

if not isfolder("ArabWoken") then
	makefolder("ArabWoken") 
end

local RealSettings = {}

local function SerializeC3(obj)
	return {obj.R, obj.G, obj.B}
end

local function SerializeSettings()
	local r_Table = {}
	for _,v in next, RealSettings do
		r_Table[_] = v
	end
	r_Table.PlayerEnemyColor = SerializeC3(r_Table.PlayerEnemyColor)
	r_Table.PlayerFriendColor = SerializeC3(r_Table.PlayerFriendColor)
	r_Table.EnemyNPCColor = SerializeC3(r_Table.EnemyNPCColor)
	r_Table.NoclipKeybind = r_Table.NoclipKeybind and r_Table.NoclipKeybind.Name or ""
	r_Table.WalkSpeedKeybind = r_Table.WalkSpeedKeybind and r_Table.WalkSpeedKeybind.Name or ""
	r_Table.JumpPowerKeybind = r_Table.JumpPowerKeybind and r_Table.JumpPowerKeybind.Name or ""
	r_Table.ToggleMenuKeybind = r_Table.ToggleMenuKeybind and r_Table.ToggleMenuKeybind.Name or ""
	r_Table.FlyKeybind = r_Table.FlyKeybind and r_Table.FlyKeybind.Name or ""
	r_Table.PlayerESPKeybind = r_Table.PlayerESPKeybind and r_Table.PlayerESPKeybind.Name or ""
	r_Table.NPCESPKeybind = r_Table.NPCESPKeybind and r_Table.NPCESPKeybind.Name or ""
	return HttpService:JSONEncode(r_Table)
end

local function GetKeyCodeFromName(n)
	for _,v in next, Enum.KeyCode:GetEnumItems() do
		if v.Name == n then
			return v
		end
	end
	return nil
end

local SettingsMT = {
	__call = function()
		return RealSettings
	end,
	__newindex = function(t,k,v)
		RealSettings[k] = v
		writefile("ArabWoken/Settings.JSON", SerializeSettings())
	end,
	__index = function(t, k)
		return RealSettings[k]
	end
}

local function GetDictionaryLength(t)
	local i = 0;
	for _,_ in next, t do
		i += 1;
	end
	return i
end

local Settings = setmetatable({}, SettingsMT)
if isfile("ArabWoken/Settings.JSON") then
	local s,e = pcall(function()
		RealSettings = HttpService:JSONDecode(readfile("ArabWoken/Settings.JSON"))
	end)
	if not s then -- Malformed JSON object
		print("Malformed JSON Object")
		RealSettings = OptionsTemplate
	elseif GetDictionaryLength(RealSettings) ~= GetDictionaryLength(OptionsTemplate) then
		print("Old Settings Table")
		for i,v in next, RealSettings do
			if OptionsTemplate[i] == nil then
				print("Found extra settings (",i,"): ", v)
			end
		end
		for i,v in next, OptionsTemplate do
			if RealSettings[i] == nil then
				print("Didn't find setting (",i,"): ", v)
			end
		end
		RealSettings = OptionsTemplate
	else
		print("Retrieving Settings")
		RealSettings.PlayerEnemyColor = Color3.new(unpack(Settings.PlayerEnemyColor))
		RealSettings.PlayerFriendColor = Color3.new(unpack(Settings.PlayerFriendColor))
		RealSettings.EnemyNPCColor = Color3.new(unpack(Settings.EnemyNPCColor))
	end
else
	print("No Settings Table")
	RealSettings = OptionsTemplate
end

RealSettings.NoclipKeybind = GetKeyCodeFromName(RealSettings.NoclipKeybind)
RealSettings.ToggleMenuKeybind = GetKeyCodeFromName(RealSettings.ToggleMenuKeybind)
RealSettings.WalkSpeedKeybind = GetKeyCodeFromName(RealSettings.WalkSpeedKeybind)
RealSettings.JumpPowerKeybind = GetKeyCodeFromName(RealSettings.JumpPowerKeybind)
RealSettings.FlyKeybind = GetKeyCodeFromName(RealSettings.FlyKeybind)
RealSettings.PlayerESPKeybind = GetKeyCodeFromName(RealSettings.PlayerESPKeybind)
RealSettings.NPCESPKeybind = GetKeyCodeFromName(RealSettings.NPCESPKeybind)

--// Variables
local Players = game.Players
local lplr = Players.LocalPlayer
local char = lplr.Character
local hum = nil
local mouse = lplr:GetMouse()
local cam = workspace.CurrentCamera
local PreviousHouseName = nil
local Atmosphere = game.Lighting:WaitForChild'Atmosphere'
local executor = identifyexecutor()

local Remotes = game.ReplicatedStorage:WaitForChild("Requests", 10)

if not Remotes then
	lplr:Kick("Failed to grab remote #1")
	return
end

local TouchedConnections = {}
local partCache = {}
local offsetVector = Vector3.new(2,1,2)

local PressedFlyKeys = {}
local FlyKeys = {
	[Enum.KeyCode.W] = true,
	[Enum.KeyCode.S] = true,
	[Enum.KeyCode.A] = true,
	[Enum.KeyCode.D] = true,
	[Enum.KeyCode.Q] = true,
	[Enum.KeyCode.E] = true
}

--// Metamethod hooks
local OldNewIndex
local OldFireServer

local MMHookNewIndex = LPH_JIT_ULTRA(function(self, k, v)
	if checkcaller() then return OldNewIndex(self, k, v) end

	if self == hum and k == "WalkSpeed" and Settings.WalkSpeedEnabled then
		return
	end

	if self == hum and k == "JumpPower" and Settings.JumpPowerEnabled then
		return
	end

	if self == Atmosphere and k == "Density" and Settings.NoFogEnabled then
		return
	end

	return OldNewIndex(self, k, v)
end)

local FSHook = LPH_JIT_ULTRA(function(Event, ...)
    if checkcaller() then return OldFireServer(Event, ...) end
    if ("%s"):format(Event.Name) ~= "Game" and Event.Parent == Remotes and Settings.NoFallEnabled then
        local arg = {...}
        if type(arg[1]) == "number" and arg[1] > 10 and type(arg[2]) == "boolean" and arg[2] == false then
            print("Spoofed falldamage")
            return
        end
    end
    return OldFireServer(Event, ...)
end)

OldFireServer = hookfunction(Instance.new'RemoteEvent'.FireServer, newcclosure(FSHook))
OldNewIndex = hookmetamethod(game, "__newindex", newcclosure(MMHookNewIndex))

--// FUNCTIONS
local unmVector = Vector3.new(-1,-1,-1)
local function TranslateKeyToVector(cframe, key)
	if key == Enum.KeyCode.W then
		return cframe.lookVector
	elseif key == Enum.KeyCode.S then
		return cframe.ZVector
	elseif key == Enum.KeyCode.D then
		return cframe.XVector
	elseif key == Enum.KeyCode.A then
		return cframe.XVector * unmVector
	elseif key == Enum.KeyCode.Q then
		return cframe.YVector
	elseif key == Enum.KeyCode.E then
		return cframe.YVector * unmVector
	end
end

function GetMovementDirection()
	local emptyVector = Vector3.new(0,0,0)
	local camCFrame = cam.CFrame
	for key,_ in next, PressedFlyKeys do
		emptyVector = emptyVector + TranslateKeyToVector(camCFrame, key)
	end
	return emptyVector
end

function CheckPartNoclip(p)
	for part,_ in next, partCache do
		if p == part then
			return
		end
	end
	partCache[p] = {p.CanCollide, p.Transparency}
	p.Transparency = 0.6
	p.CanCollide = false
end

function UpdateNoclipCache(parts)
	for part,colissionid in next, partCache do
		for _,x in next, parts do
			if x == part then
				return
			end
		end
		part.CanCollide = colissionid[1]
		part.Transparency = colissionid[2]
		partCache[part] = nil
	end
end

function VisualizeRegion(r)
	local p = Instance.new("Part")
	p.Anchored = true
	p.CanCollide = false
	p.Material = Enum.Material.Neon
	p.Transparency = 0.7
	p.BrickColor = BrickColor.Red()
	p.Size = r.Size
	p.CFrame = r.CFrame
	p.Parent = workspace
	game:GetService("Debris"):AddItem(p, 0.2)
end

local ConnectionCache = {}
local function DisableChecks(instance, ...)
	if #ConnectionCache > 0 then warn("ERROR IN DISABLING CHECK (CACHE)"); ConnectionCache = {}; end
	local arg = {...}
	for _,v in next, getconnections(instance.Changed) do
		if v.Enabled then
			v:Disable()
			ConnectionCache[#ConnectionCache+1] = v
		end
	end
	for _,prop in next, arg do
		for _,v in next, getconnections(instance:GetPropertyChangedSignal(prop)) do
			if v.Enabled then
				v:Disable()
				ConnectionCache[#ConnectionCache+1] = v
			end
		end
	end
end

local function ReEnableChecks()
	for _,v in next, ConnectionCache do
		v:Enable()
		ConnectionCache[_] = nil
	end
end

local function HopServer()
	math.randomseed(os.clock())
	local plrs = game.Players:GetChildren()
	local targetPlayer
	repeat wait()
		targetPlayer = plrs[math.random(1,#plrs)]
		if targetPlayer == lplr then targetPlayer = nil end
	until targetPlayer
	game.StarterGui:SetCore("PromptBlockPlayer", targetPlayer)
	game.CoreGui.RobloxGui:WaitForChild'PromptDialog':WaitForChild'ContainerFrame':WaitForChild'ConfirmButton'.MouseButton1Click:Connect(function()
		lplr:Kick("Rejoining...")
		game:GetService'TeleportService':Teleport(4111023553)
	end)
end

local IntelligenceToggle --lua moment
local CharismaToggle

local function TrainIntelligence()
	if not Settings.TrainIntelligence then return end
    local tool = lplr.Backpack:FindFirstChild'Math Textbook' or char:FindFirstChild'Math Textbook'
    if not tool then
        UILib:Notify("Dumbass Detected", "You need the \"Math Textbook\" book to use this feature.", function(v) end)
        if Settings.TrainIntelligence then
			wait(1)
			Settings.TrainIntelligence = false
			IntelligenceToggle.Set(Settings.TrainIntelligence)
		end
		return
    end
    tool.Parent = char
    while Settings.TrainIntelligence do
        if not char or not tool or tool.Parent ~= char then
			wait(1)
            Settings.TrainIntelligence = false
            IntelligenceToggle.Set(Settings.TrainIntelligence)
            break
        end
        tool:Activate()
        wait(math.random(2,3.5))
        local ChoiceFrame = lplr.PlayerGui:WaitForChild'ChoicePrompt':WaitForChild'ChoiceFrame'
        local mathText = ChoiceFrame.DescSheet.Desc.Text:gsub("What is ", "")
        local Options = ChoiceFrame.Options
        
        local numberOne = tonumber(mathText:match("^-*%d*%.*%d*"))
        local numberTwo = tonumber(mathText:match("-*%d*%.*%d*$"))
        if not numberOne or not numberTwo then
            break
        end
        local answer = nil
        if mathText:find("times") then
            answer = numberOne * numberTwo
        elseif mathText:find("plus") then
            answer = numberOne + numberTwo
        elseif mathText:find("minus") then
            answer = numberOne - numberTwo
        elseif mathText:find("divided") then
            answer = numberOne / numberTwo
        end
        local answer = Options:FindFirstChild(tostring(answer))
        if not answer then
            break;
        end
        firesignal(answer.MouseButton1Click)
        wait(math.random(3,4)) 
    end
	if Settings.TrainIntelligence then
		Settings.TrainIntelligence = false
		IntelligenceToggle.Set(Settings.TrainIntelligence)
	end
end

local function TrainCharisma()
	if not Settings.TrainCharisma then return end
    local tool = lplr.Backpack:FindFirstChild'How to Make Friends' or char:FindFirstChild'How to Make Friends'
    if not tool then
        UILib:Notify("Dumbass Detected", "You need the \"How to Make Friends\" book to use this feature.", function(v) end)
        if Settings.TrainCharisma then
			wait(1)
			Settings.TrainCharisma = false
			CharismaToggle.Set(Settings.TrainCharisma)
		end
		return
    end
    tool.Parent = char
    while true do
        if not char or not tool or tool.Parent ~= char then
            Settings.TrainCharisma = false
            CharismaToggle.Set(Settings.TrainCharisma)
            break;
        end
        tool:Activate()
        local prompt = lplr.PlayerGui:WaitForChild'SimplePrompt':WaitForChild'Prompt'
        wait(math.random(2,3.5))
        local whitespace = prompt.Text:find("\n")
        local text = prompt.Text
        if whitespace then
            text = text:sub(whitespace+1):gsub('\'', "")
        else
            text = text:gsub('\'', "")
        end
        game.Players:Chat(text)
        wait(math.random(3,4))
    end
	if Settings.TrainCharisma then
		Settings.TrainCharisma = false
		CharismaToggle.Set(Settings.TrainCharisma)
	end
end

--// TOGGLES
function ToggleKillBricks()
	if Settings.NoKillBricks then
		
	end
end

local PreWS
function ToggleWalkSpeed()
	local hum = char:FindFirstChild("Humanoid")
	if not hum then return end
	DisableChecks(hum, "WalkSpeed")
	if Settings.WalkSpeedEnabled then
		PreWS = hum.WalkSpeed
		hum.WalkSpeed = Settings.WalkSpeed
	else
		hum.WalkSpeed = PreWS
		PreWS = nil
	end
	ReEnableChecks()
end

function UpdateWalkSpeed()
	local hum = char:FindFirstChild("Humanoid")
	if not hum then return end
	if Settings.WalkSpeedEnabled then
		DisableChecks(hum, "WalkSpeed")
		hum.WalkSpeed = Settings.WalkSpeed
		ReEnableChecks()
	end
end

local PreJP
function ToggleJumpPower()
	local hum = char:FindFirstChild("Humanoid")
	if not hum then return end
	DisableChecks(hum, "JumpPower")
	if Settings.JumpPowerEnabled then
		PreJP = hum.JumpPower
		hum.JumpPower = Settings.JumpPower
	else
		hum.JumpPower = PreJP
		PreJP = nil
	end
	ReEnableChecks()
end

function UpdateJumpPower()
	local hum = char:FindFirstChild("Humanoid")
	if not hum then return end
	if Settings.JumpPowerEnabled then
		DisableChecks(hum, "JumpPower")
		hum.JumpPower = Settings.JumpPower
		ReEnableChecks()
	end
end

local bv
function ToggleFly()
	if bv then bv:Destroy() end
	if char and char:FindFirstChild'Humanoid' and char.PrimaryPart then
		DisableChecks(char.Humanoid, "PlatformStand")
		if Settings.FlyEnabled then
			char.Humanoid.PlatformStand = true
			local Conns = {}
			for _,v in next, getconnections(char.DescendantAdded) do
				if v.Enabled then
					v:Disable()
					Conns[#Conns+1] = v
				end
			end
			for _,v in next, getconnections(char.PrimaryPart.DescendantAdded) do
				if v.Enabled then
					v:Disable()
					Conns[#Conns+1] = v
				end
			end
			for _,v in next, getconnections(char.PrimaryPart.ChildAdded) do
				if v.Enabled then
					v:Disable()
					Conns[#Conns+1] = v
				end
			end
			bv = Instance.new("BodyVelocity")
			bv.Velocity = Vector3.new(0,0,0)
			bv.P = math.huge
			bv.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
			bv.Parent = char.PrimaryPart
			for _,v in next, Conns do
				v:Enable()
			end
		else
			char.Humanoid.PlatformStand = false
		end
		ReEnableChecks()
	end
end

function ToggleNostun()
	if Settings.NoStunEnabled then

	else

	end
end

function ToggleNoFog()
	if Settings.NoFogEnabled then
		DisableChecks(Atmosphere, "Density")
		Atmosphere.Density = 0
		ReEnableChecks()
	end
end

function ToggleZoom()
	if Settings.MaxZoomEnabled then
		DisableChecks(lplr, "CameraMaxZoomDistance")
		lplr.CameraMaxZoomDistance = 5000
		ReEnableChecks()
	else
		DisableChecks(lplr, "CameraMaxZoomDistance")
		lplr.CameraMaxZoomDistance = 15
		ReEnableChecks()
	end
end

--// GUI
UILib = library().new("ArabWoken")

--// Player Page
local LocalPlayerHolder = UILib:addPage("LocalPlayer")
local MovementSection = LocalPlayerHolder:addSection("Movement")
local ClientSection = LocalPlayerHolder:addSection("Client")
local TrainingSection = LocalPlayerHolder:addSection("Training")

local WalkSpeedToggle = MovementSection:addToggle("WalkSpeed", Settings.WalkSpeedEnabled, function(value)
	Settings.WalkSpeedEnabled = value
	ToggleWalkSpeed()
end)
MovementSection:addSlider("WalkSpeed Multiplier", Settings.WalkSpeed, 10, 250, function(range)
	Settings.WalkSpeed = range
	UpdateWalkSpeed()
end)

local JumpPowerToggle = MovementSection:addToggle("JumpPower", Settings.JumpPowerEnabled, function(value)
	Settings.JumpPowerEnabled = value
	ToggleJumpPower()
end)
MovementSection:addSlider("JumpPower Multiplier", Settings.JumpPower, 10, 500, function(range)
	Settings.JumpPower = range
	UpdateJumpPower()
end)

local FlyToggle = MovementSection:addToggle("Fly", Settings.FlyEnabled, function(value)
	Settings.FlyEnabled = value
	ToggleFly()
end)

MovementSection:addSlider("Fly Speed", Settings.FlySpeed, 5, 50, function(range)
	Settings.FlySpeed = range
end)

local NoclipToggle = MovementSection:addToggle("Noclip", Settings.NoclipEnabled, function(value)
	Settings.NoclipEnabled = value
end)

local NofallToggle = ClientSection:addToggle("Nofall", Settings.NoFallEnabled, function(value)
	Settings.NoFallEnabled = value
end)
--[[
local NostunToggle = ClientSection:addToggle("Nostun", Settings.NoStunEnabled, function(value)
	Settings.NoStunEnabled = value
	ToggleNostun()
end)

local RemoveKillBricksToggle = ClientSection:addToggle("Remove Kill Bricks", Settings.NoKillBricks, function(value)
	Settings.NoKillBricks = value
	ToggleKillBricks()
end)]]

local NoFogToggle = ClientSection:addToggle("No Fog", Settings.NoFogEnabled, function(value)
	Settings.NoFogEnabled = value
	ToggleNoFog()
end)

ClientSection:addButton("Reset", function()
	if char and char:FindFirstChild'Humanoid' and char.Humanoid.Health > 0 then
		char:BreakJoints()
	end
end)
ClientSection:addButton("Server Hop", function()
	HopServer()
end)

IntelligenceToggle = TrainingSection:addToggle("Train Intelligence", Settings.TrainIntelligence, function(v)
	Settings.TrainIntelligence = v
	TrainIntelligence()
end)

CharismaToggle = TrainingSection:addToggle("Train Charisma", Settings.TrainCharisma, function(v)
	Settings.TrainCharisma = v
	TrainCharisma()
end)

--// World Page
--local WorldPageHolder = UILib:addPage("World")


--// ESP Page
local PlayerESPHolder = UILib:addPage("Player ESP")
local PlayerESP = PlayerESPHolder:addSection("Player ESP")
local NPCESP = PlayerESPHolder:addSection("NPC ESP")
local MiscESP = PlayerESPHolder:addSection("Misc")

local PlayerESPToggle = PlayerESP:addToggle("Toggle ESP", Settings.PlayerESP, function(value)
	Settings.PlayerESP = value
end)
PlayerESP:addSlider("ESP Range", Settings.MaxPlayerRange, 0, 100000, function(range)
	Settings.MaxPlayerRange = range
end)
PlayerESP:addToggle("Show Health", Settings.PlayerShowHealth, function(newV)
	Settings.PlayerShowHealth = newV
end)
PlayerESP:addToggle("Show Distance", Settings.PlayerShowDistance, function(newV)
	Settings.PlayerShowDistance = newV
end)
PlayerESP:addToggle("Show Level", Settings.PlayerShowApproximateLevel, function(newV)
	Settings.PlayerShowApproximateLevel = newV
end)
PlayerESP:addToggle("Show Weapon", Settings.PlayerShowWeapon, function(newV)
	Settings.PlayerShowWeapon = newV
end)
PlayerESP:addColorPicker("Enemy Color", Settings.PlayerEnemyColor, function(newColor)
	Settings.PlayerEnemyColor = newColor
end)
PlayerESP:addColorPicker("Friend Color", Settings.PlayerFriendColor, function(newColor)
	Settings.PlayerFriendColor = newColor
end)

local NPCESPToggle = NPCESP:addToggle("Toggle ESP", Settings.EnemyNPC, function(value)
	Settings.EnemyNPC = value
end)
NPCESP:addSlider("ESP Range", Settings.EnemyNPCRange, 0, 100000, function(range)
	Settings.EnemyNPCRange = range
end)
NPCESP:addToggle("Show Health", Settings.EnemyShowHealth, function(newV)
	Settings.EnemyShowHealth = newV
end)
NPCESP:addToggle("Show Distance", Settings.EnemyShowDistance, function(newV)
	Settings.EnemyShowDistance = newV
end)
NPCESP:addToggle("Show Weapon", Settings.EnemyShowWeapon, function(newV)
	Settings.EnemyShowWeapon = newV
end)
NPCESP:addColorPicker("Color", Settings.EnemyNPCColor, function(newColor)
	Settings.EnemyNPCColor = newColor
end)

local ChestESPToggle = MiscESP:addToggle("Chest ESP", Settings.ChestESPEnabled, function(newV)
	Settings.ChestESPEnabled = newV
end)
local ArtifactESPToggle = MiscESP:addToggle("Artifact ESP", Settings.ArtifactESPEnabled, function(newV)
	Settings.ArtifactESPEnabled = newV
end)
local AreaESPToggle = MiscESP:addToggle("Area ESP", Settings.AreaESPEnabled, function(newV)
	Settings.AreaESPEnabled = newV
end)


--// Settings page
local SettingsHolder = UILib:addPage("Settings")
local KeybindSettings = SettingsHolder:addSection("Keybinds")

KeybindSettings:addKeybind("Toggle Gui", Settings.ToggleMenuKeybind, function()
	UILib:toggle()
end, function(newBind)
	Settings.ToggleMenuKeybind = newBind.KeyCode
end)

KeybindSettings:addKeybind("Toggle Noclip", Settings.NoclipKeybind, function()
	Settings.NoclipEnabled = not Settings.NoclipEnabled
	NoclipToggle.Set(Settings.NoclipEnabled)
end, function(newBind)
	Settings.NoclipKeybind = newBind.KeyCode
end)

KeybindSettings:addKeybind("Toggle WalkSpeed", Settings.WalkSpeedKeybind, function()
	Settings.WalkSpeedEnabled = not Settings.WalkSpeedEnabled
	--ToggleWalkSpeed()
	WalkSpeedToggle.Set(Settings.WalkSpeedEnabled)
end, function(newBind)
	Settings.WalkSpeedKeybind = newBind.KeyCode
end)

KeybindSettings:addKeybind("Toggle JumpPower", Settings.JumpPowerKeybind, function()
	Settings.JumpPowerEnabled = not Settings.JumpPowerEnabled
	--ToggleJumpPower()
	JumpPowerToggle.Set(Settings.JumpPowerEnabled)
end, function(newBind)
	Settings.JumpPowerKeybind = newBind.KeyCode
end)

KeybindSettings:addKeybind("Toggle Fly", Settings.FlyKeybind, function()
	Settings.FlyEnabled = not Settings.FlyEnabled
	--ToggleFly()
	FlyToggle.Set(Settings.FlyEnabled)
end, function(newBind)
	Settings.FlyKeybind = newBind.KeyCode
end)

KeybindSettings:addKeybind("Toggle Player ESP", Settings.PlayerESPKeybind, function()
	Settings.PlayerESP = not Settings.PlayerESP
	PlayerESPToggle.Set(Settings.PlayerESP)
end, function(newBind)
	Settings.PlayerESPKeybind = newBind.KeyCode
end)

KeybindSettings:addKeybind("Toggle Enemy ESP", Settings.NPCESPKeybind, function()
	Settings.EnemyNPC = not Settings.EnemyNPC
	NPCESPToggle.Set(Settings.EnemyNPC)
end, function(newBind)
	Settings.NPCESPKeybind = newBind.KeyCode
end)

print("UI LOADED")

--// CONNECTIONS
RunService.Stepped:Connect(LPH_JIT_MAX(function() 
	if Settings.NoclipEnabled and char and char.PrimaryPart then
		local Region = Region3.new(char.PrimaryPart.Position - offsetVector, char.PrimaryPart.Position + offsetVector)
		local parts = workspace:FindPartsInRegion3WithIgnoreList(Region, {char}, 10000)
		for _,v in next, parts do
			CheckPartNoclip(v)
		end
		UpdateNoclipCache(parts)
	else
		for part,colissionid in next, partCache do
			part.CanCollide = colissionid[1]
			part.Transparency = colissionid[2]
			partCache[part] = nil
		end
	end
end))

RunService.RenderStepped:Connect(LPH_JIT_ULTRA(function(delta)
	if Settings.FlyEnabled and char and char.PrimaryPart then
		local NextLocation = GetMovementDirection() * (delta * Settings.FlySpeed * 5)
		char:TranslateBy(NextLocation)
	end
end))

UserInputService.InputBegan:Connect(function(input, proc)
	if proc then return end
	if FlyKeys[input.KeyCode] then
		PressedFlyKeys[input.KeyCode] = true
	end
end)

UserInputService.InputEnded:Connect(function(input, proc)
	if proc then return end
	if FlyKeys[input.KeyCode] then
		PressedFlyKeys[input.KeyCode] = nil
	end
end)

print("CONNECTED")

--// Mod Notifier
--local ModList = game:HttpGet("https://raw.githubusercontent.com/Sem563/TVRThing/main/ModList")
local ModList = ""
local function CheckModStatus(plr)
	while plr.Parent ~= game.Players do wait() end
	if plr:GetRankInGroup(5212858) >= 96 then
		return true
	end
	local plrID = plr.UserId
	for UID in ModList:gmatch("([^%s]+)") do
		if tonumber(UID) == plrID then
			return true
		end
	end
	return false
end

for _,plr in next, game.Players:GetPlayers() do
	task.spawn(function()
		if CheckModStatus(plr) then
			UILib:Notify("Mod Detected", "A Moderator ("..plr.Name..") is in your game.\nWould you like to leave?", function(v)
				if v then
					lplr:Kick("Logged from moderator")
				end
			end)
		end
	end)
end

Players.PlayerAdded:Connect(function(plr)
	if CheckModStatus(plr) then
		UILib:Notify("Mod Detected", "A Moderator ("..plr.Name..") has joined your game.\nWould you like to leave?", function(v)
			if v then
				lplr:Kick("Logged from moderator")
			end
		end)
	end
end)

print("MOD DETECTION SETUP")

--// OnCharacterAdded
function CharacterStartup(char)
	--Redo all character toggles
	print("WAITING FOR HUM")
	hum = char:WaitForChild("Humanoid")
	print(hum)
	if Settings.WalkSpeedEnabled then
		Settings.WalkSpeedEnabled = false
		WalkSpeedToggle.Set(Settings.WalkSpeedEnabled)
	end

	if Settings.JumpPowerEnabled then
		Settings.JumpPowerEnabled = false
		JumpPowerToggle.Set(Settings.JumpPowerEnabled)
	end

	if Settings.FlyEnabled then
		Settings.FlyEnabled = false
		FlyToggle.Set(Settings.FlyEnabled)
	end

	if Settings.TrainIntelligence then
		Settings.TrainIntelligence = false
		IntelligenceToggle.Set(Settings.TrainIntelligence)
	end

	if Settings.TrainCharisma then
		Settings.TrainCharisma = false
		CharismaToggle.Set(Settings.TrainCharisma)
	end
end

--// Variable Updates
workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(function()
	local newCamera = workspace.CurrentCamera
	if newCamera then
		cam = newCamera
	end
end)

lplr.CharacterAdded:Connect(function(c)
	char = c
	CharacterStartup(char)
end)

if char then
	CharacterStartup(char)
end

print("SET CHAR SETUP")

--// FIRST TIME RUN
if Settings.NoFogEnabled then
	ToggleNoFog()
end

print("FIRST TIME RUN")

--// ESP
local DN = Drawing.new
local V2 = Vector2.new

local function NewDrawingObj()
    local DrawObj = DN("Text")
    DrawObj.Center = true
    DrawObj.Font = 1
    DrawObj.Visible = true
    DrawObj.Transparency = 0.85
    DrawObj.Outline = true
	DrawObj.Color = Color3.new(1,1,1)
    return DrawObj
end

local Elements = {
	["Talent:Thundercaller"] = "Thunder",
	["Talent:Frostdrawer"] = "Frost",
	["Talent:Galebreather"] = "Wind",
	["Talent:Flamecharmer"] = "Flame",
	["Talent:Shadowcaster"] = "Shadow"
}

local function getPlayerHouse(plr)
	local guild = plr:FindFirstChild'leaderstats' and plr.leaderstats:FindFirstChild'Guild'
	return guild and guild.Value or ""
end

local function IsSameGuild(plr)
    local plrGuild = getPlayerHouse(plr)
    if plrGuild == "" then
        return false
    end
    return plrGuild == getPlayerHouse(lplr)
end

local function hasTool(player, toolName)
	return (player:FindFirstChild("Backpack") and player.Backpack:FindFirstChild(toolName)) or (player.Character and player.Character:FindFirstChild(toolName))
end

local function getElements(Player)
	local elements = {}
	for _,v in next, Elements do
		if Player.Backpack:FindFirstChild(_) then
			elements[#elements+1] = v
		end
	end
	return #elements > 0 and table.concat(elements, "/") or "Unattuned"
end

local function GetApproximateLevel(plr)
    local level = 1
    for _,v in next, plr.Backpack:GetChildren() do
        if v.Name:match("^Talent") or v.Name:match("^Mantra") then
            level += 1
        end
    end
    return level
end

local function getWeapon(Player)
	local weaponTool = hasTool(Player, "Weapon")
	return weaponTool and weaponTool.Weapon.Value or "???"
end

local function getWeaponMob(mob)
	local WeaponTrail = mob:FindFirstChild('WeaponTrail', true)
	local WeaponModel = WeaponTrail and WeaponTrail.Parent
	if WeaponModel then
		local WeaponName = WeaponModel and WeaponModel:FindFirstChild'Critical' and WeaponModel.Critical.Value
		return WeaponName or (WeaponModel:FindFirstChild'Type' and WeaponModel.Type.Value)
	end
	return nil
end

local function getDeepwokenName(Player)
	local lStats = Player:FindFirstChild'leaderstats'
	if not lStats then
		return "???"
	end
	local firstName = lStats:FindFirstChild'FirstName'
	local lastName = lStats:FindFirstChild'LastName'
	return (firstName and lastName) and firstName.Value.." "..lastName.Value or "???"
end

local function GetMobName(mob)
    local name = mob.Name:gsub("^%.", ""):gsub("_", " "):gsub("[%d]+", "")
	local s = name:match("^%l")
    return s and ({name:gsub("^%l", s:upper())})[1] or name --fucking gsub returns :sob:
end

local function GetPlayerText(plr, d)
	local s = string.format("[%s] [%s]", plr.Name, getDeepwokenName(plr))
	if Settings.PlayerShowApproximateLevel then
		s ..= string.format(" [%d]", GetApproximateLevel(plr))
	end
	s..="\n";
	if Settings.PlayerShowWeapon then
		s ..= string.format("[%s] %s\n", getWeapon(plr), getElements(plr))
	end
	if Settings.PlayerShowHealth then
		local hum = plr.Character:FindFirstChild'Humanoid'
		if not hum then
			s ..= string.format("[???/???] ")
		else
			s ..= string.format("[%.0f/%.0f] ", hum.Health, hum.MaxHealth)
		end
	end
	if Settings.PlayerShowDistance then
		s ..= string.format("[%.0f]", d)
	end
	return s
end

local function GetMobText(mob, d)
	local s = string.format("[%s]\n", GetMobName(mob))
	if Settings.EnemyShowWeapon then
		local WeaponName = getWeaponMob(mob)
		if WeaponName then
			s ..= string.format("[%s]\n", WeaponName)
		end
	end
	if Settings.EnemyShowHealth then
		local hum = mob:FindFirstChild'Humanoid'
		if not hum then
			s ..= string.format("[???/???] ")
		else
			s ..= string.format("[%.0f/%.0f] ", hum.Health, hum.MaxHealth)
		end
	end
	if Settings.EnemyShowDistance then
		s ..= string.format("[%.0f]", d)
	end
	return s
end

local function IsChest(c)
	if c:IsA"Model" and c:FindFirstChild'Pick' and c:FindFirstChild'InteractPrompt' then
		return true
	end
	return false
end

local RenderList = {}
local DrawObjList = {}

local function CheckRenderObjIntegrity(obj)
	if executor == "Synapse X" then
		return rawget(obj, "__OBJECT_EXISTS")
	elseif executor == "ScriptWare" then
		return isrenderobj(obj)
	end
	return false;
end

local UpdateInterval = 50/1000
local LastUpdate = os.clock()

local PlayerList = {}
local MobList = {}
local ChestList = {}
local AreaList = {}

--// PLAYER LIST UPDATE
Players.PlayerAdded:Connect(function(p)
	PlayerList[p] = NewDrawingObj()
end)

Players.PlayerRemoving:Connect(function(p)
	if p == lplr then return end
	PlayerList[p]:Remove()
	PlayerList[p] = nil
end)

for _,v in next, Players:GetPlayers() do
	if v == lplr then continue end
	PlayerList[v] = NewDrawingObj()
end

--// MOB LIST UPDATE
workspace.Live.ChildAdded:Connect(function(c)
	if c.Name:match("^%.") then
		MobList[c] = NewDrawingObj()
	end
end)

workspace.Live.ChildRemoved:Connect(function(c)
	if c.Name:match("^%.") then
		MobList[c]:Remove()
		MobList[c] = nil
	end
end)

for _,v in next, workspace.Live:GetChildren() do
	if v.Name:match("^%.") then
		MobList[v] = NewDrawingObj()
	end
end

--// CHEST LIST UPDATE
workspace.Thrown.ChildAdded:Connect(function(c)
	wait(1)
	if IsChest(c) then
		ChestList[c] = NewDrawingObj()
	end
end)

workspace.Thrown.ChildRemoved:Connect(function(c)
	if ChestList[c] then
		ChestList[c]:Remove()
		ChestList[c] = nil
	end
end)

for _,v in next, workspace.Thrown:GetChildren() do
	if IsChest(v) then
		ChestList[v] = NewDrawingObj()
	end
end

--// AREA LIST
for _,v in next, game.ReplicatedStorage:WaitForChild'MarkerWorkspace':WaitForChild'AreaMarkers':GetChildren() do
	local AreaMarker = v:FindFirstChild'AreaMarker'
	if AreaMarker then
		AreaList[AreaMarker] = NewDrawingObj()
	end
end

local UpdateESP = LPH_JIT_ULTRA(function()
	local CurrentFrameTime = os.clock()
	local UpdateText = false
	if CurrentFrameTime - LastUpdate > UpdateInterval then
		UpdateText = true
		LastUpdate = CurrentFrameTime
	end
	local s,e = pcall(function()
	--// PLAYER ESP UPDATE
	if Settings.PlayerESP then
		for plr,renderObj in next, PlayerList do
			local RenderPart = plr.Character and (plr.Character.PrimaryPart or plr.Character:FindFirstChild'Torso')
			if RenderPart then
				local Distance = (cam.CFrame.Position - RenderPart.Position).Magnitude
				if Distance > Settings.MaxPlayerRange then
					continue
				end
				local ScreenPos,IsVisible = cam:WorldToViewportPoint(RenderPart.Position)
				if IsVisible then
					renderObj.Color = IsSameGuild(plr) and Settings.PlayerFriendColor or Settings.PlayerEnemyColor
					renderObj.Size = Settings.TextSize
					if UpdateText then
						renderObj.Text = GetPlayerText(plr, Distance)
					end
					renderObj.Position = V2(ScreenPos.X, ScreenPos.Y)
					renderObj.Visible = true
				else
					renderObj.Visible = false
				end
			else
				renderObj.Visible = false
			end
		end
	else
		for _,renderObj in next, PlayerList do
			renderObj.Visible = false
		end
	end

	--// ENEMY ESP UPDATE
	if Settings.EnemyNPC then
		for mob,renderObj in next, MobList do
			local RenderPart = mob.PrimaryPart or mob:FindFirstChild'HumanoidRootPart' or mob:FindFirstChildWhichIsA'Part'
			if RenderPart then
				local Distance = (cam.CFrame.Position - RenderPart.Position).Magnitude
				if Distance > Settings.EnemyNPCRange then
					continue
				end
				local ScreenPos,IsVisible = cam:WorldToViewportPoint(RenderPart.Position)
				if IsVisible then
					renderObj.Color = Settings.EnemyNPCColor
					renderObj.Size = Settings.TextSize
					if UpdateText then
						renderObj.Text = GetMobText(mob, Distance)
					end
					renderObj.Position = V2(ScreenPos.X, ScreenPos.Y)
					renderObj.Visible = true
				else
					renderObj.Visible = false
				end
			else
				renderObj.Visible = false
			end
		end
	else
		for _,renderObj in next, MobList do
			renderObj.Visible = false
		end
	end

	--// CHEST ESP
	if Settings.ChestESPEnabled then
		for chest,renderObj in next, ChestList do
			local RenderPart = chest:FindFirstChild'Lid'
			if RenderPart then
				local ScreenPos,IsVisible = cam:WorldToViewportPoint(RenderPart.Position)
				if IsVisible then
					renderObj.Size = Settings.TextSize
					if UpdateText then
						renderObj.Text = string.format("[Chest]\n[%.0f]", (cam.CFrame.Position - RenderPart.Position).Magnitude)
					end
					renderObj.Position = V2(ScreenPos.X, ScreenPos.Y)
					renderObj.Visible = true
				else
					renderObj.Visible = false
				end
			else
				renderObj.Visible = false
			end
		end
	else
		for _,renderObj in next, ChestList do
			renderObj.Visible = false
		end
	end

	--// AREA ESP
	if Settings.AreaESPEnabled then
		for RenderPart,renderObj in next, AreaList do
			local ScreenPos,IsVisible = cam:WorldToViewportPoint(RenderPart.Position)
			if IsVisible then
				renderObj.Size = Settings.TextSize
				if UpdateText then
					renderObj.Text = string.format("[%s]\n[%.0f]", RenderPart.Parent.Name, (cam.CFrame.Position - RenderPart.Position).Magnitude)
				end
				renderObj.Position = V2(ScreenPos.X, ScreenPos.Y)
				renderObj.Visible = true
			else
				renderObj.Visible = false
			end
		end
	else
		for _,renderObj in next, AreaList do
			renderObj.Visible = false
		end
	end

	end)
	if not s then warn(e) end
end)
RunService:BindToRenderStep("Update", 201, UpdateESP)

ENJOY!

Warning: DO NOT DOWNLOAD anything from this page, you’re only here to copy the script!

More Scripts!

TOP 10 TRENDING SCRIPTS