This page documents a user-defined function that you can copy and paste into your addon. Replace PREFIX with your addon or lib prefix to avoid conflicts between different versions of these functions.

User defined functions

Returns a list of values in whatever order you specify in order and only those you specify in order. Mostly useful for functions that return multiple values.

ret1, ret2, ... retN = USERAPI GetReturnValues(order, functionCall)
  • Note: the efficiency of this approach is questioned. See the discussion page.

Function Parameters[edit | edit source]

Arguments[edit | edit source]

(order, functionCall)
order 
number or numeric string
e.g. 17 or "17"
functionCall 
a function call that returns a list of values.
e.g GetItemInfo(itemLink)

Returns[edit | edit source]

the number of and order of return values depend on the number specified in order and on the function passed to functionCall

Example:1[edit | edit source]

local sName, iRarity, sType, iStackCount = USERAPI GetReturnValues(1368, GetItemInfo(16846));
message(sName..","..iRarity..","..sType..","..iStackCount);

Result:1[edit | edit source]

USERAPI GetReturnValues will return the first, third, sixth, and eighth return values (in that order) from GetItemInfo(16846)
A message box will pop-up with -
Giantstalker's Helmet,4,Armor,1.

Example:2[edit | edit source]

local reason, name = USERAPI GetReturnValues(61, GetAddOnInfo("Uber Addon"));
if reason then
    _ERRORMESSAGE(name.." didn't load.\nReason code: "..reason..".");
end

Result:2[edit | edit source]

USERAPI GetReturnValues will return the sixth and first return values (in that order) from GetAddOnInfo("Uber Addon")
A error message box will pop-up with -
Uber Addon didn't load.
Reason code: MISSING

Code[edit | edit source]

local output = {}
function USERAPI GetReturnValues(order, ...)
    output = wipe(output)
    order = tostring(order)
    for i=1, strlen(order) do
        local value = select(tonumber(strsub(order, i, i)), ...)
        if value ~= nil then
            table.insert(output, value)
        end
    end
    return unpack(output)
end
Community content is available under CC-BY-SA unless otherwise noted.