Im making an inventor system and cant make it to work normally.
This is a function of adding item
function system:AddItem(PlayerInstance,ItemId,HowMuch)
if PlayerInstance == nil or ItemId == nil then return nil end
local Inventory = system:GetInventory(PlayerInstance)
local ItemInfo = GetItemInfo(ItemId)
local Category = Inventory[ItemInfo.Category]
print(Category)
local Item,Index = GetItem(Category,ItemInfo.Id)
if Item == nil then
print("NewSlot")
local Slot = #Category+1
Category[Slot] = ItemInfo
if (Category[Slot].Stack + HowMuch) > ItemInfo.MaxStack then
--print("NewSlot")
local TimesToInsert = math.floor((Category[Slot].Stack + HowMuch) / ItemInfo.MaxStack)
local Rest = (Category[Slot].Stack + HowMuch) - ItemInfo.MaxStack*TimesToInsert
Category[Slot].Stack = ItemInfo.MaxStack
print(TimesToInsert)
print(Rest)
--local LastSlot
for i=1,TimesToInsert do
print("NewSlot")
Slot = #Category+1
Category[Slot] = ItemInfo
Category[Slot].Stack = ItemInfo.MaxStack
end
if Rest ~= 0 then
print("Adding Rest")
Category[Slot].Stack = Rest
end
else
Category[Slot].Stack += HowMuch
end
else
local Slot = Index
if (Category[Slot].Stack + HowMuch) > ItemInfo.MaxStack then
--print("NewSlot")
local TimesToInsert = math.floor((Category[Slot].Stack + HowMuch) / ItemInfo.MaxStack)
local Rest = (Category[Slot].Stack + HowMuch) - ItemInfo.MaxStack*TimesToInsert
Category[Slot].Stack = ItemInfo.MaxStack
print(TimesToInsert)
print(Rest)
--local LastSlot
for i=1,TimesToInsert do
print("NewSlot")
Slot = #Category+1
Category[Slot] = ItemInfo
Category[Slot].Stack = ItemInfo.MaxStack
end
if Rest ~= 0 then
print("Adding Rest")
Category[Slot].Stack = Rest
end
else
Category[Slot].Stack += HowMuch
end
end
print(Inventory)
end
And it works strange. Any help?