Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Unit = script.Parent
- local Bow = Unit.Torso -- Changed this up so script goes into the unit not the weapon now
- local Humanoid = Unit.Humanoid
- local Config = Unit.Config
- local Range = Config.Range
- local Damage = Config.Damage
- local ReloadTime = Config.ReloadTime
- ClosestMagnitude = 10000
- ClosestEnemy = nil
- Units = game.Workspace.Units
- Buildings = game.Workspace.Buildings
- function Fire()
- if ClosestEnemy ~= nil and ClosestEnemy.Parent == workspace.Units and ClosestMagnitude < Range.Value then
- local ray = Ray.new(Bow.CFrame.p, (ClosestEnemy.Torso.CFrame.p - Bow.CFrame.p).unit * 300)
- local beam = Instance.new("Part", workspace)
- beam.BrickColor = Unit.TeamColor.Value
- beam.FormFactor = "Custom"
- beam.Material = "Plastic"
- beam.Transparency = 0.5
- beam.Anchored = true
- beam.Locked = true
- beam.CanCollide = false
- game:GetService("Debris"):AddItem(beam, 0.2)
- local part, position = workspace:FindPartOnRay(ray, ClosestEnemy.Torso, false, true)
- local distance = (Bow.CFrame.p - position).magnitude
- beam.Size = Vector3.new(0.2, 0.2, distance)
- beam.CFrame = CFrame.new(Bow.CFrame.p, position) * CFrame.new(0, 0, -distance / 2)
- if part and part.Parent.TeamColor.Value ~= Unit.TeamColor.Value then
- local humanoid = part.Parent:FindFirstChild("Humanoid")
- if not humanoid then
- local humanoid = part.Parent.Parent:FindFirstChild("Humanoid")
- end
- if humanoid then
- humanoid:TakeDamage(Damage.Value)
- end
- end
- else if ClosestEnemy ~= nil and ClosestEnemy.Parent == workspace.Buildings and ClosestMagnitude < Range.Value then --ClosestEnemy.OriginPart < Range.Value was here before? idk
- local ray = Ray.new(Bow.Handle.CFrame.p, (ClosestEnemy.OriginPart.p - Bow.Handle.CFrame.p).unit * 300)
- local beam = Instance.new("Part", workspace)
- beam.BrickColor = Unit.TeamColor.Value
- beam.FormFactor = "Custom"
- beam.Material = "Plastic"
- beam.Transparency = 1
- beam.Anchored = true
- beam.Locked = true
- beam.CanCollide = false
- game:GetService("Debris"):AddItem(beam, 0.2)
- local part, position = workspace:FindPartOnRay(ray, ClosestEnemy.OriginPart, false, true)
- local distance = (Bow.Handle.CFrame.p - position).magnitude
- beam.Size = Vector3.new(0.2, 0.2, distance)
- beam.CFrame = CFrame.new(Bow.Handle.CFrame.p, position) * CFrame.new(0, 0, -distance / 2)
- if part and part.Parent.TeamColor.Value ~= Unit.TeamColor.Value then
- local humanoid = part.Parent:FindFirstChild("Humanoid")
- if not humanoid then
- local humanoid = part.Parent.Parent:FindFirstChild("Humanoid")
- end
- if humanoid then
- humanoid:TakeDamage(Damage.Value)
- end
- end
- end
- end
- end
- while true do -- TIME 2 FIND UNITS
- for i,v in pairs(game.Workspace.Units:GetChildren()) do
- local Magnitude = (Unit.Torso.Position - v.Torso.Position).magnitude
- if v.TeamColor.Value ~= Unit.TeamColor.Value and Magnitude < ClosestMagnitude and v ~= Unit then
- ClosestMagnitude = Magnitude
- ClosestEnemy = v
- elseif v.Torso.Position.Magnitude >= ClosestMagnitude then print('Searching for closest enemy...')
- end
- end
- if ClosestMagnitude > Range.Value then --DER ARE NO UNITS, AM SEARCH BUILDINS INSTED
- for i,v in pairs(game.Workspace.Buildings:GetChildren()) do
- local Magnitude = (Unit.Torso.Position - v.OriginPart.Position).magnitude
- if v.TeamColor.Value ~= Unit.TeamColor.Value and Magnitude <= ClosestMagnitude and v ~= Unit then
- ClosestMagnitude = Magnitude
- ClosestEnemy = v
- elseif v.OriginPart.Position.Magnitude <= ClosestMagnitude then print('Searching for closest Building...')
- end
- end
- end
- Fire()
- print(ClosestEnemy.Name)
- print(ClosestMagnitude)
- wait(ReloadTime.Value)
- ClosestMagnitude = 10000
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement