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

can someone help me adjust price of buying upgrades please? (cash and Ko's)?

Asked by 9 years ago

What I am wanting to do is use cash and ko's to buy weapons and upgrades.

I have it now were all you need is cash

ok the last script didn't work out very well this is the script that I am using I am not sure if I need to save them some were like I did the cash or what.

PurchaseHandler:

objects = {}
teamcolor = BrickColor.new(script.Parent.Name)
config = script.Parent.Parent.Parent.Configuration
wait(1)

script.Parent.Essentials.Spawn.TeamColor = teamcolor
script.Parent.Essentials.Spawn.BrickColor = teamcolor

script.Parent.Essentials.Collector.Touched:connect(function(hit)
    if hit:FindFirstChild("Cash") then
        script.Parent.Cash.Value = script.Parent.Cash.Value + hit.Cash.Value
        Instance.new("Sparkles",hit).Color=Color3.new(math.random(1,255)/255,math.random(1,255)/255,math.random(1,255)/255)
        game.Debris:AddItem(hit,0.1)
    end
end)


script.Parent.Essentials.Giver.Touched:connect(function(hit)
    local player = game.Players:GetPlayerFromCharacter(hit.Parent)
    if player ~= nil then
        if script.Parent.Owner.Value == player then
            if hit.Parent:FindFirstChild("Humanoid") then
                if hit.Parent.Humanoid.Health > 0 then
                    local cashmoney = game.ServerStorage.MoneyStorage:FindFirstChild(player.Name)
                    if cashmoney ~= nil then 
                        cashmoney.Value = cashmoney.Value + script.Parent.Cash.Value
                        script.Parent.Cash.Value = 0
                    end
                end
            end
        end
    end
end)

script.Parent:WaitForChild("Buttons")
for i,v in pairs(script.Parent.Buttons:GetChildren()) do
    if v:FindFirstChild("Head") then

        local object = script.Parent.Purchases:FindFirstChild(v.Object.Value)
        if object ~= nil then
            objects[object.Name] = object:Clone()
            object:Destroy()
        else
            print("Button: "..v.Name.." is missing its object and has been removed.")
            v.Head.CanCollide = false
            v.Head.Transparency = 1
        end

        if v:FindFirstChild("Dependency") then
            v.Head.CanCollide = false
            v.Head.Transparency = 1
            coroutine.resume(coroutine.create(function()
                if script.Parent.PurchasedObjects:WaitForChild(v.Dependency.Value) then
                    if config.ButtonFadeInDependency.Value == true then
                        for i=1,20 do
                            wait(config.ButtonFadeInTime.Value/20)
                            v.Head.Transparency = v.Head.Transparency - 0.05
                        end
                    end
                    v.Head.CanCollide = true
                    v.Head.Transparency = 0
                end
            end))
        end

        v.Head.Touched:connect(function(hit)
            local player = game.Players:GetPlayerFromCharacter(hit.Parent)
            if v.Head.CanCollide == true then
                if player ~= nil then
                    if script.Parent.Owner.Value == player then
                        if hit.Parent:FindFirstChild("Humanoid") then
                            if hit.Parent.Humanoid.Health > 0 then
                                local cashmoney = game.ServerStorage.MoneyStorage:FindFirstChild(player.Name)
                                if cashmoney ~= nil then
                                    if cashmoney.Value >= v.Price.Value then
                                        cashmoney.Value = cashmoney.Value - v.Price.Value
                                        objects[v.Object.Value].Parent = script.Parent.PurchasedObjects
                                        if config.ButtonExplodeOnBuy.Value == true then


                                            local explosion = Instance.new("Explosion",workspace)
                                            explosion.Position = v.Head.Position
                                            explosion.DestroyJointRadiusPercent = 0
                                            explosion.BlastPressure = 0
                                        end
                                        if config.ButtonFadeOutOnBuy.Value == true then
                                            v.Head.CanCollide = false
                                            coroutine.resume(coroutine.create(function()
                                                for i=1,20 do
                                                    wait(config.ButtonFadeOutTime.Value/20)
                                                    v.Head.Transparency = v.Head.Transparency + 0.05
                                                end
                                            end))
                                        else
                                            v.Head.CanCollide = false
                                            v.Head.Transparency = 1
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end)

    end
end

Here is my leaderboard script:

stands = {}
CTF_mode = false


function onHumanoidDied(humanoid, player)
    local stats = player:findFirstChild("leaderstats")
    if stats ~= nil then
        local deaths = stats:findFirstChild("Wipeouts")
        deaths.Value = deaths.Value + 1

        -- do short dance to try and find the killer

        local killer = getKillerOfHumanoidIfStillInGame(humanoid)

        handleKillCount(humanoid, player)
    end
end

function onPlayerRespawn(property, player)
    -- need to connect to new humanoid

    if property == "Character" and player.Character ~= nil then
        local humanoid = player.Character.Humanoid
            local p = player
            local h = humanoid
            humanoid.Died:connect(function() onHumanoidDied(h, p) end )
    end
end

function getKillerOfHumanoidIfStillInGame(humanoid)
    -- returns the player object that killed this humanoid
    -- returns nil if the killer is no longer in the game

    -- check for kill tag on humanoid - may be more than one - todo: deal with this
    local tag = humanoid:findFirstChild("creator")

    -- find player with name on tag
    if tag ~= nil then

        local killer = tag.Value
        if killer.Parent ~= nil then -- killer still in game
            return killer
        end
    end

    return nil
end

function handleKillCount(humanoid, player)
    local killer = getKillerOfHumanoidIfStillInGame(humanoid)
    if killer ~= nil then
        local stats = killer:findFirstChild("leaderstats")
        if stats ~= nil then
            local kills = stats:findFirstChild("KOs")
            if killer ~= player then
                kills.Value = kills.Value + 1

            else
                kills.Value = kills.Value - 1

            end
        end
    end
end


-----------------------------------------------



function findAllFlagStands(root)
    local c = root:children()
    for i=1,#c do
        if (c[i].className == "Model" or c[i].className == "Part") then
            findAllFlagStands(c[i])
        end
        if (c[i].className == "FlagStand") then
            table.insert(stands, c[i])
        end
    end
end

function hookUpListeners()
    for i=1,#stands do
        stands[i].FlagCaptured:connect(onCaptureScored)
    end
end

function onPlayerEntered(newPlayer)

    if CTF_mode == true then

        local stats = Instance.new("IntValue")
        stats.Name = "leaderstats"

        local captures = Instance.new("IntValue")
        captures.Name = "Captures"
        captures.Value = 0


        captures.Parent = stats


        -- Is the problem even what I think it is (player arrived before character)?
        while true do
            if newPlayer.Character ~= nil then break end
            wait(5)
        end

        stats.Parent = newPlayer

    else

        local stats = Instance.new("IntValue")
        stats.Name = "leaderstats"

        local kills = Instance.new("IntValue")
        kills.Name = "KOs"
        kills.Value = 0

        local deaths = Instance.new("IntValue")
        deaths.Name = "Wipeouts"
        deaths.Value = 0

        local cash = Instance.new("IntValue")
        cash.Name = "Cash"
        cash.Value = 0

        local cashmoney = game.ServerStorage.MoneyStorage:FindFirstChild(newPlayer.Name)
        if cashmoney ~= nil then
            cashmoney.Changed:connect(function()
                cash.Value = cashmoney.Value
            end)
        end

        kills.Parent = stats
        deaths.Parent = stats
        cash.Parent = stats


        -- Is the problem even what I think it is (player arrived before character)?
        while true do
            if newPlayer.Character ~= nil then break end
            wait(5)
        end

        local humanoid = newPlayer.Character.Humanoid

        humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end )

        -- start to listen for new humanoid
        newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end )


        stats.Parent = newPlayer

    end

end


function onCaptureScored(player)

        local ls = player:findFirstChild("leaderstats")
        if ls == nil then return end
        local caps = ls:findFirstChild("Captures")
        if caps == nil then return end
        caps.Value = caps.Value + 1

end


findAllFlagStands(game.Workspace)
hookUpListeners()
if (#stands > 0) then CTF_mode = true end
game.Players.ChildAdded:connect(onPlayerEntered)

Answer this question