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

0

Give the exact error. Lua errors never only say "attempt to index", they say what you attempted to index as well.

0

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