Hi,
I wanted to use SimonS' script for scrolling through your items with the mousewheel (changing the dragged item while hanging on the cursor) in a new project. But I'm getting an error : attempt to call a nil value (field 'getn')
the line in question is: local len = table.getn(items)
It worked in an other project with a previous version of visionaire. So my guess is, that some command changed with the change of the Lua version. Could someone tell me what is wrong?
-- author: SimonS
-- Inventory scrolling by mouse wheel
registerEventHandler("mouseEvent", "mouseEvtHandler")
function mouseEvtHandler(evt)
if evt == eEvtMouseWheelUp then
wheelUp()
end
if evt == eEvtMouseWheelDown then
wheelDown()
end
end
function wheelUp ()
local items = game:getLink(VGameCurrentCharacter):getLinks(VCharacterItems)
local len = table.getn (items)
local usedItem = game:getLink(VGameUsedItem)
if len == 0 then
game:setValue(VGameUsedItem,getObject("(-1,-1)"))
else
if usedItem:isEmpty() then
game:setValue(VGameUsedItem,items[1])
else
for index = 0, len-1, 1 do
if items[len-index]:getName() == usedItem:getName() then
if len-index == len then
game:setValue(VGameUsedItem,getObject("(-1,-1)"))
else
game:setValue(VGameUsedItem,items[len-index+1])
end
break
end
end
end
end
game:setValue(VGameUsedItemPicked,true)
end
function wheelDown ()
local character = getObject("Game.GameCurrentCharacter")
local items = character:getLinks(VCharacterItems)
local len = table.getn (items)
local usedItem = game:getLink(VGameUsedItem)
if len == 0 then
game:setValue(VGameUsedItem,empty)
else
if usedItem:isEmpty() then
game:setValue(VGameUsedItem,items[len])
else
for i = 1, len, 1 do
if items:getName() == usedItem:getName() then
if i == 1 then
game:setValue(VGameUsedItem,getObject("(-1,-1)"))
else
game:setValue(VGameUsedItem,items[i-1])
end
break
end
end
end
end
game:setValue(VGameUsedItemPicked,true)
end
Edit: solved
local len = table.getn(items) needs to be replaced by local len = #items
Thank you SimonS!