local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local StateModule = {}
StateModule.Params = RaycastParams.new()
StateModule.Params.FilterType = Enum.RaycastFilterType.Include
StateModule.Params.IgnoreWater = true
StateModule.Params.FilterDescendantsInstances = { workspace.Map }
StateModule.SavedConnections = {}
function StateModule.EnableState(Player)
task.wait(1.5)
if not Player.Character then
repeat task.wait() until Player.Character
end
StateModule.SavedConnections[Player.Name] = {}
local SavedIndex = StateModule[Player.Name]
local Folder = Instance.new("Folder", Player)
Folder.Name = "States"
Folder:SetAttribute("Beneath", Enum.Material.SmoothPlastic)
Folder:SetAttribute("ActivateCheck", false)
SavedIndex["BeneathCheck"] = RunService.Stepped:Connect(function()
task.wait(0.5)
if Player.IsGettingDamaged.Value == true or Player.Ragdoll.Value == true or Player.IsGettingDamagedAndBlocking.Value == true or Player.IsGuardBroken.Value == true or Player.AbilityBy.Value ~= "" or Player.IsUsingAbility.Value == true or Folder:GetAttribute("ActivateCheck") == true then
if not Player.Character then
return
end
local CharacterRaycast = workspace:Raycast(Player.Character.HumanoidRootPart.Position, Vector3.new(0,-4, 0), StateModule.Params)
if CharacterRaycast then
print("Found: "..tostring(CharacterRaycast.Material))
Folder:SetAttribute("Beneath", CharacterRaycast.Material)
else
Folder:SetAttribute("Beneath", Enum.Material.Air)
end
end
end)
end
return StateModule
How would i optimize this script and make it more efficient?