M MY Multiplayer: Wiki

Vectors (vec3)

Working with LuaGLM vectors (vec3 and vec2) in MY Multiplayer (MYMP) for positions, rotations and velocities, vector constructors and differences from MTA.

MY Multiplayer (MYMP) uses native vector values (vec3 and vec2, powered by LuaGLM) to represent spatial coordinates, rotations and velocities in Lua scripts.

Function return values: a single vec3

Spatial functions such as getElementPosition, getElementRotation and getElementVelocity return one vec3 value, not three separate numbers. Read its components through .x, .y and .z.

Function arguments: separate numbers or a vector

Where a function signature asks for x, y, z, it accepts either three numbers or a single vec3 in their place. The same rule applies to x, y parameters and vec2.

Creating vectors

Call the built-in constructors vec3(x, y, z) and vec2(x, y) to create vectors in any client or server script.

Example

local pos = getElementPosition(localPlayer)
print(pos.x, pos.y, pos.z)

setElementPosition(localPlayer, vec3(pos.x, pos.y, pos.z + 2))
setElementPosition(localPlayer, pos.x, pos.y, pos.z + 2)

Coming from MTA

In Multi Theft Auto (MTA), local x, y, z = getElementPosition(element) unpacks three numbers. In MYMP, x receives the whole vec3 vector and y and z become nil.

Some functions do return plain numbers rather than vectors; check each function's return type in the Scripting reference.