This isn't my script, but look at it:
----------------- --| Constants |-- ----------------- local RANGE = 240 local TIMESTEP = 1 / 30 local SECONDS_BETWEEN_RECONSTRUCTION = 3 local MAX_DIST_RATIO = 0.84 -------------------- --| WaitForChild |-- -------------------- -- Waits for parent.child to exist, then returns it local function WaitForChild(parent, childName) assert(parent, "ERROR: WaitForChild: parent is nil") while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end return parent[childName] end ----------------- --| Variables |-- ----------------- local PlayersService = Game:GetService('Players') local MyPlayer = PlayersService.LocalPlayer local Camera = Workspace.CurrentCamera local Radar = WaitForChild(Workspace, 'Radar') local Radar_Gui = script.Parent local RadarFrame = WaitForChild(Radar_Gui, 'RadarFrame') local Background = WaitForChild(RadarFrame, 'Background') local Border = WaitForChild(RadarFrame, 'Border') local FoeBlip = WaitForChild(RadarFrame, 'FoeBlip') local FriendBlip = WaitForChild(RadarFrame, 'FriendBlip') local SelfBlip = WaitForChild(RadarFrame, 'SelfBlip') -- Any names (keys) not in this list will be deleted (values must evaluate to true) local SaveList = {Background = 1, Border = 1, FoeBlip = 1, FriendBlip = 1, SelfBlip = 1} local ObjectToBlipTable = {} local LastReconstructionTime = 0 local RunService = Game:GetService('RunService') -------------------- --| Script Logic |-- -------------------- Background.Visible = true Border.Visible = true SelfBlip.Position = UDim2.new(0.5 - SelfBlip.Size.X.Scale / 2, 0, 0.5 - SelfBlip.Size.Y.Scale / 2, 0) local function IsInRange(inversedFrame, pos) local pos = CFrame.new(pos.X, 0, pos.Z) local relativeCFrame = inversedFrame * pos local distanceRatio = relativeCFrame.p.Magnitude / RANGE return distanceRatio < MAX_DIST_RATIO, relativeCFrame end local function CheckLos() -- Uncomment the following to hide non-visible enemies that are far away --[[ if distanceRatio >= 0.7 and player.TeamColor ~= MyPlayer.TeamColor and player.Character then local torso = MyPlayer.Character:FindFirstChild('Torso') local otherTorso = player.Character:FindFirstChild('Torso') local ray = Ray.new(torso.Position, (otherTorso.Position - torso.Position).unit * RANGE) local hit = Workspace:FindPartOnRay(ray, MyPlayer.Character) if not hit or hit.Parent ~= otherTorso.Parent then unit.Visible = false end end --]] end local function ConstructBlipTable() for _, object in pairs(Radar:GetChildren()) do if object:IsA('ObjectValue') and object.Value and object.Value:IsA('BasePart') then local pos = object.Value.CFrame.p local objGui for _, child in pairs(object:GetChildren()) do if child:IsA('Frame') then objGui = child:Clone() objGui.Parent = RadarFrame ObjectToBlipTable[object.Value] = objGui end end end end for _, player in pairs(PlayersService:GetPlayers()) do if MyPlayer and player ~= MyPlayer and player.Character and player.Character:FindFirstChild('Torso') then if player.TeamColor == MyPlayer.TeamColor then unit = FriendBlip:Clone() else unit = FoeBlip:Clone() end unit.Visible = false unit.Name = player.Name unit.Parent = RadarFrame ObjectToBlipTable[player.Character.Torso] = unit end end end local function ReconstructBlipTable() -- Destroy anything in the frame that isn't going to be updated for _, label in pairs(RadarFrame:GetChildren()) do if not SaveList[label.Name] then label:Destroy() end end ObjectToBlipTable = {} ConstructBlipTable() end local function UpdateRadar() local frame = Vector3.new(Camera.CoordinateFrame.x, 0, Camera.CoordinateFrame.z) local focus = Vector3.new(Camera.Focus.x, 0, Camera.Focus.z) local frame = CFrame.new(focus, frame) local inversedFrame = frame:inverse() for obj, objGui in pairs(ObjectToBlipTable) do if obj then local pos = obj.CFrame.p if pos and objGui then local isClose, relativeCFrame = IsInRange(inversedFrame, pos) if isClose then local xScale = 0.5 - ((relativeCFrame.x / RANGE) / 2) - objGui.Size.X.Scale / 2 local yScale = 0.5 - ((relativeCFrame.z / RANGE) / 2) - objGui.Size.Y.Scale / 2 objGui.Position = UDim2.new(xScale, 0, yScale, 0) objGui.Visible = true else objGui.Visible = false end end -- if there is no obj but a gui for it elseif objGui then objGui.Visible = false end end end while true do local now = tick() if tick() - LastReconstructionTime > SECONDS_BETWEEN_RECONSTRUCTION then ReconstructBlipTable() LastReconstructionTime = now end UpdateRadar() wait(TIMESTEP) end If I wanted to have this Radar to locate an enemy in the ----------------- --| Constants |-- ----------------- local RANGE = 240 local TIMESTEP = 1 / 30 local SECONDS_BETWEEN_RECONSTRUCTION = 3 local MAX_DIST_RATIO = 0.84 -------------------- --| WaitForChild |-- -------------------- -- Waits for parent.child to exist, then returns it local function WaitForChild(parent, childName) assert(parent, "ERROR: WaitForChild: parent is nil") while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end return parent[childName] end ----------------- --| Variables |-- ----------------- local PlayersService = Game:GetService('Players') local MyPlayer = PlayersService.LocalPlayer local Camera = Workspace.CurrentCamera local Radar = WaitForChild(Workspace, 'Radar') local Radar_Gui = script.Parent local RadarFrame = WaitForChild(Radar_Gui, 'RadarFrame') local Background = WaitForChild(RadarFrame, 'Background') local Border = WaitForChild(RadarFrame, 'Border') local FoeBlip = WaitForChild(RadarFrame, 'FoeBlip') local FriendBlip = WaitForChild(RadarFrame, 'FriendBlip') local SelfBlip = WaitForChild(RadarFrame, 'SelfBlip') -- Any names (keys) not in this list will be deleted (values must evaluate to true) local SaveList = {Background = 1, Border = 1, FoeBlip = 1, FriendBlip = 1, SelfBlip = 1} local ObjectToBlipTable = {} local LastReconstructionTime = 0 local RunService = Game:GetService('RunService') -------------------- --| Script Logic |-- -------------------- Background.Visible = true Border.Visible = true SelfBlip.Position = UDim2.new(0.5 - SelfBlip.Size.X.Scale / 2, 0, 0.5 - SelfBlip.Size.Y.Scale / 2, 0) local function IsInRange(inversedFrame, pos) local pos = CFrame.new(pos.X, 0, pos.Z) local relativeCFrame = inversedFrame * pos local distanceRatio = relativeCFrame.p.Magnitude / RANGE return distanceRatio < MAX_DIST_RATIO, relativeCFrame end local function CheckLos() -- Uncomment the following to hide non-visible enemies that are far away --[[ if distanceRatio >= 0.7 and player.TeamColor ~= MyPlayer.TeamColor and player.Character then local torso = MyPlayer.Character:FindFirstChild('Torso') local otherTorso = player.Character:FindFirstChild('Torso') local ray = Ray.new(torso.Position, (otherTorso.Position - torso.Position).unit * RANGE) local hit = Workspace:FindPartOnRay(ray, MyPlayer.Character) if not hit or hit.Parent ~= otherTorso.Parent then unit.Visible = false end end --]] end local function ConstructBlipTable() for _, object in pairs(Radar:GetChildren()) do if object:IsA('ObjectValue') and object.Value and object.Value:IsA('BasePart') then local pos = object.Value.CFrame.p local objGui for _, child in pairs(object:GetChildren()) do if child:IsA('Frame') then objGui = child:Clone() objGui.Parent = RadarFrame ObjectToBlipTable[object.Value] = objGui end end end end for _, player in pairs(PlayersService:GetPlayers()) do if MyPlayer and player ~= MyPlayer and player.Character and player.Character:FindFirstChild('Torso') then if player.TeamColor == MyPlayer.TeamColor then unit = FriendBlip:Clone() else unit = FoeBlip:Clone() end unit.Visible = false unit.Name = player.Name unit.Parent = RadarFrame ObjectToBlipTable[player.Character.Torso] = unit end end end local function ReconstructBlipTable() -- Destroy anything in the frame that isn't going to be updated for _, label in pairs(RadarFrame:GetChildren()) do if not SaveList[label.Name] then label:Destroy() end end ObjectToBlipTable = {} ConstructBlipTable() end local function UpdateRadar() local frame = Vector3.new(Camera.CoordinateFrame.x, 0, Camera.CoordinateFrame.z) local focus = Vector3.new(Camera.Focus.x, 0, Camera.Focus.z) local frame = CFrame.new(focus, frame) local inversedFrame = frame:inverse() for obj, objGui in pairs(ObjectToBlipTable) do if obj then local pos = obj.CFrame.p if pos and objGui then local isClose, relativeCFrame = IsInRange(inversedFrame, pos) if isClose then local xScale = 0.5 - ((relativeCFrame.x / RANGE) / 2) - objGui.Size.X.Scale / 2 local yScale = 0.5 - ((relativeCFrame.z / RANGE) / 2) - objGui.Size.Y.Scale / 2 objGui.Position = UDim2.new(xScale, 0, yScale, 0) objGui.Visible = true else objGui.Visible = false end end -- if there is no obj but a gui for it elseif objGui then objGui.Visible = false end end end while true do local now = tick() if tick() - LastReconstructionTime > SECONDS_BETWEEN_RECONSTRUCTION then ReconstructBlipTable() LastReconstructionTime = now end UpdateRadar() wait(TIMESTEP) end
If I wanted this Radar to locate an enemy in the range(240) of the player, what would I add to make this happen?
Maybe not steal other people's scripts and try to fix them?
Closed as Not Constructive by Fragmentation123 and Azarth
This question has been closed because it is not constructive to others or the asker. Most commonly, questions that are requests with no attempt from the asker to solve their problem will fall into this category.
Why was this question closed?