How can i make this script happen in all servers

hi so i have this nuke script so that when a certain gamepass is bought it activates i want it to activate in all servers can somebody modify this script and show me

local mps = game:GetService("MarketplaceService")
local ts = game:GetService("TweenService")

local nukeFolder = game.ReplicatedStorage:WaitForChild("NukeFolder")
local remoteEvent = nukeFolder:WaitForChild("NukeRemoteEvent")
local isNuking = nukeFolder:WaitForChild("IsNuking")
local productId = nukeFolder:WaitForChild("DeveloperProductId").Value


function processReceipt(receipt)
	
	if receipt.ProductId == productId then
		
		if isNuking.Value == true then
			return Enum.ProductPurchaseDecision.NotProcessedYet
			
		else
			isNuking.Value = true
			
			local plrName = game.Players:GetNameFromUserIdAsync(receipt.PlayerId)
			remoteEvent:FireAllClients("nuke message", plrName .. " has launched a nuke!")
			
			local alarmSound = nukeFolder.AlarmSound:Clone()
			alarmSound.Parent = workspace
			alarmSound.Looped = true
			alarmSound:Play()
			
			wait(8)

			local nuke = nukeFolder:WaitForChild("Nuke"):Clone()
			
			local nukeSound = nukeFolder.NukeSound:Clone()
			nukeSound.Parent = nuke
			nukeSound.Looped = true
			nukeSound:Play()
			
			nuke.Position = workspace.Baseplate.Position + Vector3.new(0, nuke.Size.Y * 5, 0)
			nuke.Anchored = true
			nuke.Parent = workspace
			
			local nukeTweenInfo = TweenInfo.new(8, Enum.EasingStyle.Linear)
			local nukeTween = ts:Create(nuke, nukeTweenInfo, {Position = workspace.Baseplate.Position + Vector3.new(0, nuke.Size.Y/2 + 7, 0)})
			nukeTween:Play()
			
			nukeTween.Completed:Wait()
			nuke:Destroy()
			
			remoteEvent:FireAllClients("shake camera")
						
			local explosionPart = nukeFolder.ExplosionPart:Clone()
			explosionPart.Anchored = true
			explosionPart.CanCollide = false
			explosionPart.Size = Vector3.new(0, 0, 0)
			explosionPart.Position = workspace.Baseplate.Position
			explosionPart.Parent = workspace
			
			local explosionSound = nukeFolder.ExplosionSound:Clone()
			explosionSound.Parent = explosionPart
			explosionSound:Play()
			
			local oldRespawnTime = game.Players.RespawnTime
			game.Players.RespawnTime = explosionSound.TimeLength
			
			local explosionTweenInfo = TweenInfo.new(explosionSound.TimeLength, Enum.EasingStyle.Linear)
			local explosionTween = ts:Create(explosionPart, explosionTweenInfo, {Size = Vector3.new(workspace.Baseplate.Size.X, workspace.Baseplate.Size.X, workspace.Baseplate.Size.X)})
			explosionTween:Play()
			
			for i, player in pairs(game.Players:GetPlayers()) do
				
				local char = player.Character
				if char then
					local distance = (char.HumanoidRootPart.Position - explosionPart.Position).Magnitude
					
					spawn(function()
						repeat 
							wait(0.2) 
						until explosionPart.Size.X/2 >= distance - 30
						
						remoteEvent:FireClient(player, "lighting effect")
						
						wait(1)
						char.Humanoid.Health = 0
					end)
				end
			end
			
			explosionSound.Ended:Wait()
			
			game.Players.RespawnTime = oldRespawnTime
			alarmSound:Destroy()
			explosionPart:Destroy()
			
			wait(5)
			
			isNuking.Value = false
			return Enum.ProductPurchaseDecision.PurchaseGranted
		end
	end
end

mps.ProcessReceipt = processReceipt
1 Like

use messagingservice and send out a request to call that function in all the other servers

im fairly new to scripting i know its very simple but i dont know how

