Changing scripts parent

So I have a nuke machine (activates) and I have a plane and nuke in it, which I need changed. The issue is I don’t know how to change it. Also the plane is a model not a part.

Here’s the script:

----------PROPERTIES----------
BaseSize = 700 --Base size for all stages of explosion
NukeItemHolder = script.Parent --where the nuke items will go
nuke = require(NukeItemHolder.NukeMain) --main nuke script

DoChargeUp = true --The name suggests
DoShockwave = true --The name suggests
DoExplosion = true --The name suggests
DoRadiation = true --The name suggests

–charge up properties–
ChargeUpSizeM = 0.5 --charge up size multiplier means basesize*chargeupsizem or half the base size
ChargeUpRate = 10 --charge up rate :confused: dont know how to explain but more balls if high
ChargeUpTime = 1 --charge up time
ChargeUpColor = nil --charge up color, white by default

–shockwave properties–
ShockwaveSizeM = 1 --shockwave size multiply by base 1
ShockwaveForce = 200–shockwave force, by default 500 is the max force for unwelding everything but if want more pushback then yes
ShockwaveUnanchore = false --if want parts to unacnhor
ShockwaveTime = 20 --shockwave time
ShockwaveColor = nil–shockwave color, white by default

–explosion properties–
ExplosionSizeM = 0.8–explosion size multply
ExplosionPower = 200–explosion power. effects debris, damage to humanoids and parts pushback
ExplosionDestruction = false --if want destruction
ExplosionTime = 35 --explosion time
ExplosionColor = nil–explosion color, yellow orange red by default

–radiation properties–
RadiationSizeM = 3 --radiation size 3 timees greater than base size
RadiationPower = 10–radiation power, effects rate of disintegration and time interval between damage
RadiationTime = 120–radiation time
RadiationDamage = 10–damage to hums

–detonation–
DetonateType = “AdvancedAirAttack” --[[
“Box” for box nuke which stays where it is
“AirAttack” for attack aircraft drop nuke on target which is inside nuclear computer
“AdvancedAirAttack” is same as air attack except it is much better, and you have to set up where you want your plane to go in waypoints(remeber to name them in order)
“Script” for detonation by script and you can edit when you want to nuke, after some time, at a time or when something changes at the end of this script

you can delete models not relating to detonation for nuke for ex, if using air attack then you can delete nuke box
–]]
Code = “42069” --code for launch can be longer, write nil (Code = nil) if want to launch without code
Time = 10 --time before explosion
TargetPosition = Vector3.new(0,0,0) --position for detonation if your detonating from the script
local MaxSpeed = 200 --for advanced air attack
local LaunchAtWaypoint = 12 --for advanced air attack

–launch
function launch(position)
if DoChargeUp then
nuke.ChargeUp(position,
Vector3.new(BaseSizeChargeUpSizeM, BaseSizeChargeUpSizeM, BaseSizeChargeUpSizeM),
ChargeUpRate, ChargeUpTime, NukeItemHolder, ChargeUpColor)
end
if DoShockwave then
spawn(function()
nuke.ShockWave(position,
Vector3.new(BaseSize
ShockwaveSizeM, BaseSizeShockwaveSizeM, BaseSizeShockwaveSizeM),
ShockwaveForce, ShockwaveUnanchore, NukeItemHolder, ShockwaveTime, ShockwaveColor)
end)
wait(ShockwaveTime/10)
end
if DoExplosion then
nuke.Explosion(position,
Vector3.new(BaseSizeExplosionSizeM, BaseSizeExplosionSizeM, BaseSizeExplosionSizeM),
ExplosionPower, ExplosionDestruction, NukeItemHolder, ExplosionTime, ExplosionColor)
end
if DoRadiation then
nuke.Radiation(position,
Vector3.new(BaseSize
RadiationSizeM, BaseSizeRadiationSizeM, BaseSizeRadiationSizeM),
RadiationPower, RadiationTime, RadiationDamage, NukeItemHolder)
end
end

launched = false

