First of all, Pannvvan is correct, a local script or client is unable to access the server storage. However, it is able to access Replicated Storage.
At lines (19 - 25):
19 local randomtool = math.random(1, #tools)
20 local chosentool = tools[randomtool]
21 local tool = place.AK47M:Clone()
22 local tool2 = place.AKS74U:Clone()
23
24 tool.Parent = player.Backpack
25 tool2.Parent = player.Backpack
The issue is right in lines 21 and 22. You look for tools by the names AK47M and AKS74U. And give the player these tools at lines 24 and 25. However, you give the players tools that were not selected randomly because you preset the tool values at lines 24 and 25.
It looks like you were on the right track at lines 19 and 20. However, you end up giving the players tools that are not random. (Or do not exist!)
I made the fixes in the code block below:
place = game.ReplicatedStorage
local player = game.Players.LocalPlayer
tools = {}
ls = {}
function boop(Player)
repeat wait() until player.Backpack
for i,v in pairs(place:GetChildren()) do
print(v.Name)
if v:IsA("Tool") then
table.insert(tools, #tools + 1, v)
elseif
v:IsA("LocalScript") then
table.insert(ls, #ls + 1, v.Name)
end
end
if #tools > 0 then
local randomtool = tools[math.random(1, #tools)]
local randomtoolClone = randomtool:Clone()
randomtoolClone.Parent = player.Backpack
end
if #ls > 0 then
local randomls = math.random(1, #ls)
local thels = ls[randomls]
local ls1 = place[thels]:Clone()
local chosenls2 = place[thels]:Clone()
ls1.Parent = player.Backpack
chosenls2.Parent = player.StarterGear
end
end
workspace.Part.ClickDetector.MouseClick:Connect(boop)
I hope this helps!
Things to consider:
Make the place variable a local variable.
Copy this script onto a server script. (Normal.) And send a RemoteEvent signal to the Server whenever you want to give the player items to prevent exploitation.
I would recommend putting a folder inside Replicated Storage just for your tools and making an appropriate name for it! It can increase efficiency if you have many objects in Replicated Storage by making the script loop through fewer instances.
If you do this make sure you change the place variable.
2 comments
I changed the top line
I changed the top line to this place = game.ReplicatedStorage. I have moved the tools and it still does not work.