So I have a plane game. All the planes have guns. Shooting at the enemy planes wings activates a script that adds an image on to them and breaks them. The problem is that the plane guns bullets don't react with the wings script. the script in the wings works fine I tested it but something is wrong with the bullets. Heres the gun script
--wait()
local ball = script.Parent
local damage = 40
function onTouched(hit)
local humanoid = hit.Parent:findFirstChild("Humanoid")
if hit:GetMass() < 1 * 20 then
if hit.Anchored == false then
hit:BreakJoints()
end
end
if humanoid ~= nil then
tagHumanoid(humanoid)
humanoid:TakeDamage(damage)
wait(2)
untagHumanoid(humanoid)
end
connection:disconnect()
ball:remove()
end
function tagHumanoid(humanoid)
-- todo: make tag expire
local tag = ball:findFirstChild("creator")
if tag ~= nil then
local new_tag = tag:clone()
new_tag.Parent = humanoid
end
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
connection = ball.Touched:connect(onTouched)
Heres the plane script
bin = script.Parent
plane = nil
hold = false
local debounce = false
local planedebounce = false
local stuntdebounce = false
local controlling = false
local currentspeed = 0
local turn = nil
fly = false
local missile = false
local shooting = false
function fire_MachineGun(gun_Source, player)
while shooting == true do
missile = true
local guns = gun_Source:GetChildren()
local vehicle = findPlane(script.Parent.Parent.Parent)
for i = 1,#guns do
if guns[i].Name == "MachineGun" and guns[i].className == "Part" then
local shoot = Instance.new("Part")
shoot.BrickColor = BrickColor.new("Bright yellow")
shoot.formFactor = "Custom"
shoot.Size = Vector3.new(0.4,0.4,6)
shoot.CFrame = guns[i].CFrame * CFrame.new(0,0,-50)
shoot.Name = "Bullet"
local d = game:GetService("Debris")
d:AddItem(shoot,5)
local force = Instance.new("BodyVelocity")
force.Parent = shoot
force.Name = "Move"
force.velocity = guns[i].CFrame.lookVector * 750
local creator = Instance.new("ObjectValue")
creator.Name = "creator"
creator.Value = player
creator.Parent = shoot
local shot = script:findFirstChild("GunScript"):clone()
shot.Disabled = false
shot.Parent = shoot
shoot.Parent = Workspace
end
end
vehicle.FireGun:play()
wait(0.15)
end
missile = false
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
function move(point, engine)
local origincframe = engine:findFirstChild("Direction").cframe
size = engine.Size
target = engine.Position+((point - engine.Position).unit*100)
local dir = (target - engine.Position).unit
local spawnPos = engine.Position
left = engine.CFrame*CFrame.new(-size.x/2, 0, 0).p
right = engine.CFrame*CFrame.new(size.x/2, 0, 0).p
md = (target - engine.Position).magnitude
foebmd = engine.CFrame*CFrame.new(0, 0, -md).p
toleft = (target -left).magnitude
toright = (target -right).magnitude
rot = ((foebmd - target).magnitude/10)
local pos = spawnPos + (dir * 1)
turn = math.rad((rot/10)*engine.TiltFactor.Value)
if turn > math.rad(89) then
turn = math.rad(89)
end
if toleft< toright and toleft >rot then
engine:findFirstChild("Direction").cframe = CFrame.new(pos, pos + dir)*CFrame.fromEulerAnglesXYZ(0, 0, turn)
elseif toleft > toright and toright >rot then
engine:findFirstChild("Direction").cframe = CFrame.new(pos, pos + dir)*CFrame.fromEulerAnglesXYZ(0, 0, -turn)
else
engine:findFirstChild("Direction").cframe = CFrame.new(pos, pos + dir)
end
engine:findFirstChild("Direction").P = engine.TurnSpeed.Value
end
function findPlane(player)
local list = player.Character:GetChildren()
for x = 1, #list do
if (list[x].Name == "AircraftSeat") then
return list[x]
end
end
return nil
end
function onButton1Down(mouse)
local vehicle = findPlane(script.Parent.Parent.Parent)
if vehicle ~= nil and debounce == false and planedebounce == false then
if fly == false and taxi == false then return end
debounce = true
controlling = true
while true do
wait()
local engine = vehicle
local position = mouse.Hit
local target = position.p
move(target, engine)
if planedebounce == true or
controlling == false then break end
end
wait(0.1)
debounce = false
end
end
function onButton1Up(mouse)
controlling = false
end
function onSelected(mouse)
mouse.Icon = "http://www.roblox.com/asset/?id=7419350"
mouse.Button1Down:connect(function() onButton1Down(mouse) end)
mouse.Button1Up:connect(function() onButton1Up(mouse) end)
mouse.KeyDown:connect(onKeyDown)
mouse.KeyUp:connect(onKeyUp)
mouse.Move:connect(function() Fly(mouse) end)
mouse.Idle:connect(function() Fly(mouse) end)
end
function Fly(mouse)
local vehicle = findPlane(script.Parent.Parent.Parent)
if (vehicle==nil) then return end
vehicle.Thrust.velocity = (vehicle.CFrame.lookVector * currentspeed) + Vector3.new(0,vehicle.LiftTrim.Value/100,0)
end
function onKeyDown(key)
if (key~=nil) then
key = key:lower()
local vehicle = findPlane(script.Parent.Parent.Parent)
if (vehicle==nil) then return end
if key == "y" then
fly = true
vehicle.Startup:Play()
vehicle.Starter1.Smoke.Enabled = true
wait(1)
vehicle.Starter1.Smoke.Enabled = false
vehicle.Fly:Play()
vehicle.Direction.cframe = vehicle.CFrame
vehicle.Direction.maxTorque = Vector3.new(4e3,4e3,4e3)
vehicle.Thrust.maxForce = Vector3.new(9e20,9e20,9e20)
vehicle.Speed.Value = vehicle.MaxSpeed.Value
while fly == true do
if currentspeed < vehicle.Speed.Value then
currentspeed = currentspeed + 1
elseif currentspeed > vehicle.Speed.Value then
currentspeed = currentspeed - 1
end
if vehicle.Acceleration.Value > 1000 then vehicle.Acceleration.Value = 1000 end
wait((1-(vehicle.Acceleration.Value/1000))+0.01)
if fly == false then break end
end
end
if key == "x" then
fly = false
currentspeed = 0
vehicle.Direction.maxTorque = Vector3.new(0,0,0)
vehicle.Thrust.maxForce = Vector3.new(0,0,0)
end
if key == "l" and fly == true then
vehicle.Direction.maxTorque = Vector3.new(4e3,0,4e3)
local frame = vehicle:FindFirstChild("OriginCFrame")
if frame ~= nil then
vehicle.Direction.cframe = frame.Value
end
wait(2)
vehicle.Direction.cframe = vehicle.CFrame
vehicle.Direction.maxTorque = Vector3.new(4e3,4e3,4e3)
end
if key == "s" then
if vehicle.Speed.Value > vehicle.MinSpeed.Value then
vehicle.Speed.Value = vehicle.Speed.Value - 10
end
end
if key == "w" then
if vehicle.Speed.Value < vehicle.MaxSpeed.Value then
vehicle.Speed.Value = vehicle.Speed.Value + 10
end
end
if key == "f" and missile == false then
shooting = true
fire_MachineGun(vehicle, bin.Parent.Parent)
end
end
end
function onKeyUp(key)
if (key~=nil) then
key = key:lower()
if key == "f" then
shooting = false
end
local vehicle = findPlane(script.Parent.Parent.Parent)
if (vehicle==nil) then return end
end
end
bin.Selected:connect(onSelected)
bin.Deselected:connect(onDeselected)
HERES THE WING Break SCRIPT
function onTouched(hit)
if hit:GetMass() > 1 * 20 then
script.Parent.Parent.Parent.AircraftSeat.Crash:Play()
script.Parent.Parent.Parent.AircraftSeat.Fly:Remove()
script.Parent.Parent.Parent.AircraftSeat.Direction:Remove()
script.Parent.Parent.Parent.AircraftSeat.Thrust:Remove()
script.Parent:BreakJoints()
script:Remove()
end
end
script.Parent.Touched:connect(onTouched)
And heres the wing image script
function onTouch(hit)
if hit.Name == "Bullet" then
if script.Parent.Decal1.Texture == "http://www.roblox.com/asset/?id=79618928" then
script.Parent.Decal1.Texture = "http://www.roblox.com/asset/?id=81793907"
script.Parent.Decal2.Texture = "http://www.roblox.com/asset/?id=81793907"
script.Parent.BH2.Disabled = false
script:Remove()
end
end
end
script.Parent.Touched:connect(onTouch)
Any idea on how to fix this?

1 comment
Remove() is deprecated, use Destroy()