engineRequestModel
Client-side
Server-side
Shared
Pair: engineFreeModel
This function is used to assign the next available model ID to a certain element type.
Note
- Vehicle unique features may be unsupported, see issue 1861 for examples and details.
- Do not rely on the model numbers returned being consistent across multiple clients or multiple runs of resources. There is no guarantee for the order of the numbers or that the same numbers will always correspond to the same element type. Any patterns are coincidental.
Tip
For most cases, you will probably want to add models to your server that are synced with all clients automatically. This is possible with this resource: newmodels.
Important
- Unlike some other functions, the side-effects of this function aren't reverted on resource stop, so you must manually call engineFreeModel in onClientResourceStop.
- parentID should be the same model type to prevent crashes.
Syntax
int|false engineRequestModel ( string elementType, [ int parentID = defaultParentID ] )Required Arguments
- elementType: Element type:
ped,vehicle,object,timed-object,clump,object-damageable.
Optional Arguments
NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use.
- parentID (default: defaultParentID): The ID of the parent model (by default this is: 1337 - objects, 400 - vehicles, 7 - peds, 3425 - clump models, 4715 - timed objects, 994 - damageable objects).
Returns
- int|false: model id
Returns an integer of the model ID that was available to be assigned to the element type, false if no free model ID available or invalid element type.
Code Examples
client
This example creates a ped and then gives you the opportunity to change its model. If the resource stops, then the IDs allocated will be deallocated. Use /cap for creating the ped and /sap to skin the ped.
local peds = {}function createAllocatedPed() local x, y, z = getElementPosition(localPlayer) local id = engineRequestModel("ped") peds[id] = createPed(id, x+0.5, y, z+0.5) outputChatBox("New ped with ID "..id.." created.")endaddCommandHandler("cap", createAllocatedPed, false, false)
function skinAllocatedPeds() local txd, dff; for id,ped in pairs(peds) do if fileExists("skins/" .. id .. ".txd") and fileExists("skins/" .. id .. ".dff") then txd = engineLoadTXD("skins/" .. id .. ".txd") engineImportTXD(txd, id) dff = engineLoadDFF("skins/" .. id .. ".dff") engineReplaceModel(dff, id) outputChatBox("Model ID "..id.." changed correctly.") else outputChatBox("Model ID "..id.." couldn't change. REASON: skins/" .. id .. ".txd or skins/" .. id .. ".dff does not exist.") end endendaddCommandHandler("sap", skinAllocatedPeds, false, false)
function onStop() for id,ped in pairs(peds) do engineFreeModel(id) endendaddEventHandler("onClientResourceStop", resourceRoot, onStop)Changelog
See Also
Engine Functions
- engineAddClothingModelNew
- engineAddClothingTXDNew
- engineAddImageNew
- engineApplyShaderToWorldTexture
- engineFreeModel
- engineFreeTXDNew
- engineGetModelFlagsNew
- engineGetModelIDFromName
- engineGetModelLODDistance
- engineGetModelNameFromID
- engineGetModelPhysicalPropertiesGroup
- engineGetModelTextureNames
- engineGetModelTextures
- engineGetModelTXDIDNew
- engineGetModelVisibleTime
- engineGetObjectGroupPhysicalProperty
- engineGetPoolCapacityNew
- engineGetPoolDefaultCapacityNew
- engineGetPoolUsedCapacityNew
- engineGetSurfaceProperties
- engineGetVisibleTextureNames
- engineImageGetFileNew
- engineImageGetFilesNew
- engineImageGetFilesCountNew
- engineImageLinkDFFNew
- engineImageLinkTXDNew
- engineImportTXD
- engineLoadCOL
- engineLoadDFF
- engineLoadIFP
- engineLoadIMGNew
- engineLoadTXD
- enginePreloadWorldAreaNew
- engineRemoveImageNew
- engineRemoveShaderFromWorldTexture
- engineReplaceAnimation
- engineReplaceCOL
- engineReplaceModel
- engineRequestModel
- engineRequestTXDNew
- engineResetModelFlagsNew
- engineResetModelLODDistance
- engineResetModelTXDIDNew
- engineResetSurfaceProperties
- engineRestoreAnimation
- engineRestoreCOL
- engineRestoreDFFImageNew
- engineRestoreModel
- engineRestoreModelPhysicalPropertiesGroup
- engineRestoreObjectGroupPhysicalProperties
- engineRestoreTXDImageNew
- engineRestreamNew
- engineRestreamModelNew
- engineRestreamWorldUpdated
- engineSetAsynchronousLoading
- engineSetModelFlagNew
- engineSetModelFlagsNew
- engineSetModelLODDistanceUpdated
- engineSetModelPhysicalPropertiesGroupUpdated
- engineSetModelTXDIDNew
- engineSetModelVisibleTime
- engineSetObjectGroupPhysicalProperty
- engineSetPoolCapacityNew
- engineSetSurfaceProperties
- engineStreamingFreeUpMemory
- engineStreamingGetBufferSizeNew
- engineStreamingGetMemorySizeNew
- engineStreamingGetModelLoadStateNew
- engineStreamingGetUsedMemory
- engineStreamingReleaseModelNew
- engineStreamingRequestModelNew
- engineStreamingRestoreBufferSizeNew
- engineStreamingRestoreMemorySizeNew
- engineStreamingSetBufferSizeNew
- engineStreamingSetMemorySizeNew
- engineStreamingSetModelCacheLimitsNew