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

0

First off can you tell how it isn't working?

0

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.

0

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.

0

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.?

0

Is this a serverscript in the bullet?

0

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.

0

It's called body kit which has all the plane parts in it.

0

we dont fix free models

0

also creating a game just using free model scripts is practically impossible