AddOn Studio Wiki
Advertisement
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[]

Arguments[]

(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[]

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

Example:1[]

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

Result:1[]

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[]

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

Result:2[]

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[]

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
Advertisement