if DetonateType == “Box” then
local box = NukeItemHolder.NuclearBox
local screen = box.Launcher
local screeng = screen.Screen.SurfaceGui.TextLabel
local alarm = box.Alarm
local redButton = screen.RedButton.ClickDetector
local function launching()
if launched == true then return end
for i, v in pairs(screen.buttons:GetChildren()) do
v.ClickDetector:Destroy()
end
redButton:Destroy()
launched = true
box.Siren:Play()
local lightp = alarm.Light
local light = Instance.new(“SpotLight”, lightp)
local light2 = Instance.new(“SpotLight”, lightp)
light.Brightness = 100
light.Range = 60
light.Color = Color3.fromRGB(255, 10, 10)
light.Face = “Front”
light2.Brightness = 100
light2.Range = 60
light2.Color = Color3.fromRGB(255, 10, 10)
light2.Face = “Back”
local tween = game:GetService(“TweenService”):Create(lightp, TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.In, -1, false, 0), {Orientation = lightp.Orientation + Vector3.new(0, 359, 0)})
tween:Play()
for i=Time, 0, -1 do
screeng.Text = "Run while you still can: "…i
wait(1)
end
box.Siren:Stop()
spawn(function()
wait(1)
box:Remove()
end)
launch(box.NuclearReactor.Position)
end
if Code then
local codeEntered = “”
for i, v in pairs(screen.buttons:GetChildren()) do
v.ClickDetector.MouseClick:Connect(function()
codeEntered = codeEntered… tonumber(v.Name)
screeng.Text = codeEntered
end)
end
redButton.MouseClick:Connect(function()
if codeEntered == Code then
launching()
else
codeEntered = “”
screeng.Text = codeEntered
end
end)
else
redButton.MouseClick:Connect(launching)
end

elseif DetonateType == “AirAttack” then
local comp = NukeItemHolder.NuclearComputer
local screen = comp.Launcher
local screeng = screen.Screen.SurfaceGui.TextLabel
local redButton = screen.RedButton.ClickDetector
local aircraft = NukeItemHolder.NuclearPlane
local missile = NukeItemHolder.NuclearMissile

local function launching()
if launched == true then return end
for i, v in pairs(screen.buttons:GetChildren()) do
v.ClickDetector:Destroy()
end
redButton:Destroy()
launched = true
for i=Time, 0, -1 do
screeng.Text = "Aircraft incoming: "…i
wait(1)
end
screeng.Text = “Target locked”

local newcframe = CFrame.new
local offset = Vector3.new(-3000, 500, 0) + comp.PrimaryPart.Position
local speed = Vector3.new(10, 0, 0)
local direction = Vector3.new(-3000, 500, 0) + comp.PrimaryPart.Position
for i=1, 2750, 10 do
  aircraft:SetPrimaryPartCFrame(newcframe(offset, direction))
  offset += speed
  wait()
end
spawn(function()
  for i=1, 10250, 5 do
    aircraft:SetPrimaryPartCFrame(newcframe(offset, direction))
    offset += speed
    wait()
  end
end)
local missileoffset = offset
local missiledirection = offset + Vector3.new(1000, -2000)
local missileSpeed = Vector3.new(2, -4, 0)
for i=1, 500, 4 do
  missile:SetPrimaryPartCFrame(newcframe(missileoffset, missiledirection))
  missileoffset += missileSpeed
  wait()
	end
	spawn(function()
		wait(1)
		missile:Remove()
	end)
	launch(missile.PrimaryPart.Position)

end

if Code then
local codeEntered = “”
for i, v in pairs(screen.buttons:GetChildren()) do
v.ClickDetector.MouseClick:Connect(function()
codeEntered = codeEntered… tonumber(v.Name)
screeng.Text = codeEntered
end)
end
redButton.MouseClick:Connect(function()
if codeEntered == Code then
launching()
else
codeEntered = “”
screeng.Text = codeEntered
end
end)
else
redButton.MouseClick:Connect(launching)
end

elseif DetonateType == “AdvancedAirAttack” then

