Ok so I have a FE compatible slingshot but the pellets are launching the wrong way when I click, here are the scripts:
local debris = game:service("Debris") pellet = script.Parent damage = 8 function tagHumanoid(humanoid) local tag = pellet:findFirstChild("creator") if tag ~= nil then while(humanoid:findFirstChild("creator") ~= nil) do humanoid:findFirstChild("creator").Parent = nil end local new_tag = tag:clone() new_tag.Parent = humanoid debris:AddItem(new_tag, 1) end end function onTouched(hit) local hitChar = hit:FindFirstAncestorWhichIsA("Model") local humanoid = hitChar:FindFirstChild("Humanoid") if humanoid ~= nil then local canDamage = true local tag = pellet:FindFirstChild("creator") if tag then local creator = tag.Value local player = game.Players:GetPlayerFromCharacter(hitChar) if creator and player then if creator == player or (creator.Team and player.Team and creator.Team == player.Team) then canDamage = false end end end if canDamage then tagHumanoid(humanoid) humanoid:TakeDamage(damage) end else damage = damage / 2 if damage < 1 then connection:disconnect() pellet.Parent = nil end end end connection = pellet.Touched:connect(onTouched) r = game:service("RunService") t, s = r.Stepped:wait() d = t + 2.0 - s while t < d do t = r.Stepped:wait() end pellet.Parent = nil
Tool = script.Parent VELOCITY = 85
local Pellet = Instance.new("Part") Pellet.Locked = true Pellet.BottomSurface = 0 Pellet.TopSurface = 0 Pellet.Shape = 0 Pellet.Size = Vector3.new(1,1,1) Pellet.BrickColor = BrickColor.new(2)
Tool.PelletScript:clone().Parent = Pellet
function spawnSound(sound) local s = sound:clone() s.Parent = sound.Parent s:Play() s.Ended:connect(function () s:Destroy() end) end
function fire(mouse_pos)
spawnSound(Tool.Handle.SlingshotSound) local vCharacter = Tool.Parent local vPlayer = game.Players:playerFromCharacter(vCharacter) local head = vCharacter:findFirstChild("Head") if head == nil then return end local dir = mouse_pos - head.Position dir = computeDirection(dir) local launch = head.Position + 5 * dir local delta = mouse_pos - launch local dy = delta.y local new_delta = Vector3.new(delta.x, 0, delta.z) delta = new_delta local dx = delta.magnitude local unit_delta = delta.unit local g = (-9.81 * 20) local theta = computeLaunchAngle( dx, dy, g) local vy = math.sin(theta) local xz = math.cos(theta) local vx = unit_delta.x * xz local vz = unit_delta.z * xz local missile = Pellet:clone() missile.Position = launch missile.Velocity = Vector3.new(vx,vy,vz) * VELOCITY missile.PelletScript.Disabled = false local creator_tag = Instance.new("ObjectValue") creator_tag.Value = vPlayer creator_tag.Name = "creator" creator_tag.Parent = missile missile.Parent = game.Workspace missile:SetNetworkOwner(vPlayer)
end
function computeLaunchAngle(dx,dy,grav)
local g = math.abs(grav) local inRoot = (VELOCITY*VELOCITY*VELOCITY*VELOCITY) - (g * ((g*dx*dx) + (2*dy*VELOCITY*VELOCITY))) if inRoot <= 0 then return .25 * math.pi end local root = math.sqrt(inRoot) local inATan1 = ((VELOCITY*VELOCITY) + root) / (g*dx) local inATan2 = ((VELOCITY*VELOCITY) - root) / (g*dx) local answer1 = math.atan(inATan1) local answer2 = math.atan(inATan2) if answer1 < answer2 then return answer1 end return answer2
end
function computeDirection(vec) local lenSquared = vec.magnitude * vec.magnitude local invSqrt = 1 / math.sqrt(lenSquared) return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt) end
Tool.Enabled = true function onActivated()
if not Tool.Enabled then return end Tool.Enabled = false local character = Tool.Parent; local humanoid = character.Humanoid if humanoid == nil then print("Humanoid not found") return end if humanoid.Health <= 0 then return end local targetPos = humanoid.TargetPoint fire(targetPos) wait(.2) Tool.Enabled = true
end
script.Parent.Activated:connect(onActivated)
I know this may not help but your could try out this Slingshot free model I found.
It was updated a couple of months ago so it is recent. It also works with FE and R15
https://www.roblox.com/library/590732086/Slingshot
Please?