0
votes

I'm scripting a lawn-mowing game in Roblox Studio and I've come across a problem. So every time I cut the grass(trawa) the IntValue goes up by 1. It works fine when it is assigned to a pick-up object and the points go straight to Player's Inventory folder:

local trawa = script.Parent

local function collect(otherPart)
    local player = game.Players:FindFirstChild(otherPart.Parent.Name)
    if player then
        local trawaType = trawa.Name
        local trawaStat = player.Inventory:FindFirstChild(trawaType)
        if trawaStat then
            trawa:Destroy()
            trawaStat.Value = trawaStat.Value + 1
        end
    end
end

trawa.Touched:Connect(collect)

So that script works fine, but that's not the way I want it to work. I want the points to be assigned directly after cutting grass, not after I collect a pick-up it drops. So I changed the script above so that the points are assigned to the tool's inventory and then are copied to player's inventory.

local trawa = script.Parent

local function onTouch(otherPart)
    local tool = otherPart.Parent
    if tool:IsA('Tool') and tool.Kosa.Value == true then
        trawa.Parent = nil      
        
        local trawaType = trawa.Name
        local trawaStat = tool.Inventory:FindFirstChild(trawaType)
        trawaStat.Value = trawaStat.Value + 1
        
        
        print(trawaStat.Value)
        
        
        wait(3)
        trawa.Parent = workspace
        
    end
end

trawa.Touched:Connect(onTouch)

The value does indeed change because it goes up when I print it, but it's not changing in the properties and is not registered by other scripts, because it's not copied to player's inventory. Then this is the script in ServerScriptService that should transfer points from the tool to player:

local starter = game:GetService("StarterPack")
local tool = starter:FindFirstChildWhichIsA('Tool')
local player = game:GetService("Players").LocalPlayer


function points(player)
    player.Inventory.Trawa2.Value = player.Inventory.Trawa2.Value + tool.Inventory.Trawa2.Value
    tool.Inventory.Trawa2.Value = 0

    
end

tool.Inventory.Trawa2.Changed:Connect(points)

Changing IntValue to NumberValue doesn't solve the problem.

1
provide the complete function that is not working and how you call it, not just fractions of itPiglet

1 Answers

0
votes

Use a local script with a RemoteEvent that runs it in server script, local scripts are client side. So they don't save to the server, but if you run it on the server, it saves.

Click this link if you want to know more about RemoteEvents. https://roblox.fandom.com/wiki/Class:RemoteEvent