Use MessagingService to publish and receive events from different servers. Also, your code is extremely prone to errors because of your implementation of .ProcessReciept. I strongly advise you to follow Roblox’s tutorial on Developer Products.

Code:

--//Services
local Players = game:GetService("Players")
local mps = game:GetService("MarketplaceService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MessagingService = game:GetService("MessagingService")
local ts = game:GetService("TweenService")

--//Variables
local nukeFolder = ReplicatedStorage:WaitForChild("NukeFolder")
local remoteEvent = nukeFolder:WaitForChild("NukeRemoteEvent")
local isNuking = nukeFolder:WaitForChild("IsNuking")
local productId = nukeFolder:WaitForChild("DeveloperProductId").Value

--//Functions
local function processReceipt(receipt)
	if receipt.ProductId ~= productId then
		return
	end

	if isNuking.Value then
		return Enum.ProductPurchaseDecision.NotProcessedYet
	else
		isNuking.Value = true

		local plrName = Players:GetNameFromUserIdAsync(receipt.PlayerId)
		MessagingService:PublishAsync("Nuke", plrName)
		
		return Enum.ProductPurchaseDecision.PurchaseGranted
	end
end

MessagingService:SubscribeAsync("Nuke", function(message)
	remoteEvent:FireAllClients("nuke message", message.Data .. " has launched a nuke!")

	local alarmSound = nukeFolder.AlarmSound:Clone()
	alarmSound.Parent = workspace
	alarmSound.Looped = true
	alarmSound:Play()

	task.wait(8)

	local nuke = nukeFolder:WaitForChild("Nuke"):Clone()

	local nukeSound = nukeFolder.NukeSound:Clone()
	nukeSound.Parent = nuke
	nukeSound.Looped = true
	nukeSound:Play()

	nuke.Position = workspace.Baseplate.Position + Vector3.new(0, nuke.Size.Y * 5, 0)
	nuke.Anchored = true
	nuke.Parent = workspace

	local nukeTweenInfo = TweenInfo.new(8, Enum.EasingStyle.Linear)
	local nukeTween = ts:Create(nuke, nukeTweenInfo, {Position = workspace.Baseplate.Position + Vector3.new(0, nuke.Size.Y/2 + 7, 0)})
	nukeTween:Play()

	nukeTween.Completed:Wait()
	nuke:Destroy()

	remoteEvent:FireAllClients("shake camera")

	local explosionPart = nukeFolder.ExplosionPart:Clone()
	explosionPart.Anchored = true
	explosionPart.CanCollide = false
	explosionPart.Size = Vector3.new(0, 0, 0)
	explosionPart.Position = workspace.Baseplate.Position
	explosionPart.Parent = workspace

	local explosionSound = nukeFolder.ExplosionSound:Clone()
	explosionSound.Parent = explosionPart
	explosionSound:Play()

	local oldRespawnTime = Players.RespawnTime
	Players.RespawnTime = explosionSound.TimeLength

	local explosionTweenInfo = TweenInfo.new(explosionSound.TimeLength, Enum.EasingStyle.Linear)
	local explosionTween = ts:Create(explosionPart, explosionTweenInfo, {Size = Vector3.new(workspace.Baseplate.Size.X, workspace.Baseplate.Size.X, workspace.Baseplate.Size.X)})
	explosionTween:Play()

	for i, player in pairs(Players:GetPlayers()) do
		local char = player.Character
		
		if not char then
			continue
		end
		
		local distance = (char.HumanoidRootPart.Position - explosionPart.Position).Magnitude
		
		task.spawn(function()
			repeat 
				task.wait(0.2) 
			until explosionPart.Size.X/2 >= distance - 30

			remoteEvent:FireClient(player, "lighting effect")

			task.wait(1)
			char.Humanoid.Health = 0
		end)
	end

	explosionSound.Ended:Wait()

	Players.RespawnTime = oldRespawnTime
	alarmSound:Destroy()
	explosionPart:Destroy()

	task.wait(5)

	isNuking.Value = false
end)

mps.ProcessReceipt = processReceipt
1 Like

Try referring to this page:

You should probably look at what other replies say before posting the same thing.