Yep its this script for the THIRD time, and i think this time i will comment and not create a fourth post for this script. This time, it says "attempt to inde item" even tough i defined it. so i had the same problem on the last post, but that fix couldnt fix this one.
Problem is on Line 44
local m = {}
--get item
local items = require(game.ReplicatedStorage.Items)
---variables
local player = game.Players.LocalPlayer
local gui = player("WaitForChild","PlayerGui")
local ui = gui("WaitForChild","Ui")
local elements = gui("WaitForChild","Elements")
--function
function m.getRarity(type)
for a,b in ipairs(items.Rarities) do
if b.name==type then
return b
end
end
end
function m.createItem()
local object = elements("WaitForChild","item"):Clone()
local scaledSize = math.floor((object.Size.X.Scale*m.settings.cUI.AbsoluteSize.Y)+0.5)/m.settings.cUI.AbsoluteSize.X
--Get / Set Types
local types = {}
for a,b in ipairs(m.settings.case.items) do
for d,c in ipairs(items.Items) do
if c.name==b then
local r = m:getRarity(c.rarityType)
if r then
for t=1,r.rarity*10 do
table.insert(types,c)
if not r
then --r = nil
print "None"
end
end
end
end
end
end
--select item
local item = types[m.settings.prng:NextInteger(1,#types)]
local itemType = m:getRarity(item.rarityType)
--set other properties
object.BorderColor3 = itemType.Color
object.rarityMark.BackgroundColor3 = itemType.Color
object.Name = item.name
object.itemImage = "rbxassetid//"..item.imageID
--set position
object.Position = (m.settings.lastObject and
m.settings.lastObject.Position+UDim2.new(scaledSize,0,0,0)+m.settings.offset) or UDim2.new(-scaledSize/2,0,0.5,0)
--set parent
object.parent = m.settings.cUI
--set few variables
m.settings.lastObject = object
table.insert(m.settings.objects, object)
end
function m:check()
for a,b in ipairs(m.settings.objects)do
local scaledSize = b.AbsoluteSize
if b.AbsolutePosition.X <= -scaledSize.x+m.settings.offset.X.Offset then
table.remove(m.settings.objects,a)
b:Destroy()
m.createItem()
m.check()
break
end
end
end
function m:update()
m.settings.speed = math.max(m.settings.speed-(0.03/m.settings.spinLength),0)
m.settings.newAccel = m.settings.accel*math.sin((math.pi/2)*m.settings.speed)
for a,b in ipairs(m.settings.objects)do
b.Position = b.Position-UDim2.new(m.settings.newAccel/m.settings.cUI.AbsoluteSize.X,0,0,0)
end
if m.settings.newAccel==0 then m:result() end
end
function m:result()
--disconnect
m.render:disconnect()
--get selected item
local item
for a,b in ipairs(m.settings.objects) do
local left,right = b.AbsolutePosition.X/m.settings.cUI.AbsoluteSize.X,(b.AbsolutePosition.X+b.AbsoluteSize.X)/m.settings.cUI.AbsoluteSize.X
if left <=0.5 and right >=0.5 then item=b break end
end
if item then
m.newResult = item
else
local closestItems = {}
for a,b in ipairs(m.settings.objects) do
table.insert(closestItems,{
mag=(Vector2.new(b.AbsolutePosition.X/m.settings.cUI.AbsoluteSize.X,0)-Vector2.new(0.5,0)).magnitude;
item=b;
})
end
table.sort(closestItems,function(a,b) return a.mag<b.mag end)
m.newResult = closestItems[1].item
end
end
function m:create(caseType)
--Setings
m.settings = {
case=items.Cases[caseType];
cUI=elements("WaitForChild","caseUI"):Clone();
objects={};
prng=Random.new();
offset=UDim2.new(0,25,0,0);
accel=30;
speed=1;
spinLength=5;
}
m.newResult=nil
--presetup
m.settings.cUI.Parent = ui
for t=1,15 do
m:createItem()
end
--services
m.render = game("GetService","RunService").RenderStepped:connect(function()
m:update()
m:check()
end)
--wait for result
repeat wait() until m.newResult
--getrid of Ui
spawn(function()
wait(1)
m.settings.cUI.TweenPosition(UDim2.new(0,0,1.15,0),"Out","Sine",1,true,function() m.settings.cUI:Destroy() end)
end)
--return result
return m.newResult
end
return m

2 comments
Give the exact error. Lua errors never only say "attempt to index", they say what you attempted to index as well.
Just because you doesn't define it doesn't necessarily mean it won't point to nil. You can define nil and attempt to index it, which will lead to a nasty error. Check if the index you are looking for is in the table first by using a conditional statement, if (item) then, then continue with your code.e