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

Can someone please tell me how to fix this? this is a data saving a tower placement code

Asked by 3 years ago

Please check the two following scripts

1

local player = game.Players.LocalPlayer local userInputService = game:GetService("UserInputService") local remote = game:GetService("ReplicatedStorage"):WaitForChild("Tower")

for i, v in pairs(script.Parent:GetChildren())do if v:IsA("Frame") and v:FindFirstChild("Place") then v:FindFirstChild("Place").MouseButton1Down:Connect(function() if player[v.Name].Value ~= "Empty" then if script.Placing.Value == nil then local mouse = player:GetMouse() script.Placing.Value = v

                spawn(function()
                    local t = false
                    local clicked = false
                    while script.Placing.Value ~= nil do
                        wait()
                        if t == false then
                            local tower = game:GetService("ReplicatedStorage").Towers:FindFirstChild(player[v.Name].Value):Clone()
                            if tower then
                                tower.Name = player.Name..player[v.Name].Value
                                tower:Clone().Parent = workspace

                            end
                            t = true
                        end
                        if workspace:FindFirstChild(player.Name..player[v.Name].Value) then
                            local part = mouse.Target
                            mouse.TargetFilter = workspace:FindFirstChild(player.Name..player[v.Name].Value)

                            if part ~= nil and part.Parent.Name == "Placeable" then
                                workspace:FindFirstChild(player.Name..player[v.Name].Value).Indicator.BrickColor = BrickColor.new("Lime green")
                                workspace:FindFirstChild(player.Name..player[v.Name].Value).HumanoidRootPart.BodyPosition.Position = Vector3.new(mouse.Hit.p.X, part.Position.Y, mouse.Hit.p.Z)
                                userInputService.InputBegan:Connect(function(Input, GPE)
                                    if Input.UserInputType == Enum.UserInputType.MouseButton1 and part ~= nil and part.Parent.Name == "Placeable"and clicked == false then
                                        clicked = true
            THIS IS WHERE VALUE VALUE2 AND VALUE 3      in [ ]                  remote:FireServer.  [.   ("Place", v.Name, workspace:FindFirstChild(player.Name..player[v.Name].Value).HumanoidRootPart.BodyPosition.Position).  ]


                                        script.Placing.Value = nil
                                        wait(0.5)
                                        if workspace:FindFirstChild(player.Name..player[v.Name].Value) then
                                            workspace:FindFirstChild(player.Name..player[v.Name].Value):Destroy()
                                        end
                                    end
                                end)
                            elseif part == nil or part.Parent.Name ~= "Placeable" then
                                workspace:FindFirstChild(player.Name..player[v.Name].Value).Indicator.BrickColor = BrickColor.new("Really red")
                                workspace:FindFirstChild(player.Name..player[v.Name].Value).HumanoidRootPart.BodyPosition.Position = mouse.Hit.p
                            end

                        end
                    end
                end)
            elseif script.Placing.Value ~= nil and script.Placing.Value == v then
                script.Placing.Value = nil
                if workspace:FindFirstChild(player.Name..player[v.Name].Value) then
                    workspace:FindFirstChild(player.Name..player[v.Name].Value):Destroy()
                end

            end
        end
    end)
    v.TowerName.Text = player[v.Name].Value

    player[v.Name].Changed:Connect(function()
        v.TowerName.Text = player[v.Name].Value
    end)
end

end


2 Saving and tower placement script

local data = game:GetService("DataStoreService"):GetDataStore("TowerDataStore") local remote = game:GetService("ReplicatedStorage"):WaitForChild("Tower")

remote.OnServerEvent:Connect(function(Player, value, value2, value3) if value == "Place" then local tower = game:GetService("ReplicatedStorage").Tower[Player[value2].Value]:Clone() tower.Indicator:Destroy() tower.HumanoidRootPart.BodyPosition:Destroy() tower.Parent = workspace tower.HumanoidRootPart.BodyPosition.Position = value3 end end)

function save(plr) local saveData = {} for i, v in pairs(plr:GetChildren())do if v:IsA("StringValue") then saveData[v.Name] = v.Value end end data:SetAsync(plr.UserId, saveData) end

game.Players.PlayerAdded:Connect(function(plr) for i = 1, 4 do local x = Instance.new("StringValue", plr) x.Name = "Tower"..tostring(i) x.Value = "Empty" end local getData local success, errorm = pcall(function() getData = data:GetAsync(plr.UserId) end) if success then if getData then for i, v in pairs(getData) do plr:FindFirstChild(i).Value = v end end end end)

game:BindToClose(function() for _, v in pairs(game.Players:GetChildren())do save(v) end end) game.Players.PlayerRemoving:Connect(function(plr) save(plr) end)

0
oh yeah btw my errors are DataStore request was added to queue. If request queue fills, further requests will be dropped. Try sending fewer requests.Key = 1012559870 and Empty is not a valid member of Player "Players.(PlayerName)" dj2098091 3 — 3y

Answer this question