I've tried at least ten Freemodel scripts to save tools they just dont seem to work at my place.. Does anyone have a clue how that works?
How do I save tools with Filter Enabled?
1 answer
Firstly, make sure that you place each tool inside a Folder named "Tools", the folder should be placed into ServerStorage
Local Script (should be placed inside every tool)
local Remote = game:GetService("ReplicatedStorage"):WaitForChild("ToolEquip")
local Tool = script.Parent
Tool.Equipped:Connect(function()
Remote:FireServer(Tool.Name)
end)
Server Script (placed in ServerScriptService)
local DSS = game:GetService("DataStoreService")
local Storage = DSS:GetDataStore("Tools")
local Remote = Instance.new("RemoteEvent")
Remote.Name = "ToolEquip"
Remote.Parent = game:GetService("ReplicatedStorage")
game:GetService("Players").PlayerAdded:Connect(function(Player)
local folder = Instance.new("Folder")
folder.Name = "SavedTools"
folder.Parent = Player
for a, b in pairs(game:GetService("ServerStorage"):WaitForChild("Tools"):GetChildren()) do
if b:IsA("Tool") then
local bool = Instance.new("BoolValue")
bool.Name = b.Name
bool.Value = false
bool.Parent = folder
end
end
local success, result = pcall(function()
Storage:GetAsync(Player.UserId)
end)
if not success then
warn(result)
else
local LoadArray = Storage:GetAsync(Player.UserId)
if LoadArray ~= nil then
for c, d in pairs(folder:GetChildren()) do
local find = game:GetService("ServerStorage"):WaitForChild("Tools"):FindFirstChild(d.Name)
if find ~= nil then
d.Value = LoadArray[c]
end
end
end
end
end)
Remote.OnServerEvent:Connect(function(Player, Tool)
Player:WaitForChild("SavedTools"):WaitForChild(Tool).Value = true
end)
game:GetService("Players").PlayerRemoving:Connect(function(Player)
local SaveArray = {}
for e, f in pairs(Player:WaitForChild("SavedTools"):GetChildren()) do
local num = #SaveArray + 1
table.insert(SaveArray, num, f.Value)
end
Storage:SetAsync(Player.UserId, SaveArray)
end)
You need to use a Remote Event to communicate between the Server and the Client, for this example, if the player equips a tool, then they will have their value sent to the server to be saved when they leave.
Each tool is given a value when the player enters the game, and then saved back into a table when they leave the game.
We use a pcall to make sure no errors are thrown by the script, preventing its further functionality (since API Services should be disabled, you cannot test this in studio).
This discussion is preserved as it was. New answers, comments, and votes are closed.

1 comment
Don't use free models, learn to script yourself instead