How to Make a Plane/scripts

From Goodblox Wiki
Jump to navigationJump to search

Introduction

This page will contain the scripts from How to Make a Plane

Rocket Script

r = game:service("RunService")

shaft = script.Parent
position = shaft.Position

function fly()
	direction = shaft.CFrame.lookVector 
	position = position + 35*direction
	error = position - shaft.Position
	shaft.Velocity = 5*error
end

function blow()
	swoosh:stop()
	explosion = Instance.new("Explosion")
	explosion.Position = shaft.Position
	explosion.BlastRadius = 10

	-- find instigator tag
	local creator = script.Parent:findFirstChild("creator")
	if creator ~= nil then
		explosion.Hit:connect(function(part, distance)  onPlayerBlownUp(part, distance, creator) end)
	end

	explosion.Parent = game.Workspace
	connection:disconnect()
	wait(.1)
	shaft:remove()
end

function onTouch(hit)
	if hit.Name == "Building" or
	hit.Name == "Safe" then
		swoosh:stop()
		shaft:remove()
	return end

	local parent = hit.Parent.Parent
	local owner = shaft.Owner
	if owner ~= nil then
		if parent ~= nil and owner.Value ~= nil then
			if parent ~= owner.Value then
				local stunt = parent:FindFirstChild("Stunt")
				if stunt ~= nil then
					if stunt.Value ~= 1 then
						blow()
					end
				else
					blow()
				end
			end
		end
	end
end

function onPlayerBlownUp(part, distance, creator)
	if part.Name == "Head" then
		local humanoid = part.Parent:findFirstChild("Humanoid")
		tagHumanoid(humanoid, creator)
	end
end

function tagHumanoid(humanoid, creator)
	if creator ~= nil then
		local new_tag = creator: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

t, s = r.Stepped:wait()

swoosh = script.Parent.Swoosh
swoosh:play()

d = t + 4.0 - s
connection = shaft.Touched:connect(onTouch)

while t < d do
	fly()
	t = r.Stepped:wait()
end

-- at max range
script.Parent.Explosion.PlayOnRemove = false
swoosh:stop()
shaft:remove()

There are plenty of things to change

function fly()
	direction = shaft.CFrame.lookVector 
	position = position + 35*direction
	error = position - shaft.Position
	shaft.Velocity = 5*error
end

You can play with the coefficients to make a projectile that flies faster or more slowly.

function blow()
	swoosh:stop()
	explosion = Instance.new("Explosion")
	explosion.Position = shaft.Position
	explosion.BlastRadius = 10

	-- find instigator tag
	local creator = script.Parent:findFirstChild("creator")
	if creator ~= nil then
		explosion.Hit:connect(function(part, distance)  onPlayerBlownUp(part, distance, creator) end)
	end

	explosion.Parent = game.Workspace
	connection:disconnect()
	wait(.1)
	shaft:remove()
end

You can change BlastRadius if you want the rocket to make a bigger or smaller explosion.

d = t + 4.0 - s

Change 4.0 to the number of seconds you want the rocket to last if it doesn't hit anything before deleting itself.

You can also play with the Part "Rocket" itself, and make it a different colour, bigger, smaller, round, etc.

Cloaking Script

message = Instance.new("Hint") -- section one
playerinplane = false
while true do
	vehicle = script.Parent
	bodykit = vehicle.BodyKit:GetChildren()
	parts = vehicle.Parts
	player = vehicle.Parent
-- section two
	if (vehicle.Cloaked.Value == 1) and (vehicle.CloakPercent.Value < 100) then
		vehicle.CloakPercent.Value = vehicle.CloakPercent.Value + 5
	end
	if (vehicle.Cloaked.Value == 0) and (vehicle.CloakPercent.Value > 0) then
		vehicle.CloakPercent.Value = vehicle.CloakPercent.Value - 5
	end
-- section three
	if (vehicle.Cloaked.Value == 1) then
		vehicle.Energy.Value = vehicle.Energy.Value - 1
	end
	if (vehicle.Cloaked.Value == 0) and (vehicle.CloakPercent.Value <= 0) and (vehicle.Energy.Value < 1000) then
		vehicle.Energy.Value = vehicle.Energy.Value + 1
	end

