Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Remote event fires but doesn't receive?

Asked by 4 years ago

For some reason my remote event fires fine with other scripts besides the current one I am using, I tried other scripts and it worked fine I also tried created multiple copy scripts to see if it worked and no luck. Can I get some help debugging this?

The bottom is where the remote event should be received but it doesn't pick up the event being fired, and yes I checked everything over multiple times but it still won't pick up the signal.

Also, the script is in ServerScriptService and I tried putting it in other places but got the same result.

for i,v in pairs(game.Players:GetChildren()) do

local RS = game:GetService("ReplicatedStorage")
local Library = RS:WaitForChild("PetLibrary")
local Eggs = require(Library:WaitForChild("Config"))
local Data = Eggs[v.PlayerGui.Eggs.Items.ItemHandler.ItemName.Text]
local Cost = Data["Cost"]
local Pets = Data["Pets"]
local Event = RS:WaitForChild("EggOpen")

local MaxPetsAllowed = 100 -- just for testing!

local function TweenCoord(Obj,coord)
    local TS = game:GetService("TweenService")
    local TI = TweenInfo.new(.1,Enum.EasingStyle.Linear,Enum.EasingDirection.InOut)
    local properties = {
        CFrame = coord
    }
    local Tween = TS:Create(Obj,TI,properties)
    Tween:Play()
end
local Library = Library[v.PlayerGui.Eggs.Items.ItemHandler.ItemName.Text]
local function ChoosePet()
    local TotalWeight = 0
    for i,v in pairs(Pets) do
        TotalWeight = TotalWeight + v[1]
    end
    local Chance = math.random(1,TotalWeight)
    local Counter = 0
    for i,v in pairs(Pets) do
        Counter = Counter+v[1]
        if Chance <= Counter then
            return i
        end
    end
end

local function UnBox(Player)
    local stats = Player:WaitForChild("leaderstats")
    local coins = stats:WaitForChild("Coins")
    if coins.Value >= Cost then
        local PetInv = Player:WaitForChild("Pets")
        local Counter = 0
        for i,v in pairs(PetInv:GetChildren()) do
            Counter = Counter + 1
        end
        if Counter >= MaxPetsAllowed then
            local GUI = Instance.new("ScreenGui")

            local TextLabel = Instance.new("TextLabel")
            TextLabel.Position = UDim2.new(0,0,.7,0)
            TextLabel.Size = UDim2.new(1,0,.2,0)
            TextLabel.BackgroundTransparency = 1
            TextLabel.TextScaled = true
            TextLabel.TextSize = 1
            TextLabel.Font = Enum.Font.Cartoon
            TextLabel.TextStrokeTransparency = 0
            TextLabel.TextColor3 = Color3.fromRGB(0,55,200)
            TextLabel.Text = "Inventory Full!"
            TextLabel.Parent = GUI

            GUI.Parent = Player.PlayerGui

            wait(3)
            GUI:Destroy()
        else
            coins.Value = coins.Value - Cost
            local PetChosen = ChoosePet()
            local Pet = Library:WaitForChild(PetChosen):Clone()
            Pet.Parent = PetInv

            local coord

            local GUI = Instance.new("ScreenGui")
            local GUIPet = Library:WaitForChild(PetChosen):Clone()
            local PetPos = GUIPet.PrimaryPart.Position
            local Viewport = Instance.new("ViewportFrame")
            local Text = Instance.new("TextLabel")
            Text.TextScaled = true
            Text.TextColor3 = Color3.fromRGB(255,255,255)
            Text.BackgroundTransparency = 1
            Text.Size = UDim2.new(0.4,0,0.1,0)
            Text.Position = UDim2.new(0.3,0,0.65,0)
            Text.Font = Enum.Font.SourceSansSemibold
            Viewport.Size = UDim2.new(1,0,1,0)
            Viewport.BackgroundTransparency = 1
            local Camera = Instance.new("Camera")
            Camera.Parent = workspace
            Viewport.CurrentCamera = Camera
            local PetCamera = game.Workspace.Camera

            local Egg = Player.PlayerGui.Eggs.Items.Items[Player.PlayerGui.Eggs.Items.ItemHandler.ItemName.Text]:Clone()
            local EggPos = Egg.PrimaryPart.Position

            Egg.Parent = Viewport

            Camera.CFrame = CFrame.new(Vector3.new(EggPos.X,EggPos.Y,EggPos.Z+Egg.PrimaryPart.Size.X+7),EggPos)

            coord = Camera.CFrame

            Viewport.Parent = GUI
            Viewport.Position = UDim2.new(0,0,-1,0)

            GUI.Parent = Player.PlayerGui
                Viewport:TweenPosition(UDim2.new(0,0,0,0),"Out","Quad",0.30,false)
                wait(0.2)
            wait(0.5)

            for i = 1,5 do
                TweenCoord(Camera,coord*CFrame.Angles(0,0,.6))
                wait(.1)
                TweenCoord(Camera,coord*CFrame.Angles(0,0,-.6))
                wait(.1)
            end 
                TweenCoord(Camera,coord)
                wait(0.05)
            for i = 1,7 do
                TweenCoord(Camera,coord*CFrame.Angles(0,0,.6))
                wait(.05)
                TweenCoord(Camera,coord*CFrame.Angles(0,0,-.6))
                wait(.05)
            end     
                TweenCoord(Camera,coord)
            wait(0.25)
            Egg:Destroy()
            Viewport.CurrentCamera = PetCamera
            GUIPet.PrimaryPart.Size = Vector3.new(0.5,0.5,0.5)
            Text.Text = GUIPet.Name
            Text.Parent = GUI
            GUIPet.Parent = Viewport

            wait(3)
            Viewport:TweenPosition(UDim2.new(0,0,1,0),"Out","Quad",0.25,false)
            Text:TweenPosition(UDim2.new(0.3,0,1.65,0),"Out","Quad",0.25,false)
            wait(0.25)
            GUI:Destroy()                       
        end
    else
        local GUI = Instance.new("ScreenGui")

        local TextLabel = Instance.new("TextLabel")
        TextLabel.Position = UDim2.new(0,0,.7,0)
        TextLabel.Size = UDim2.new(1,0,.2,0)
        TextLabel.BackgroundTransparency = 1
        TextLabel.TextScaled = true
        TextLabel.TextSize = 1
        TextLabel.Font = Enum.Font.Cartoon
        TextLabel.TextStrokeTransparency = 0
        TextLabel.TextColor3 = Color3.fromRGB(255,0,0)
        TextLabel.Text = "Not Enough Coins!"
        TextLabel.Parent = GUI

        GUI.Parent = Player.PlayerGui

        wait(3)
        GUI:Destroy()
    end
end

Event.OnServerEvent:Connect(function(player)
    print("Received")
    if player:FindFirstChild("GettingPet") then return end
    local debounce = Instance.new("BoolValue")
    debounce.Name = "GettingPet"
    debounce.Parent = player
    UnBox(player)
    debounce:Destroy()
end)
end

1 answer

Log in to vote
0
Answered by 4 years ago

I figured this out, it was because I didn't use :WaitForChild in my variables.

Ad

Answer this question