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

Case Opening script goes slow at the end?

Asked by 6 years ago

Hey I've recently found a case script that works and have a few questions about it.

  1. Why does the case opening slow right down at the beginning
  2. Why does it sometimes land in between items and gives you another item

If you can answer my questions or perhaps have a better way to do this, I will greatly appreciate it

Code is below

local RarityI = {  -- lower the rarer
    ["Common"] = 5,
    ["Uncommon"] = 3,
    ["Rare"] = 2,
    ["Legendary"] = 1
}

local CrateInUse = false

local function opencrate(Chance)
    if CrateInUse == false then
        CrateInUse = true
        script.Parent.Unboxing.Inner:ClearAllChildren()
        local Items ={} -- random Items
        local frametimes = math.random(20,50)
        local rewardbutton --win item
        --making the itemlist
        for _, Item in pairs(game.ReplicatedStorage.Items:GetChildren()) do
            local RarNumber = RarityI[Item.Rarity.Value]
            local Times = math.floor(RarNumber+Chance) -- gives bigger chance on better Items
            for num = 1,Times do
                table.insert(Items,Item)
            end
        end     

        math.randomseed(tick()) --makes a seed for that second
        -- generating images
        for num = 1, frametimes+5 do
            local Item = Items[math.random(1,#Items)]
            local newFrame = script.Parent.Unboxing.SampleItem:Clone()
            newFrame.Visible = true
            newFrame.Parent = script.Parent.Unboxing.Inner
            newFrame.Icon.Image = Item.Image.Value
            newFrame.ItemName.Text = Item.Name
            newFrame.Position = UDim2.new(0,100*(num-1),0,0)
            newFrame.AnchorPoint = Vector2.new(0,0)
            if num == frametimes then
                rewardbutton = newFrame
                print (rewardbutton.ItemName.Text)
            end
        end
        for num = 1,(rewardbutton.Position.X.Offset - (255+math.random(-80,80)))/15 do
            for i,v in pairs(script.Parent.Unboxing.Inner:GetChildren())do
                v.Position = UDim2.new(0,v.Position.X.Offset - 15,0,0)
                if v.Position.X.Offset <= -100 then
                    v:Destroy()
                end
            end
            --script.Tick:Play()
            wait(0.01 * 1.05 ^ (num-105)/2)
        end
        print(rewardbutton.ItemName.Text)
    end
end

opencrate(0)
0
On line 28, you don't need to do for num = 1,frameTimes+5 do end, you could simply do for num = 1,frameTimes,5 do end saSlol2436 716 — 6y

Answer this question