--section four
	if (vehicle.Cloaked.Value == 1) and (vehicle.Energy.Value <= 0) then
		vehicle.Cloaked.Value = 0
	end
	if (vehicle.Cloaked.Value == 1) and (player.Humanoid.health <= 0) then
		vehicle.Cloaked.Value = 0
		message:Remove()
	end
	local weld = parts:FindFirstChild("Seat"):FindFirstChild("SeatWeld")
	if (weld == nil) or (weld.Part1 ~= player:FindFirstChild("Torso")) then
		vehicle.Cloaked.Value = 0
		message:Remove()
	end

--section five
	if (vehicle.Energy.Value >= 950) then
		message.Text = "Energy for Cloak: (||||||||||)"
	elseif (vehicle.Energy.Value >= 850) and (vehicle.Energy.Value < 950) then
		message.Text = "Energy for Cloak: (||||||||| )"
	elseif (vehicle.Energy.Value >= 750) and (vehicle.Energy.Value < 850) then
		message.Text = "Energy for Cloak: (||||||||  )"
	elseif (vehicle.Energy.Value >= 650) and (vehicle.Energy.Value < 750) then
		message.Text = "Energy for Cloak: (|||||||   )"
	elseif (vehicle.Energy.Value >= 550) and (vehicle.Energy.Value < 650) then
		message.Text = "Energy for Cloak: (||||||    )"
	elseif (vehicle.Energy.Value >= 450) and (vehicle.Energy.Value < 550) then
		message.Text = "Energy for Cloak: (|||||     )"
	elseif (vehicle.Energy.Value >= 350) and (vehicle.Energy.Value < 450) then
		message.Text = "Energy for Cloak: (||||      )"
	elseif (vehicle.Energy.Value >= 250) and (vehicle.Energy.Value < 350) then
		message.Text = "Energy for Cloak: (|||       )"
	elseif (vehicle.Energy.Value >= 150) and (vehicle.Energy.Value < 250) then
		message.Text = "Energy for Cloak: (||        )"
	elseif (vehicle.Energy.Value >= 50) and (vehicle.Energy.Value < 150) then
		message.Text = "Energy for Cloak: (|         )"
	elseif (vehicle.Energy.Value < 50) then
		message.Text = "Energy for Cloak: (          )"
	end
--section six	
	for i = 1,#bodykit do
		bodykit[i].Transparency = vehicle.CloakPercent.Value / 100
	end 
	seat = parts:FindFirstChild("Seat")
	engine = parts:FindFirstChild("Engine")
	gun1 = parts:FindFirstChild("Gun1")
	gun2 = parts:FindFirstChild("Gun2")
	tip = parts:FindFirstChild("Tip")
	head = player:FindFirstChild("Head")
	torso = player:FindFirstChild("Torso")
	leftarm = player:FindFirstChild("Left Arm")
	leftleg = player:FindFirstChild("Left Leg")
	rightarm = player:FindFirstChild("Right Arm")
	rightleg = player:FindFirstChild("Right Leg")

