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

How do I make a leaderstats value change by a ScreenGui input?

Asked by 7 years ago
Edited 7 years ago

I want that when a player types another player's name that is in the server and types the value of what they want to give, then submits it, it will add the amount of what the player typed to the other player's leaderstats value.

local PlrName = script.Parent.Parent.PlrName
local moneytogive = tonumber(script.Parent.Parent.Value.Text) -- "Value" is a TextBox
local ting = 0 -- debounce

 function check()
        if ting == 0 then
            ting = 1
            local target = game.Players:FindFirstChild(PlrName)
                if target ~= nil then
                local stats = target.leaderstats
                    if stats ~= nil then
                    local points = stats.Points
                    points.Value = points.Value + moneytogive
                    wait()
                end
            end
            ting = 0
        end
        script.Parent.Parent.PlrName.Text = "Insert Name Here"
        script.Parent.Parent.Value.Text = "Insert Value Here"
    end

script.Parent.MouseButton1Click:connect(check)

That is what I have done, someone tell me why it won't work and how I can fix it.

0
If Value is the name of a textbox, you get its contents with Value.Text 2eggnog 981 — 7y

2 answers

Log in to vote
0
Answered by 7 years ago
local amountToGive = script.Parent.amount --TextBox where the player puts the amount of cash to give
local playerName = script.Parent.player --TextBox where the player types another players' name
local submit = script.Parent.submit --TextButton used to submit form to donate cash to player
submit.MouseButton1Click:Connect(function() --When clicked
    local playerToGive = game:GetService("Players"):FindFirstChild(playerName.Text) --Player who receives donation
    local playerWhoClicked = game.Players.LocalPlayer --Player who wants to donate
    if playerToGive then --If the player we typed in is actually there
        if playerWhoClicked.leaderstats.Cash.Value >= amountToGive.Text then --If the player who wants to donate has enough cash 
        playerToGive.leaderstats.Cash.Value = playerToGive.leaderstats.Cash.Value + amountToGive.Text --Give cash to player
        playerWhoClicked.leaderstats.Cash.Value = playerWhoClicked.leaderstats.Cash.Value - amountToGive.Text --Subtracts the cash from the player who donated
        end
    end
end)

Just make sure this is in a LocalScript so LocalPlayer can be indexed! Hierarchy here. Please accept my answer if this helped!

0
sorry, not working it said ,attempted to compare number with string Araknala 14 — 7y
0
ok nevermind, i fixed that but now it just wont add to the stat's value Araknala 14 — 7y
Ad
Log in to vote
1
Answered by
LeadRDRK 437 Moderation Voter
7 years ago

Since the Text in the TextBox is a string, you cannot use 'tonumber', or need a 'tostring'. Here's the fixed version

local PlrName = script.Parent.Parent.PlrName
local moneytogive = script.Parent.Parent.Value.Text
local ting = 0 -- debounce

 function check()
        if ting == 0 then
            ting = 1
            local target = game.Players:FindFirstChild(PlrName)
                if target ~= nil then
                local stats = target.leaderstats
                    if stats ~= nil then
                    local points = stats.Points
                    points.Value = points.Value + moneytogive
                    wait()
                end
            end
            ting = 0
        end
        script.Parent.Parent.PlrName.Text = "Insert Name Here"
        script.Parent.Parent.Value.Text = "Insert Value Here"
    end

script.Parent.MouseButton1Click:connect(check)

Answer this question