Skip to content

getUserdataType

Shared

Manual Review Required

Please finish this page using the corresponding Old Wiki article. Go to Contribution guidelines for more information.


This function gets the type of a userdata value, which is not always a element in the element tree.

Syntax

string getUserdataType ( ​userdata value )
Required arguments
  • value: A userdata value to get the type of. Userdata types can be: Shared resource-data : a resource pointer . xml-node : a XML node . lua-timer : a timer . vector2 : a 2D vector, used in the Vector2 class. vector3 : a 3D vector, used in the Vector3 class. vector4 : a 4D vector, used in the Vector4 class. matrix : a matrix, used in the Matrix class. request : a userdata type returned via fetchRemote (since r21436 ) userdata : a fallback userdata type return value, when no other type could be found for the object. Server only account : a player account . db-query : a database query handle . acl : an ACL entry . acl-group : an ACL group . ban : a player ban . text-item : a text display item . text-display : a text display item .

Returns

Returns a string containing the specified userdata's type, or false plus an error message if the given value is not userdata.

  • string: value

Code Examples

shared

This example shows a function that can be used to work around the impossibility to transfer vectors as arguments when usingtriggerClientEventandtriggerServerEvent, by converting them into a table which can be used safely.

function safeArgsForTransfer(...)
local args = { ... }
for index, arg in ipairs(args) do
if type(arg) == "userdata" and getUserdataType(arg):match("vector") then
-- Transform every kind of vector userdata to a table which can be transfered safely
args[index] =
{
arg:getX(),
arg:getY(),
arg.getZ and arg:getZ() or nil,
arg.getW and arg:getW() or nil,
-- Extra field to distinguish from normal tables
["isVectorWorkaround"] = true
}
end
end
return unpack(args)
end