--section seven
	if (player.Name ~= "Station1") and (player.Name ~= "Station2") then
		if (playerinplane == false) then
			message.Parent = game.Players:FindFirstChild(player.Name)
			playerinplane = true
			body = player:FindFirstChild("Torso")
			head = player:FindFirstChild("Head")
			if (body ~= nil) then
				bodyshirt = body:FindFirstChild("roblox")
				if (bodyshirt ~= nil) then
					backupshirt = bodyshirt:clone()
				end
			end
			if (head ~= nil) then
				bodyface = head:FindFirstChild("face")
				if (bodyface ~= nil) then
					backupface = bodyface:clone()
				end
			end
		end
		if (vehicle.Cloaked.Value == 1) then
			body = player:FindFirstChild("Torso")
			head = player:FindFirstChild("Head")
			if (body ~= nil) then
				bodyshirt = body:FindFirstChild("roblox")
				if (bodyshirt ~= nil) then
					backupshirt = bodyshirt:clone()
					bodyshirt:Remove()
				end
			end
			if (head ~= nil) then
				bodyface = head:FindFirstChild("face")
				if (bodyface ~= nil) then
					bodyface:Remove()
					backupface = bodyface:clone()
				end
			end
		end
		if (vehicle.Cloaked.Value == 0) then
			body = player:FindFirstChild("Torso")
			head = player:FindFirstChild("Head")
			if (body ~= nil) then
				bodyshirt = body:FindFirstChild("roblox")
				if (bodyshirt == nil) and (backupshirt ~= nil) then
					bodyshirt = backupshirt:clone()
					bodyshirt.Parent = player.Torso
				end
			end
			if (head ~= nil) then
				bodyface = head:FindFirstChild("face")
				if (bodyface == nil) and (backupface ~= nil) then
					bodyface = backupface:clone()
					bodyface.Parent = player.Head
				end
			end
		end
--section eight
		if (seat ~= nil) then
			seat.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (engine ~= nil) then
			engine.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (gun1 ~= nil) then
			gun1.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (gun2 ~= nil) then
			gun2.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (tip ~= nil) then
			tip.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (head ~= nil) then
			head.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (torso ~= nil) then
			torso.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (leftarm ~= nil) then
			leftarm.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (leftleg ~= nil) then
			leftleg.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (rightarm ~= nil) then
			rightarm.Transparency = vehicle.CloakPercent.Value / 100
		end
		if (rightleg ~= nil) then
			rightleg.Transparency = vehicle.CloakPercent.Value / 100
		end
--Section nine
	end
	wait(0.1)
end

Team Coloring Script

local boom = false
local color_tag = script.Parent.PlaneColor

function createExplosion(position)

explosion = Instance.new("Explosion")
explosion.Position = position
explosion.BlastRadius = 12
explosion.Parent = game.Workspace

end

function onTouch(part)
	if boom == true then return end
	if (part.Name == "Rocket") or (part.Name == "Safe") or (part.Parent.Parent.Parent == script.Parent) or (part.Parent:findFirstChild("Humanoid")) then return end
	if (script.Parent.Parts.Tip.Velocity.x > 50) or (script.Parent.Parts.Tip.Velocity.x < -50) or (script.Parent.Parts.Tip.Velocity.z > 50) or (script.Parent.Parts.Tip.Velocity.z < -50) then
	boom = true
	createExplosion(script.Parent.Parts.Engine.Position)
	script.Parent:BreakJoints()
	local stuff = script.Parent:children()
	for i=1,#stuff do
		if stuff[i].Name == "BodyKit" or
		stuff[i].Name == "Parts" then
		local parts = stuff[i]:children()
			for p = 1, #parts do
				if parts[p].className == "Part" then
				local velo = Instance.new("BodyVelocity")
				velo.maxForce = Vector3.new(9.9e+036, 9.9e+036, 9.9e+036)
				velo.velocity = Vector3.new(math.random(-15,15),math.random(-15,15),math.random(-15,15))
				velo.Parent = parts[p]
				end
			end
		end
	end
	wait(4)
	script.Parent:remove()
	end
end

function onColorTagChanged(property)
--	print("TagColor" .. property)
--	if (property == "Value") then
		-- Color Ship
		local parts = script.Parent.BodyKit:GetChildren()
		for i = 1,#parts do
			if parts[i].className == "Part" and parts[i].Name == "ColorMe" then
				parts[i].BrickColor = color_tag.Value
			end
		end
--	end
end

script.Parent.Parts.Tip.Touched:connect(onTouch)
color_tag.Changed:connect(onColorTagChanged)

Sequential firing

--- The replacement firing script section
			if (key=="f") and (bin.Reload.Value == 0) then
				if plane.mode.Value == true then
					bin.Reload.Value = 1
					fire(vehicle,plane.Gun1)
					fire(vehicle,plane.Gun2)
					plane.mode.Value = false
					wait(.25)
					bin.Reload.Value = 0
				else
					bin.Reload.Value = 1
					fire(vehicle,plane.Gun3)
					fire(vehicle,plane.Gun4)
					plane.mode.Value = true
					wait(.25)
					bin.Reload.Value = 0
				end
			end
