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 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(BaseSizeShockwaveSizeM, 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(BaseSizeRadiationSizeM, 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