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

Can somone help me combine 2 scrips so that i can add upgrades to my Freebuild please?[Fixed]

Asked by 9 years ago

OK, I am making a free-build game that has upgrades added to it.

I could use some help!

I am working on the first base right now, I have it in a Model called (BaseOne), and in that folder I have an (ObjectValue) named (Owner). I have 2 scripts first named (PurchaseHandler), second named (CoreScript).

I have 3 models, Buttons, PurchasedObjects, and Purchases, there are models in each one.

Ok, back to the top, In the WorkSpace I have a script that RestrictBuild, and ControlSpawning.

I need to get the ObjectValue in the BaseOne Model to Recognize what player has what base.

RestrictBuildScript:

function waitForChild(instance, name)
    while not instance:FindFirstChild(name) do
        instance.ChildAdded:wait()
    end
end

waitForChild(game, "Workspace")
waitForChild(game.Workspace, "BuildingPlates")
waitForChild(game, "Players")

local activeParts
if(game.Workspace:FindFirstChild("ActiveParts")==nil) then
    activeParts = Instance.new("Model")
    activeParts.Name = "ActiveParts"
    activeParts.Parent = game.Workspace
else
    activeParts = game.Workspace.ActiveParts
end

local buildingPlates = game.Workspace.BuildingPlates

local assigning = false

function addPlayer(player)

    print("addPlayer()", "waiting for previous addPlayer...")

    while(assigning) do 
        assigning.Changed:wait()
    end

    assigning = true

    print("addPlayer()", "waiting for playerNumber...")
    waitForChild(player, "playerNumber")
    print("addPlayer()", "assigning...")

    if(player.playerNumber.Value == 0) then
        -- This is an extra player.  He has playerNumber 0, and spawns in a different spawn point on the side.
        -- He doesn't get a stamper tool.
        print("addPlayer() playerNumber:", player.playerNumber, "stamperTool name:", player.Backpack.StamperTool.Name, "Removing stamperTool.")
        -- hint("All building areas are taken. If you want to build, leave and join again.")
        --waitForChild(player.Backpack, "StamperTool")
        --player.Backpack.StamperTool:Remove()
        --[[
        game.Workspace.Message.Text = player.Name .. " joined, and has playerNumber " .. player.playerNumber.Value .. " and doesn't own a baseplate."
        wait(3)
        game.Workspace.Message.Text = ""
        --]]
    else
        -- He has his own plate.  Get him set up.

        -- Give him a model for all his parts
        if(activeParts:FindFirstChild(player.Name .. "'s parts")==nil) then
            local model = Instance.new("Model")
            model.Name = player.Name .. "'s parts"
            model.Parent = activeParts
        end

        -- Assign plate
        print("assignPlate() playerNumber not zero:", player.playerNumber.Value)
        waitForChild(buildingPlates, "Plate"..tostring(player.playerNumber.Value))

        targetPlate = buildingPlates:FindFirstChild("Plate"..tostring(player.playerNumber.Value))

        -- Create "Player" StringValue inside targetPlate if none exists (for some reason, it gets deleted sometimes when playing online.)
        if(targetPlate:FindFirstChild("Player") == nil) then
            local _player = Instance.new("StringValue")
            _player.Name = "Player"
            _player.Parent = targetPlate
        end
        targetPlate.Player.Value = player.Name

        print("assignPlate()", "complete.", targetPlate.Name, "belongs to", player.Name)
        --[[
        game.Workspace.Message.Text = player.Name .. " joined, and has playerNumber " .. player.playerNumber.Value .. " and owns baseplate " .. targetPlate.Name .. "."
        wait(3)
        game.Workspace.Message.Text = ""
        --]]
    end
    assigning = false
end

function removePlayer(player)
    -- Delete his model
    waitForChild(game.Workspace, "ActiveParts")
    waitForChild(game.Workspace.ActiveParts, player.Name .. "'s parts")
    local model = game.Workspace.ActiveParts:FindFirstChild(player.Name .. "'s parts")
    model:remove()

    -- Free his plate
    local takenPlates = buildingPlates:GetChildren()
    for i = 1, #takenPlates do
        if takenPlates[i].Player.Value == player.Name then
            takenPlates[i].Player.Value = ""
        end
    end

end

-- In case we already have players by the time this script initializes
local players = game.Players:GetChildren()
for i = 1, #players do
    addPlayer(players[i])
end

game.Players.PlayerAdded:connect(function(player)
    addPlayer(player)
end)

game.Players.PlayerRemoving:connect(function(player)
    removePlayer(player)
end)

and, purchaseHandler script:

objects ={}
wait(1)


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

        local object = script.Parent.Purchaces: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
        v. Head.Touched:connect (function(hit)
            local player = game.players:GetPlayerFromCharacter(hit.Parent)
            if player ~= nil then
                if script.parent.owner.value== player then             --- this is a problem i need to change 
                        if hit.parent:FindFirsChild("Humanoid") then   --- it to  the building plates i think
                            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.Objects.Value}.parent = script.Parent.PurchasedObjects
                                            v.Head.CanCollide = false
                                            v.Head.Transparency = 1

                                        end
                                    end
                                end
                            end
                        end 

                end
            end
        end)
    end
end

and finally, CoreScript:

Game.Players.PlayerAdded:connect (function (player)
    local cashmoney = Instance.new ("NumberValue",game.ServerStorage.MoneyStorage)
    cashmoney.Name = player.Name
    local isowner = Instance.new("BoolValue",cashmoney)
    isowner.Name = "OwnsTycoon"

end)

game.Players.PlayerRemoving:connect (function(player)
    local cashmoney = game.ServerStorage.MoneyStorage:FindFirstChild(player.Name)
        if cashmoney ~= nil then
            cashmoney:Save()

        end
    end

I need them all to work together to make one base.

0
oops, dont worry about the ) after the end it is fixed..... LoL snipers007 0 — 9y

Answer this question