--- The end of the replacement firing script section

Tool giver plane

position = script.Parent.Engine.Position
local frame = Instance.new("CFrameValue")
frame.Name = "OriginCFrame"
frame.Value = script.Parent.Engine.CFrame
frame.Parent = script.Parent

local object = Instance.new("ObjectValue")
object.Value = script.Parent.Parent.Parent

seat = script.Parent.Seat

function onSitUp(child, hopper, plane)

	if child.Parent == nil then
		hopper.Parent = nil -- ungive flying tool
		plane.Parent = game.Workspace
	end
end

function onChildAdded(part)
	if part.className == "Weld" then

		

		local torso = part.Part1
		if torso ~= nil then

			local char = torso.Parent
			local player = game.Players:GetPlayerFromCharacter(char)
			if player ~= nil then
				local hopper = game.Lighting.Plane:clone() -- Replace plane for the name of the flyinging tool
				hopper.Parent = player.Backpack
				part.AncestryChanged:connect(function(child) onSitUp(child, hopper, script.Parent.Parent) end) 
			end

			

			local parent = torso.Parent
			if parent ~= nil then
				script.Parent.Parent.Parent = parent
				while true do
					wait(2)
					local pos = script.Parent.Engine.Position
					if (position - pos).magnitude > 30 then
						if object.Value ~= nil then
							object.Value.Regen.Value = 1
							wait(.5)
							object.Value.Regen.Value = 0
							object.Value = nil
						end
					break end
				end
				while true do
					print("Loop")
					wait(2)
					if part == nil then
						script.Parent.Parent.Parent = game.Workspace
						script.Parent.Parent:MakeJoints()
					break end
				end
			end
		end
	end
end
seat.ChildAdded:connect(onChildAdded)

Plane explosion


local boom = false

function createExplosion(position)

explosion = Instance.new("Explosion")
explosion.Position = position
explosion.BlastRadius = 12
explosion.Parent = game.Workspace

end

function onTouch(part)
	if boom == true then return end
	if (part.Name == "Rocket") or (part.Name == "Safe") or (part.Parent.Parent.Parent == script.Parent) or (part.Parent:findFirstChild("Humanoid")) then return end
	if (script.Parent.Parts.Tip.Velocity.x > 50) or (script.Parent.Parts.Tip.Velocity.x < -50) or (script.Parent.Parts.Tip.Velocity.z > 50) or (script.Parent.Parts.Tip.Velocity.z < -50) then
	boom = true
	createExplosion(script.Parent.Parts.Engine.Position)
	script.Parent:BreakJoints()
	local stuff = script.Parent:children()
	for i=1,#stuff do
		if stuff[i].Name == "BodyKit" or
		stuff[i].Name == "Parts" then
		local parts = stuff[i]:children()
			for p = 1, #parts do
				if parts[p].className == "Part" then
				local velo = Instance.new("BodyVelocity")
				velo.maxForce = Vector3.new(9.9e+036, 9.9e+036, 9.9e+036)
				velo.velocity = Vector3.new(math.random(-15,15),math.random(-15,15),math.random(-15,15))
				velo.Parent = parts[p]
				end
			end
		end
	end
	wait(4)
	script.Parent:remove()
	end
end

script.Parent.Parts.Tip.Touched:connect(onTouch)

Plane regeneration

position = script.Parent.Engine.Position
local frame = Instance.new("CFrameValue")
frame.Name = "OriginCFrame"
frame.Value = script.Parent.Engine.CFrame
frame.Parent = script.Parent

local object = Instance.new("ObjectValue")
object.Value = script.Parent.Parent.Parent

seat = script.Parent.Seat

