EngineReplaceModel: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
(15 intermediate revisions by 7 users not shown) | |||
Line 2: | Line 2: | ||
{{Client function}} | {{Client function}} | ||
This function replaces the given model ID with the model contained in a DFF file loaded by [[engineLoadDFF]]. This function supports [[vehicle|vehicles]], [[object|objects]], [[ped|peds]] and [[player|players]] but not CJ clothing and body parts. | |||
This function replaces the given model ID with the model contained in a DFF file loaded by [[engineLoadDFF]]. | |||
{{Deprecated feature|3.0111|1.1.1|This function does not support ped and weapon models.}} | {{Deprecated feature|3.0111|1.1.1|This function does not support ped and weapon models.}} | ||
Line 10: | Line 8: | ||
To replace weapon models you must use their object IDs, not weapon IDs. There is a weapon model list available at [[weapons]]. | To replace weapon models you must use their object IDs, not weapon IDs. There is a weapon model list available at [[weapons]]. | ||
{{Note| | {{Note| | ||
* Default GTA map objects behave inconsistently when using this function on them. If you want to replace models in the original GTA map, use one of the [[EngineReplaceModel notes|methods shown here]].}} | * Please note the loading order that is used in the example as other orders can cause collisions, textures or the DFF not to load due to technical limitations. | ||
* Default GTA map objects behave inconsistently when using this function on them. If you want to replace models in the original GTA map, use one of the [[EngineReplaceModel notes|methods shown here]]. | |||
* A raw data DFF element can only be used once, because the underlying memory for the model is released after replacement. | |||
* If the replacement model is broken and the original model is not loaded/streamed-in at the time of replacement, this function will succeed and you won't see any error message, neither when the model replacement fails once the original model starts to load/stream-in.}} | |||
==Syntax== | ==Syntax== | ||
Line 22: | Line 23: | ||
===Optional Arguments=== | ===Optional Arguments=== | ||
*'''alphaTransparency:''' Set to true if model uses semi-transparent textures | *'''alphaTransparency:''' Set to true if model uses semi-transparent textures, e.g. windows. This will ensure other objects behind the semi-transparent textures are rendered correctly. (Can slightly impact performance, so only set when required) | ||
===Returns=== | ===Returns=== | ||
Line 28: | Line 29: | ||
==Example== | ==Example== | ||
<section name="Client" class="client" show="true"> | <section name="Client" class="client" show="true"> | ||
This example allows you to replace single or many models (with ability to toggle TXD filtering/DFF alpha transparency) - by using [[table]]. Do not forget to add those file paths to [[meta.xml]] | |||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function | function onClientResourceStartReplaceModels() | ||
local modelsToReplace = { | |||
{ -- replace object (all object IDs here: https://dev.prineside.com/en/gtasa_samp_model_id/) | |||
colFile = "object.col", | |||
txdFile = "object.txd", | |||
dffFile = "object.dff", | |||
modelID = 1337, | |||
alphaTransparency = false, | |||
filteringEnabled = true, | |||
}, | |||
{ -- replace vehicle (all vehicle IDs here: https://wiki.multitheftauto.com/wiki/Vehicle_IDs) | |||
colFile = false, -- if file is not present set to false/nil | |||
txdFile = "vehicle.txd", | |||
dffFile = "vehicle.dff", | |||
modelID = 434, | |||
alphaTransparency = false, | |||
filteringEnabled = true, | |||
}, | |||
{ -- replace skin (all ped IDs here: https://wiki.multitheftauto.com/wiki/Character_Skins) | |||
colFile = false, -- if file is not present set to false/nil | |||
txdFile = "ped.txd", | |||
dffFile = "ped.dff", | |||
modelID = 16, | |||
alphaTransparency = false, | |||
filteringEnabled = true, | |||
}, | |||
{ -- replace weapon (all weapon IDs here: https://wiki.multitheftauto.com/wiki/Weapons) | |||
colFile = false, -- if file is not present set to false/nil | |||
txdFile = "m4.txd", | |||
dffFile = "m4.dff", | |||
modelID = 356, | |||
alphaTransparency = false, | |||
filteringEnabled = true, | |||
}, | |||
} | |||
for assetID = 1, #modelsToReplace do | |||
local modelData = modelsToReplace[assetID] | |||
local modelCol = modelData.colFile | |||
local modelTxd = modelData.txdFile | |||
local modelDff = modelData.dffFile | |||
local modelID = modelData.modelID | |||
if (modelCol) then | |||
local colData = engineLoadCOL(modelCol) | |||
if (colData) then | |||
engineReplaceCOL(colData, modelID) | |||
end | |||
end | |||
if (modelTxd) then | |||
local filteringEnabled = modelData.filteringEnabled | |||
local txdData = engineLoadTXD(modelTxd, filteringEnabled) | |||
if (txdData) then | |||
engineImportTXD(txdData, modelID) | |||
end | |||
end | |||
if (modelDff) then | |||
local dffData = engineLoadDFF(modelDff) | |||
if (dffData) then | |||
local alphaTransparency = modelData.alphaTransparency | |||
engineReplaceModel(dffData, modelID, alphaTransparency) | |||
end | |||
end | |||
end | |||
end | end | ||
addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartReplaceModels) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> |
Latest revision as of 21:35, 2 August 2024
This function replaces the given model ID with the model contained in a DFF file loaded by engineLoadDFF. This function supports vehicles, objects, peds and players but not CJ clothing and body parts.
To replace weapon models you must use their object IDs, not weapon IDs. There is a weapon model list available at weapons.
Syntax
bool engineReplaceModel ( dff theModel, int modelID [, bool alphaTransparency = false ] )
OOP Syntax Help! I don't understand this!
- Method: dff:replace(...)
Required Arguments
- theModel: The model to replace the given model ID with
- modelID: The model it to replace the model of
Optional Arguments
- alphaTransparency: Set to true if model uses semi-transparent textures, e.g. windows. This will ensure other objects behind the semi-transparent textures are rendered correctly. (Can slightly impact performance, so only set when required)
Returns
Returns true if the model was successfully replaced, false if it failed for some reason, ie. the DFF or the model ID is not valid.
Example
Click to collapse [-]
ClientThis example allows you to replace single or many models (with ability to toggle TXD filtering/DFF alpha transparency) - by using table. Do not forget to add those file paths to meta.xml
function onClientResourceStartReplaceModels() local modelsToReplace = { { -- replace object (all object IDs here: https://dev.prineside.com/en/gtasa_samp_model_id/) colFile = "object.col", txdFile = "object.txd", dffFile = "object.dff", modelID = 1337, alphaTransparency = false, filteringEnabled = true, }, { -- replace vehicle (all vehicle IDs here: https://wiki.multitheftauto.com/wiki/Vehicle_IDs) colFile = false, -- if file is not present set to false/nil txdFile = "vehicle.txd", dffFile = "vehicle.dff", modelID = 434, alphaTransparency = false, filteringEnabled = true, }, { -- replace skin (all ped IDs here: https://wiki.multitheftauto.com/wiki/Character_Skins) colFile = false, -- if file is not present set to false/nil txdFile = "ped.txd", dffFile = "ped.dff", modelID = 16, alphaTransparency = false, filteringEnabled = true, }, { -- replace weapon (all weapon IDs here: https://wiki.multitheftauto.com/wiki/Weapons) colFile = false, -- if file is not present set to false/nil txdFile = "m4.txd", dffFile = "m4.dff", modelID = 356, alphaTransparency = false, filteringEnabled = true, }, } for assetID = 1, #modelsToReplace do local modelData = modelsToReplace[assetID] local modelCol = modelData.colFile local modelTxd = modelData.txdFile local modelDff = modelData.dffFile local modelID = modelData.modelID if (modelCol) then local colData = engineLoadCOL(modelCol) if (colData) then engineReplaceCOL(colData, modelID) end end if (modelTxd) then local filteringEnabled = modelData.filteringEnabled local txdData = engineLoadTXD(modelTxd, filteringEnabled) if (txdData) then engineImportTXD(txdData, modelID) end end if (modelDff) then local dffData = engineLoadDFF(modelDff) if (dffData) then local alphaTransparency = modelData.alphaTransparency engineReplaceModel(dffData, modelID, alphaTransparency) end end end end addEventHandler("onClientResourceStart", resourceRoot, onClientResourceStartReplaceModels)
See Also
- engineAddImage
- engineApplyShaderToWorldTexture
- engineFreeModel
- engineGetModelFlags
- engineGetModelIDFromName
- engineGetModelLODDistance
- engineGetModelNameFromID
- engineGetModelPhysicalPropertiesGroup
- engineGetModelTextureNames
- engineGetModelTextures
- engineGetModelTXDID
- engineGetModelVisibleTime
- engineGetObjectGroupPhysicalProperty
- engineGetSurfaceProperties
- engineGetVisibleTextureNames
- engineImageGetFilesCount
- engineImageGetFiles
- engineImageGetFile
- engineImageLinkDFF
- engineImageLinkTXD
- engineImportTXD
- engineLoadCOL
- engineLoadDFF
- engineLoadIMG
- engineLoadIFP
- engineLoadTXD
- engineRemoveImage
- engineRemoveShaderFromWorldTexture
- engineReplaceAnimation
- engineReplaceCOL
- engineReplaceModel
- engineRequestModel
- engineResetModelFlags
- engineResetModelLODDistance
- engineResetSurfaceProperties
- engineRestoreAnimation
- engineRestoreCOL
- engineRestoreDFFImage
- engineRestoreModel
- engineRestoreModelPhysicalPropertiesGroup
- engineRestoreObjectGroupPhysicalProperties
- engineRestoreTXDImage
- engineRestreamWorld
- engineSetAsynchronousLoading
- engineSetModelFlag
- engineSetModelFlags
- engineSetModelLODDistance
- engineSetModelPhysicalPropertiesGroup
- engineSetModelVisibleTime
- engineSetObjectGroupPhysicalProperty
- engineSetSurfaceProperties
- engineStreamingFreeUpMemory
- engineStreamingGetUsedMemory