local plane = script.Parent.AdvancedNuclearPlane.Plane
local center = plane.Center
local TS= game:GetService("TweenService")
local info
local comp = NukeItemHolder.NuclearComputer
local screen = comp.Launcher
local screeng = screen.Screen.SurfaceGui.TextLabel
local redButton = screen.RedButton.ClickDetector
local missile = NukeItemHolder.NuclearMissile
local CFrameValue = Instance.new("CFrameValue")
local newcframe = CFrame.new
local Waypoints = script.Parent.AdvancedNuclearPlane.WayPoints:GetChildren()
table.sort(Waypoints, function(a,b)
	return tonumber(a.Name) < tonumber(b.Name)
end)

local function launching()
	if launched == true then return end
	for i, v in pairs(screen.buttons:GetChildren()) do
		v.ClickDetector:Destroy()
	end
	redButton:Destroy()
	launched = true
	for i=Time, 0, -1 do
		screeng.Text = "Aircraft incoming: "..i
		wait(1)
	end
	screeng.Text = "Target locked"

	CFrameValue:GetPropertyChangedSignal("Value"):Connect(function()
		plane:SetPrimaryPartCFrame(CFrameValue.Value)
	end)
	
	local Speed = MaxSpeed/10
	for i, v in pairs(Waypoints) do
		if Speed < MaxSpeed then
			Speed += MaxSpeed/10
		end
		if tonumber(v.Name) == LaunchAtWaypoint+1 then
			spawn(function()
				print("Launchh")
				local target = comp.PrimaryPart
				local CFrameValue2 = Instance.new("CFrameValue")
				CFrameValue2:GetPropertyChangedSignal("Value"):Connect(function()
					missile:SetPrimaryPartCFrame(CFrameValue2.Value)
				end)
				CFrameValue2.Value = center.CFrame
				local D2 = (center.Position - target.Position).Magnitude
				local tween = TS:Create(CFrameValue2, TweenInfo.new(D2/100, Enum.EasingStyle.Cubic, Enum.EasingDirection.In), {Value = newcframe(center.Position, target.Position)*newcframe(Vector3.new(0, 0, -D2))})
				tween:Play()
				wait(D2/100)
				spawn(function()
					wait(1)
					missile:Remove()
				end)
				launch(missile.PrimaryPart.Position)
			end)
		end
		print(v.Name)
		local D = (center.Position - v.Position).Magnitude
		info = TweenInfo.new(D/Speed, Enum.EasingStyle.Linear)
		CFrameValue.Value = center.CFrame

		local tween = TS:Create(CFrameValue, info, {Value = newcframe(center.Position, v.Position)*newcframe(Vector3.new(0, 0, -D))})
		tween:Play()
		wait(D/Speed)
	end
end
	
if Code then
	local codeEntered = ""
	for i, v in pairs(screen.buttons:GetChildren()) do
		v.ClickDetector.MouseClick:Connect(function()
			codeEntered = codeEntered.. tonumber(v.Name)
			screeng.Text = codeEntered
		end)
	end
	redButton.MouseClick:Connect(function()
		if codeEntered == Code then
			launching()
		else
			codeEntered = ""
			screeng.Text = codeEntered
		end
	end)
else
	redButton.MouseClick:Connect(launching)
end

elseif DetonateType == “Script” then
local ScriptType = “Live” --Live, ValueChanged and time
local ValueHolder = script --Replace this with your instance like a bool value or something so when it changes nuke explodes
local LaunchAtOs = 98998898989 --Write seconds, search https://www.epochconverter.com/ in google and enter your time, convert, copy and past that seconds here

if ScriptType == "Live" then
	repeat wait(1) until os.time() >= LaunchAtOs
	launch(TargetPosition)
elseif ScriptType == "ValueChanged" then
	ValueHolder.Changed:Connect(function()
		if launched == false then
			launch(TargetPosition)
		end
	end)
else
	wait(Time)
	launch(TargetPosition)
end

end

1 Like

What are you trying to accomplish? You really didn’t explain it well.

1 Like

Basily I have a plane and a nuke in the nuke activator and I need them changed to another model.

You want the parent to change?

Yes but the plane is a model, where the previous plane was a part.