function onChildAdded(part)
	if part.className == "Weld" then
		local torso = part.Part1
		if torso ~= nil then
			local parent = torso.Parent
			if parent ~= nil then
				script.Parent.Parent.Parent = parent
				while true do
					wait(2)
					local pos = script.Parent.Engine.Position
					if (position - pos).magnitude > 30 then
						if object.Value ~= nil then
							object.Value.Regen.Value = 1
							wait(.5)
							object.Value.Regen.Value = 0
							object.Value = nil
						end
					break end
				end
				while true do
					print("Loop")
					wait(2)
					if part == nil then
						script.Parent.Parent.Parent = game.Workspace
						script.Parent.Parent:MakeJoints()
					break end
				end
			end
		end
	end
end
seat.ChildAdded:connect(onChildAdded)

Bullets script one

function onTouched(hit)
hit:BreakJoints()
end

connection = script.Parent.Touched:connect(onTouched)

Bullets script two

function shoot(pln,spn)
	local missile = script.Bullet:clone()
	missile.CFrame = spn.CFrame * CFrame.new(0, 0, -35)

	missile.RocketScript.Disabled = false
	missile.Parent = game.Workspace

	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = game.Players.LocalPlayer
	creator_tag.Name = "creator"
	creator_tag.Parent = missile

	missile.Owner.Value = pln
end

Bullets script three

			if (key=="e") and (bin.Reload.Value == 0) then
				shoot(vehicle,plane.Gun1)
				shoot(vehicle,plane.Gun2)
				bin.Reload.Value = 1
				wait(1)
				bin.Reload.Value = 0
			end

Rocket into PlaneFlyer

function fire(pln,spn)
	local missile = script.Rocket:clone()
	missile.CFrame = spn.CFrame * CFrame.new(0, 0, -35)

	missile.RocketScript.Disabled = false
	missile.Parent = game.Workspace

	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = game.Players.LocalPlayer
	creator_tag.Name = "creator"
	creator_tag.Parent = missile

	missile.Owner.Value = pln
end

Homing missile

			if (key=="Z")  then
				if (bin.Reload.Value == 0) then
					if (homingtarget ~= nil) then
						if (homingtarget.Parent.Parent ~= vehicle) then
							firehomingmissile(vehicle,plane.MissileLauncher1)
							bin.Reload.Value = 1
							wait(5)
							bin.Reload.Value = 0
						end
					end
				end
			end

Fire function

function fire(pln,spn)
	local missile = bin.Rocket:clone()
	missile.CFrame = spn.CFrame * CFrame.new(0, 0, -35)

	missile.RocketScript.Disabled = false
	missile.Parent = game.Workspace

	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = game.Players.LocalPlayer
	creator_tag.Name = "creator"
	creator_tag.Parent = missile

	missile.Owner.Value = pln
end

Shot formations

function fire(pln,spn,x,y)
	local missile = bin.Rocket:clone()
	missile.CFrame = spn.CFrame * CFrame.new(x, y, -35)

	missile.RocketScript.Disabled = false
	missile.Parent = game.Workspace

	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = game.Players.LocalPlayer
	creator_tag.Name = "creator"
	creator_tag.Parent = missile

	missile.Owner.Value = pln
end

Engine


model = script.Parent.Parent.Parent
backup = model:clone()
local debounce = false

function onTouch(part)
	if (part.Name == "Safe") and (debounce == false) and (script.Parent.Count.Value == 0) then
	debounce = true
	wait(2)
	model = backup:clone()
	model.Parent = game.Workspace
	model:makeJoints()
	script.Parent.Count.Value = 1
	debounce = false
	end
end 
script.Parent.Touched:connect(onTouch)

Firing script section

			if (key=="f") and (bin.Reload.Value == 0) then
				fire(vehicle,plane.Gun1)
				fire(vehicle,plane.Gun2)
				bin.Reload.Value = 1
				wait(1)
				bin.Reload.Value = 0
			end

Getting a plane tool

function fire(pln,spn)
	local missile = script.Rocket:clone()
	missile.CFrame = spn.CFrame * CFrame.new(0, 0, -35)

	missile.RocketScript.Disabled = false
	missile.Parent = game.Workspace

	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = game.Players.LocalPlayer
	creator_tag.Name = "creator"
	creator_tag.Parent = missile

	missile.Owner.Value = pln
end