Search code examples
luaroblox

StarterGui:SetCore must be called from a local script


So... I am trying to explode everyone and send them a message but it is not working. Here is the code.

Serverside:

local gui = game:GetService("StarterGui")

local Players = game:GetService("Players")

local pp = game:GetService("ProximityPromptService")

local phone = game:GetService("ReplicatedStorage")

local world = game.Workspace

local function pptrig (obj, ply)
    for i,v in pairs(game.Players:GetChildren()) do
        local player = world:FindFirstChild(v.Name)
        local nuke = Instance.new("Explosion", world)
        nuke.BlastRadius = 0.9
        nuke.BlastPressure = 1000000
        nuke.Position = player.HumanoidRootPart.Position
        print("run")
        phone.Exploded:FireClient(v, v.Name, ply.Name)
    end 
end

pp.PromptTriggered:Connect(pptrig)

Clientside:

local phone = game:GetService("ReplicatedStorage")

local gui = game:GetService("StarterGui")

gui:SetCore("test", {Text = "Ran"})

local function humiliation(me, ply)
    
    gui:SetCore("test", {Text = "Ran"})
    if ply ~= me then
        gui:SetCore("Humiliation", {
            Title = "Exploded!",
            Text = "You have been exploded by "..ply..".",
            Duration = 10,
        })
    elseif ply == me then
        gui:SetCore("Humiliation", {
            Title = "Exploded!",
            Text = "You, "..me..", exploded yourself."
        })
    end
end

phone.Exploded.OnClientEvent:Connect(humiliation())

When I try to run it it gives me this:

StarterGui:SetCore must be called from a local script. (x2)  -  Studio
Players.GoldenRStar.PlayerGui.Script:19: attempt to concatenate nil with string  -  Server - Script:19

Exploded is a remote event and I wanted to Explode everyone and send them a message: "You have been exploded by GuyThatPressesButtons." and "You, GuyThatPressesButtons, exploded yourself."

this program tries to loop though every player, explodes them and sends them a fire from the remote event Exploded, then a client script catches it and processes it acordingly. on the fire, it is sent the players name: v.Name and the player that pressed the button, on the client script both values are nil.


Solution

  • I was actually using a server script.
    I needed to run this script in the client side.
    Roblox has 3 types of scripts, server scripts, local scripts and module scripts, since the server scripts are just named scripts, i thought that roblox automatically distinguished between server and client scripts.