Hello So I'm making my game and I made this script which isn't working. It's not giving me any errors to so I don't know what to do. Can someone take a look at it?
--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
Ok its hard to answers so I will just show all the scripts 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)

9 comments
First off can you tell how it isn't working?
It looks like the objective may be to make a ball damage the player when touched, and I assume the problem is that it is doing that. Then some extra stuff.
This script creates bullets for my aircraft gun. The bullets should damage the aircraft wings (the script in the wings is working fine). The problem is that the bullets don't react with the wings or anything else.
Seems like this script damages only models with humanoids in them. Does your aircraft have a humanoid? Are all parts under the same model, or are they subdivided further into submodels like wings, engine, etc.?
Is this a serverscript in the bullet?
Ok so theres a model which is divided into a respawn button and a plane model (Regen; Bodykit and then all the parts) The bodykit model has a humanoid in it. And no the plane model only has parts in it. The whole plane system model is like this. Fighter is the main model then its divided into to parts Regen model and head which is the respawn button the Regen model has a another model in it.
It's called body kit which has all the plane parts in it.
we dont fix free models
also creating a game just using free model scripts is practically impossible