
KeylessUniversal

local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local gearId = 116040770
-- ==================== [环境自动侦测与补丁系统] ====================
local envState = {
Mode = "Mouse", -- "Mouse" | "Touch" | "Gamepad"
IsMobile = false
}
-- 1. 实时监听输入设备无缝切换(触屏 <-> 鼠标 <-> 手柄)
UserInputService.LastInputTypeChanged:Connect(function(lastInputType)
if lastInputType == Enum.UserInputType.Touch then
envState.Mode = "Touch"
elseif lastInputType == Enum.UserInputType.Gamepad1 or string.find(lastInputType.Name, "Gamepad") then
envState.Mode = "Gamepad"
elseif string.find(lastInputType.Name, "Mouse") then
envState.Mode = "Mouse"
end
end)
-- 2. 动态环境修复补丁(移动端与 PC 统一保持阴影开启与原版亮度 4)
local function applyEnvironmentPatch(light)
envState.IsMobile = UserInputService.TouchEnabled and not UserInputService.MouseEnabled
envState.Mode = envState.IsMobile and "Touch" or "Mouse"
if light then
light.Shadows = true -- 全平台强制开启实时影子
light.Brightness = 4 -- 保持原版亮度(4 级)
end
end
-- ==================================================================
local success, objects = pcall(function()
return game:GetObjects("rbxassetid://" .. gearId)
end)
if success and objects and #objects > 0 then
local tool = objects[1]
if not tool:IsA("Tool") then tool = tool:FindFirstChildOfClass("Tool") end
if tool then
local handle = tool:FindFirstChild("Handle") or tool:FindFirstChildWhichIsA("BasePart")
local sound = tool:FindFirstChildWhichIsA("Sound", true)
-- 初始化光效挂载轴
local attachment = Instance.new("Attachment")
attachment.Name = "LightPivot"
attachment.Parent = handle
local light = Instance.new("SpotLight")
light.Parent = attachment
light.Range = 60
light.Angle = 50
light.Enabled = false
-- 应用全平台阴影与亮度设定
applyEnvironmentPatch(light)
local isOn = false
local connection = nil
-- 清理逻辑(防止重置角色时内存泄漏)
local function cleanup()
isOn = false
light.Enabled = false
if connection then
connection:Disconnect()
connection = nil
end
end
-- 交互逻辑
tool.Activated:Connect(function()
isOn = not isOn
light.Enabled = isOn
if sound then sound:Play() end
if isOn then
connection = RunService.RenderStepped:Connect(function()
local character = LocalPlayer.Character
if handle and character and tool.Parent == character then
if envState.Mode == "Touch" then
-- 触屏模式:锁定角色正前方(影子全开)
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
local forwardPos = handle.Position + (hrp.CFrame.LookVector * 100)
attachment.WorldCFrame = CFrame.lookAt(handle.Position, forwardPos)
else
attachment.WorldCFrame = handle.CFrame
end
elseif envState.Mode == "Gamepad" then
-- 手柄模式:锁定摄像机视角正前方
local camera = Workspace.CurrentCamera
if camera then
local forwardPos = handle.Position + (camera.CFrame.LookVector * 100)
attachment.WorldCFrame = CFrame.lookAt(handle.Position, forwardPos)
end
else
-- 鼠标模式:精准追踪鼠标位置
local targetPos = Mouse.Hit.Position
attachment.WorldCFrame = CFrame.lookAt(handle.Position, targetPos)
end
end
end)
else
cleanup()
end
end)
tool.Unequipped:Connect(cleanup)
tool.AncestryChanged:Connect(function(_, parent)
if not parent then cleanup() end
end)
tool.Parent = LocalPlayer:WaitForChild("Backpack")
print("[正式版] 手电筒加载完成,移动端已开启影子并保持原版 4 级亮度!")
end
endNo comments yet for this script.



