Template:ExampleCreateObjectOrBuilding
Jump to navigation
Jump to search
This template is used on createBuilding and createObject pages, as a unified example.
Click to collapse [-]
How to automatically perform object/building creationThis example shows you how to easily verify if any object model ID is non-dynamic, so it can be used with the createBuilding function, as long as it's outside within the map boundaries. This script will only work CLIENTSIDE due to createBuilding.
function createObjectOrBuilding(modelID, x, y, z, rx, ry, rz, interior, dimension)
-- Dynamic object models will always have a physical properties group different than -1.
local isNonDynamic = engineGetModelPhysicalPropertiesGroup(modelID) == -1
-- Buildings can't be placed outside dimension 0
local isNormalDimension = dimension == 0
-- Buildings can't be placed outside regular map boundaries
local isInsideMapLimits = x >= -3000 and x <= 3000 and y >= -3000 and y <= 3000
local obj, bld
if isNonDynamic and isNormalDimension and isInsideMapLimits then
bld = createBuilding(modelID, x, y, z, rx, ry, rz, interior)
assert(bld, ("Failed to create building with model ID %d at %f, %f, %f in interior %d"):format(modelID, x, y, z, interior))
else
obj = createObject(modelID, x, y, z, rx, ry, rz, false)
assert(obj, ("Failed to create object with model ID %d at %f, %f, %f"):format(modelID, x, y, z))
setElementInterior(obj, interior)
setElementDimension(obj, dimension)
end
return obj or bld
end
-- This would be your object's model ID
local modelID = 3556
-- This would be your object's position coordinates
local x, y, z = 0, 0, 69
-- This would be your object's rotation coordinates
local rx, ry, rz = 0, 0, 90
-- This would be your object's interior ID
local interior = 0
-- This would be your object's dimension ID
local dimension = 0
local success, element = pcall(createObjectOrBuilding, modelID, x, y, z, rx, ry, rz, interior, dimension)
if not success then
outputDebugString(("Failed to create object or building: %s"):format(tostring(element)), 4, 255, 25, 25)
return
end
-- OPTIONAL: Then you can apply additional properties, like so:
if getElementType(element) == "object" then
setObjectScale(element, 1.69)
setObjectBreakable(element, false)
end
setElementAlpha(element, 255)
setElementCollisionsEnabled(element, true)
setElementFrozen(element, false)