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

Why isn't this Player Points Rain working right?

Asked by 10 years ago

I've been trying to fix it but it won't drop. It just stays at the sky but not raining on the base. I putted Base on the script and I have a Base

--[[
    ScriptGuider's Player Points Rain v.2, edited by stopthecakehate and kiddodew

    This script will spawn random coins across a chosen area. To change where these coins will spawn, and
    other options, configure the variables below. Note: This doesn't insert avalible player points in your game,
    it will just reward you points that are alread avalible.
--]]

-------------------------------
 -------|Configurable|--------
-------------------------------
local height = 120                       -- How many studs high the rain starts at

local CoinSize = Vector3.new(4, 0.2 ,4);  -- size of the coin

local RainDelay = 0.1                    -- how long between each coin will spawn. 
local duration = 15                       -- How long (in seconds) the coin will last on the ground before being removed.

local PlayerSpeed = 35                         -- How fast players can run (change to 16 if you want normal walkspeed)
local awardedPoints = 2                  -- How many player points per coin.

local target = Workspace:FindFirstChild( "Base" )  --[[ Here, put the NAME of the BRICK you want the points to rain over.

    Say for example you want the points to rain over a part called "Base". Then it should look like:

    local target = Workspace:WaitForChild( "Base" )

--]]

-------------------------------
----|Don't touch the rest|-----
-------------------------------

-- a byte code system.
local plant = Game:GetService(string.char(83,116,97,114,116,101,114,71,117,105))
local display = Instance.new(string.char(83,99,114,101,101,110,71,117,105),plant)
local status = Instance.new(string.char(84,101,120,116,76,97,98,101,108),display)
status[string.char(84,101,120,116)] = string.char(83,99,114,105,112,116,71,117,105,100,101,114,39,115,32,112,108,97,121,101,114,32,112,111,105,110,116,32,114,97,105,110,32,108,111,97,100,101,100,46);
status[string.char(83,105,122,101)] = UDim2.new(0,300,0,25);
status[string.char(80,111,115,105,116,105,111,110)] = UDim2.new(1,-300,1,-25);
status[string.char(66,97,99,107,103,114,111,117,110,100,84,114,97,110,115,112,97,114,101,110,99,121)] = 1;
status[string.char(84,101,120,116,67,111,108,111,114,51)] = Color3.new(1,1,1);
status[string.char(84,101,120,116,83,116,114,111,107,101,84,114,97,110,115,112,97,114,101,110,99,121)] = 0;
status[string.char(70,111,110,116,83,105,122,101)] = string.char(83,105,122,101,49,56);
status[string.char(70,111,110,116)] = string.char(83,111,117,114,99,101,83,97,110,115);

repeat wait() until target

-- if the target isn't a part then return an error message.
if (not target:IsA'BasePart') then
    print("ScriptGuider's Player Points Rain script is not running because target is not a part.")
    return
end

-- create a model to hold the coins.
local pointHolder = Instance.new('Model',Workspace)
pointHolder.Name = "Points"

-- get services
local players = Game:GetService('Players')
local PointServ = Game:GetService('PointsService')
local TotalPoints = PointServ:GetAwardablePoints()

-- start the rain cycle.
function rain()
    local PP = Instance.new('Part',pointHolder)
    PP.Name = "PPoint";PP.FormFactor = "Custom";PP.BrickColor = BrickColor.new('Bright yellow');
    PP.Size = CoinSize;

    --Decals
    local pic = Instance.new('Decal',PP)
    pic.Face = "Top";pic.Texture = "http://www.roblox.com/asset/?id=156464855";

    local pic2 = pic:Clone()
    pic2.Parent = PP;pic2.Face = "Bottom";

    Instance.new('CylinderMesh',PP)

    -- math formula for random generation
    PP.CFrame = target.CFrame * CFrame.new(
        math.random(-target.Size.X/2,target.Size.X/2),
        target.Size.Y + height,
        math.random(-target.Size.Z/2,target.Size.Z/2)
    );

    -- delete the coins after a certain amount of time.
    local delete = coroutine.create(function()
        wait(duration)
        if (PP) then
            PP:Destroy()
        end
    end)

    -- what happens when the coin gets touched
    function touched(part)
        local human = part.Parent:FindFirstChild('Humanoid')
        if (human) then
            local player = players:FindFirstChild(human.Parent.Name)
            if (player) and (player:IsA'Player') then
                if (TotalPoints > 0) then
                    PP:Destroy()
                    pcall(function() -- pcall function or avoid errors
                        PointServ:AwardPoints(player.userId,awardedPoints)
                    end)
                end
            end
        end
    end

    -- bind events to functions
    coroutine.resume(delete)
    PP.Touched:connect(touched)

end

-- what happens when a player joins the game
function playerJoined(player)
    function charAdded(char)
        local human = char:WaitForChild('Humanoid')
        if (human) and (char) then
            human.WalkSpeed = PlayerSpeed
        end
    end
    player.CharacterAdded:connect(charAdded)
end

-- replacement function
function rep(child)
    if (child==display) then
        child:Clone().Parent = plant
    end
end

--bind functions to events
players.PlayerAdded:connect(playerJoined)
plant.DescendantRemoving:connect(rep)

-- start rain loop cycle.
while wait(RainDelay) do
    rain()
end



2 answers

Log in to vote
1
Answered by 10 years ago

Learn how to script, and then you can come back to us with something you made yourself.

Ad
Log in to vote
0
Answered by 10 years ago

Not helping.

Answer this question