Item Giver and NPC Hitbox Expander
Key Required

Item Giver and NPC Hitbox Expander

The Fields [UPDATE]si3ndyysi3ndyy 208 views 693 executesUpdated Aug 10, 2026
Unrated
00
Lua Script•402 lines (10430 chars)
local repo = "https://raw.githubusercontent.com/deividcomsono/Obsidian/main/"
local Library = loadstring(game:HttpGet(repo .. "Library.lua"))()
local ThemeManager = loadstring(game:HttpGet(repo .. "addons/ThemeManager.lua"))()
local SaveManager = loadstring(game:HttpGet(repo .. "addons/SaveManager.lua"))()

local Options = Library.Options
local Toggles = Library.Toggles

local Window = Library:CreateWindow({
	Title = "The Fields",
	Footer = "Weapon System + Visuals",
	Icon = 95816097006870,
	NotifySide = "Right",
	ShowCustomCursor = true,
	Center = true,
})

--// Obfuscated services (kept from weapon script to avoid plaintext detection) \\--
local stringChar = string.char
local stringByte = string.byte
local stringSub = string.sub
local bitwiseOp = bit32 or bit
local bitwiseXor = bitwiseOp.bxor
local tableConcat = table.concat
local tableInsert = table.insert

local function decodeString(encodedStr, keyStr)
	local decodedChars = {}
	for i = 1, #encodedStr do
		tableInsert(decodedChars, stringChar(
			bitwiseXor(
				stringByte(stringSub(encodedStr, i, i + 1)),
				stringByte(stringSub(keyStr, 1 + (i % #keyStr), 1 + (i % #keyStr) + 1))
			) % 256
		))
	end
	return tableConcat(decodedChars)
end

local Players = game:GetService(decodeString("\225\207\218\60\227\169\212", "\126\177\163\187\69\134\219\167"))
local CollectionService = game:GetService(decodeString("\136\43\28\58\118\166\239\162\43\30\5\118\183\237\162\39\21", "\155\203\68\112\86\19\197"))

local LocalPlayer = Players.LocalPlayer
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local Lighting = game:GetService("Lighting")

--// Weapon System \\--
local weaponCache = {}

local function notify(title, text, time)
	Library:Notify({
		Title = title,
		Description = text,
		Time = time or 4,
	})
end

local function spawnNearestWeapon()
	if not LocalPlayer.Character or not LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
		return
	end

	local playerRootPart = LocalPlayer.Character.HumanoidRootPart
	local closestWeapon = nil
	local closestDistance = math.huge

	for _, weapon in ipairs(CollectionService:GetTagged("Weapon")) do
		if weapon.Parent == Workspace then
			local weaponPart = weapon:FindFirstChild("Handle") or weapon.PrimaryPart
			if weaponPart then
				local distance = (playerRootPart.Position - weaponPart.Position).Magnitude
				if distance < closestDistance then
					closestDistance = distance
					closestWeapon = weapon
				end
			end
		end
	end

	if closestWeapon then
		closestWeapon.Parent = LocalPlayer.Backpack
		CollectionService:RemoveTag(closestWeapon, "Weapon")

		local weaponName = weaponCache[closestWeapon] or "Unknown"

		notify("Success", "Equipped: " .. weaponName, 2)

		local humanoid = LocalPlayer.Character.Humanoid
		humanoid:ChangeState(Enum.HumanoidStateType.Running)
	else
		notify("Error", "No weapons found nearby", 2)
	end
end

local function spawnWeapon(weaponName)
	weaponName = weaponName:match("^%s*(.-)%s*$")

	if weaponName == "" then
		return
	end

	local weaponModel = game:GetService("ServerStorage"):FindFirstChild(weaponName, true) or
	                    Workspace:FindFirstChild(weaponName, true)

	if not weaponModel then
		notify("Error", weaponName .. " not found", 5)
		return
	end

	local clonedWeapon = weaponModel:Clone()

	if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
		local rootPart = LocalPlayer.Character.HumanoidRootPart
		local spawnPosition = rootPart.Position + (rootPart.CFrame.LookVector * 6) + Vector3.new(0, 12, 0)

		local rayDirection = Vector3.new(0, -40, 0)
		local raycastParams = RaycastParams.new()
		raycastParams.FilterDescendantsInstances = {LocalPlayer.Character}
		raycastParams.FilterType = Enum.RaycastFilterType.Exclude

		local rayResult = Workspace:Raycast(spawnPosition, rayDirection, raycastParams)
		local finalPosition = (rayResult and (rayResult.Position + (rayResult.Normal * 2))) or
		                      (rootPart.Position + (rootPart.CFrame.LookVector * 6) + Vector3.new(0, 0, 0))

		local weaponPart = clonedWeapon:FindFirstChild("Handle") or
		                   clonedWeapon.PrimaryPart or
		                   clonedWeapon:FindFirstChildWhichIsA("BasePart")

		if weaponPart then
			weaponPart.CanCollide = true
			weaponPart.Anchored = false
			weaponPart.CanQuery = true
			weaponPart.CFrame = CFrame.new(finalPosition)
			weaponPart.Velocity = Vector3.new(0, -2, 0)

			CollectionService:AddTag(clonedWeapon, "Weapon")
			clonedWeapon.Parent = Workspace

			weaponCache[clonedWeapon] = weaponName

			notify("Success", "Spawned: " .. weaponName, 4)
		end
	end
end

--// Visuals \\--
_G.HeadSize = 10
_G.FullbrightEnabled = false
_G.NPCResizeEnabled = false
_G.FogDisabled = false

local function enableFullbright()
	Lighting.Brightness = 2
	Lighting.Ambient = Color3.new(1, 1, 1)
	Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
	Lighting.ClockTime = 12
end

local function disableFullbright()
	Lighting.Brightness = 1
	Lighting.Ambient = Color3.new(0, 0, 0)
	Lighting.OutdoorAmbient = Color3.new(0, 0, 0)
	Lighting.ClockTime = 14
end

local function removeFog()
	for _, obj in pairs(Lighting:GetChildren()) do
		if obj:IsA("Atmosphere") then
			obj:Destroy()
		end
	end
end

local function restoreFog()
	local atmosphere = Instance.new("Atmosphere", Lighting)
	atmosphere.Density = 0.3
	atmosphere.Offset = 0
	atmosphere.Color = Color3.fromRGB(199, 199, 199)
	atmosphere.Decay = Color3.fromRGB(106, 106, 106)
end

local function updateNPC(npc)
	if npc:FindFirstChildOfClass('Humanoid') and not Players:GetPlayerFromCharacter(npc) then
		pcall(function()
			local rootPart = npc:FindFirstChild('HumanoidRootPart')
			if rootPart then
				rootPart.Size = Vector3.new(_G.HeadSize, _G.HeadSize, _G.HeadSize)
				rootPart.Transparency = 0.7
				rootPart.BrickColor = BrickColor.new("Really blue")
				rootPart.Material = "Neon"
				rootPart.CanCollide = false
			end
		end)
	end
end

local function updateAllNPCs()
	for _, npc in ipairs(Workspace:GetDescendants()) do
		if _G.NPCResizeEnabled then
			updateNPC(npc)
		end
	end
end

Workspace.ChildAdded:Connect(function(child)
	if _G.NPCResizeEnabled then
		updateNPC(child)
	end
end)

local timer = 0
RunService.Heartbeat:Connect(function(deltaTime)
	timer = timer + deltaTime
	if timer >= 5 then
		if _G.NPCResizeEnabled then
			updateAllNPCs()
		end
		timer = 0
	end
end)

--// UI Tabs \\--
local Tabs = {
	Weapons = Window:AddTab("Weapons", "sword"),
	Visuals = Window:AddTab("Visuals", "eye"),
	["UI Settings"] = Window:AddTab("UI Settings", "settings"),
}

--// Weapons Tab \\--
local WeaponsGroup = Tabs.Weapons:AddLeftGroupbox("Weapon Spawner", "sword")

WeaponsGroup:AddInput("WeaponName", {
	Text = "Weapon Name",
	Placeholder = "Enter weapon name or search...",
	Default = "",
	Finished = true,
	ClearTextOnFocus = false,
	Callback = function(Value)
		if Value ~= "" and Value ~= "---" then
			spawnWeapon(Value)
			Options.WeaponName:SetValue("")
		end
	end,
})

WeaponsGroup:AddButton({
	Text = "Spawn Weapon",
	Func = function()
		local weaponName = Options.WeaponName.Value
		if weaponName ~= "" and weaponName ~= "---" then
			spawnWeapon(weaponName)
			Options.WeaponName:SetValue("")
		end
	end,
	Tooltip = "Spawns the entered weapon in front of you",
})

WeaponsGroup:AddDivider()

WeaponsGroup:AddLabel("Grab nearest weapon")
	:AddKeyPicker("GrabWeaponKey", {
		Default = "E",
		Mode = "Press",
		Text = "Grab nearest weapon",
		Callback = function()
			spawnNearestWeapon()
		end,
	})

WeaponsGroup:AddLabel("Spawned weapons are tagged so the grab key can pick them up.", true)

--// Visuals Tab \\--
local VisualsGroup = Tabs.Visuals:AddLeftGroupbox("Visuals", "eye")

VisualsGroup:AddToggle("Fullbright", {
	Text = "Fullbright",
	Default = false,
	Callback = function(Value)
		_G.FullbrightEnabled = Value
		if Value then
			enableFullbright()
		else
			disableFullbright()
		end
	end,
})

VisualsGroup:AddToggle("NPCResize", {
	Text = "NPC Hitbox Resize",
	Default = false,
	Callback = function(Value)
		_G.NPCResizeEnabled = Value
		if Value then
			updateAllNPCs()
		end
	end,
})

VisualsGroup:AddSlider("HeadSize", {
	Text = "Hitbox Size",
	Default = 10,
	Min = 1,
	Max = 100,
	Rounding = 0,
	Suffix = " studs",
	Callback = function(Value)
		_G.HeadSize = Value
		if _G.NPCResizeEnabled then
			updateAllNPCs()
		end
	end,
})

VisualsGroup:AddToggle("NoFog", {
	Text = "Disable Fog",
	Default = false,
	Callback = function(Value)
		_G.FogDisabled = Value
		if Value then
			removeFog()
		else
			restoreFog()
		end
	end,
})

--// UI Settings \\--
local MenuGroup = Tabs["UI Settings"]:AddLeftGroupbox("Menu", "wrench")

MenuGroup:AddToggle("KeybindMenuOpen", {
	Default = Library.KeybindFrame.Visible,
	Text = "Open Keybind Menu",
	Callback = function(Value)
		Library.KeybindFrame.Visible = Value
	end,
})
MenuGroup:AddToggle("ShowCustomCursor", {
	Text = "Custom Cursor",
	Default = Library.ShowCustomCursor,
	Callback = function(Value)
		Library.ShowCustomCursor = Value
	end,
})
MenuGroup:AddDropdown("NotificationSide", {
	Values = { "Left", "Right" },
	Default = "Right",

	Text = "Notification Side",

	Callback = function(Value)
		Library:SetNotifySide(Value)
	end,
})
MenuGroup:AddDropdown("DPIDropdown", {
	Values = { "50%", "75%", "100%", "125%", "150%", "175%", "200%" },
	Default = "100%",

	Text = "DPI Scale",

	Callback = function(Value)
		Value = Value:gsub("%%", "")
		local DPI = tonumber(Value)

		Library:SetDPIScale(DPI)
	end,
})
MenuGroup:AddSlider("UICornerSlider", {
	Text = "Corner Radius",
	Default = Library.CornerRadius,
	Min = 0,
	Max = 20,
	Rounding = 0,
	Callback = function(Value)
		Window:SetCornerRadius(Value)
	end,
})
MenuGroup:AddDivider()
MenuGroup:AddLabel("Menu bind")
	:AddKeyPicker("MenuKeybind", { Default = "RightShift", NoUI = true, Text = "Menu keybind" })
MenuGroup:AddButton("Unload", function()
	Library:Unload()
end)

Library.ToggleKeybind = Options.MenuKeybind

--// Addons \\--
ThemeManager:SetLibrary(Library)
SaveManager:SetLibrary(Library)

SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({ "MenuKeybind" })

ThemeManager:SetFolder("TheFields")
SaveManager:SetFolder("TheFields/general")

SaveManager:BuildConfigSection(Tabs["UI Settings"])
ThemeManager:ApplyToTab(Tabs["UI Settings"])

SaveManager:LoadAutoloadConfig()

notify("The Fields", "Loaded. Weapons + Visuals ready.", 4)

Features & Information

original script by swagdoge316 but with added features
#The Fields#Hitbox Expander

Community Comments (0)

No comments yet for this script.

More Scripts for The Fields [UPDATE]