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)