GetUserdataType: Difference between revisions
Jump to navigation
Jump to search
(Documented the function) |
m (Typo at →Example) |
||
Line 47: | Line 47: | ||
arg:getX(), | arg:getX(), | ||
arg:getY(), | arg:getY(), | ||
arg.getZ and | arg.getZ and arg:getZ() or nil, | ||
arg.getW and | arg.getW and arg:getW() or nil, | ||
-- Extra field to distinguish from normal tables | -- Extra field to distinguish from normal tables | ||
["isVectorWorkaround"] = true | ["isVectorWorkaround"] = true |
Revision as of 15:42, 30 July 2016
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 USERDATA TYPES
- 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.
- userdata: a fallback userdata type return value, when no other type could be found for the object.
- SERVER ONLY USERDATA TYPES
- 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.
- SHARED USERDATA TYPES
Returns
Returns a string containing the specified userdata's type, or false plus an error message if the given value is not userdata.
Example
This example shows a function that can be used to work around the impossibility to transfer vectors as arguments when using triggerClientEvent and triggerServerEvent, 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
See Also
- addDebugHook
- base64Decode
- base64Encode
- debugSleep
- decodeString
- encodeString
- fromJSON
- generateKeyPair
- getColorFromString
- getDevelopmentMode
- getDistanceBetweenPoints2D
- getDistanceBetweenPoints3D
- getEasingValue
- getNetworkStats
- getNetworkUsageData
- getPerformanceStats
- getRealTime
- getTickCount
- getTimerDetails
- getTimers
- getFPSLimit
- getUserdataType
- getVersion
- gettok
- isTransferBoxVisible
- setTransferBoxVisible
- hash
- inspect
- interpolateBetween
- iprint
- isOOPEnabled
- isTimer
- killTimer
- md5
- passwordHash
- passwordVerify
- pregFind
- pregMatch
- pregReplace
- removeDebugHook
- resetTimer
- setDevelopmentMode
- setFPSLimit
- setTimer
- ref
- deref
- sha256
- split
- teaDecode
- teaEncode
- toJSON
- tocolor
- getProcessMemoryStats
- utfChar
- utfCode
- utfLen
- utfSeek
- utfSub
- bitAnd
- bitNot
- bitOr
- bitXor
- bitTest
- bitLRotate
- bitRRotate
- bitLShift
- bitRShift
- bitArShift
- bitExtract
- bitReplace