Template:ExampleCreateObjectOrBuilding: Difference between revisions
Jump to navigation
Jump to search
Fernando187 (talk | contribs) (Created page with "<noinclude>This template is used on createBuilding and createObject pages, as a unified example. <hr> </noinclude><section name="How to automatically perform object/building creation" class="client" show="true"> This 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: <syntaxhighlight lang="lua"> function createObjectOrBuilding(modelID...") |
Fernando187 (talk | contribs) No edit summary |
||
Line 12: | Line 12: | ||
local isInsideMapLimits = x >= -3000 and x <= 3000 and y >= -3000 and y <= 3000 | local isInsideMapLimits = x >= -3000 and x <= 3000 and y >= -3000 and y <= 3000 | ||
local obj, bld | |||
if isNonDynamic and isNormalDimension and isInsideMapLimits then | 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 | 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 | end | ||
return obj or bld | |||
end | end | ||
Line 32: | Line 36: | ||
local dimension = 0 | local dimension = 0 | ||
local element = createObjectOrBuilding | 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: | -- OPTIONAL: Then you can apply additional properties, like so: | ||
if getElementType(element) == "object" then | if getElementType(element) == "object" then | ||
setObjectScale(element, 1.69) | setObjectScale(element, 1.69) | ||
setObjectBreakable( | setObjectBreakable(element, false) | ||
end | end | ||
setElementAlpha(element, 255) | setElementAlpha(element, 255) |
Revision as of 10:32, 14 October 2024
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:
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)