EngineReplaceModel: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Added a more typical code example)
m (→‎Example: Indentation)
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
__NOTOC__  
__NOTOC__  
{{Client function}}
{{Client function}}
{{Needs Checking|I couldn't reproduce the vehicle collision replace bug in recent MTA versions while using the recommended loading order. Can someone double check this in order to clean up the article? --[[User:AlexTMjugador|AlexTMjugador]] ([[User talk:AlexTMjugador|talk]]) 10:55, 6 July 2016 (UTC)}}
{{Note|Please note the loading order that is used in the examples as other orders can cause collisions, textures or the DFF not to load due to technical limitations}}
{{Note box|Please note the loading order that is used in the examples as other orders can cause collisions, textures or the DFF not to load due to technical limitations}}


This function replaces the given model ID with the model contained in a DFF file loaded by [[engineLoadDFF]]. {{New items|3.0111|1.1.1|This function supports [[vehicle|vehicles]], [[object|objects]], [[ped|peds]] and [[player|players]].}}
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.


{{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 9:
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|
* Due to a bug, when replacing models with built in collisions (i.e. vehicles), the collision may not get replaced correctly. The current work around is to load the dff again and do another replace after a short delay.
* 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]].}}
* 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]].}}


Line 23: Line 21:


===Optional Arguments===  
===Optional Arguments===  
*'''alphaTransparency:''' Set to true to enable texture transparency within the model
*'''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 33: Line 31:
Client-side example for replacing vehicle model and texture with custom ones.
Client-side example for replacing vehicle model and texture with custom ones.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function ReplaceVehicle ( )
function ReplaceVehicle()
outputChatBox ( "> replacing the euros vehicle" )
    outputChatBox ("> replacing the euros vehicle")


txd = engineLoadTXD ( "data/euros.txd" )
    txd = engineLoadTXD ("data/euros.txd")
engineImportTXD ( txd, 587 )
    engineImportTXD (txd, 587)
dff = engineLoadDFF ( "data/euros.dff" )
    dff = engineLoadDFF ("data/euros.dff")
engineReplaceModel ( dff, 587 )
    engineReplaceModel (dff, 587)
end
end


addEvent ( "replaceVeh", true )
addEvent ("replaceVeh", true)
addEventHandler ( "replaceVeh", root, ReplaceVehicle )
addEventHandler ("replaceVeh", root, ReplaceVehicle)
</syntaxhighlight>
</syntaxhighlight>
</section>
</section>
Line 49: Line 47:
Server-side example function for triggering the replace.
Server-side example function for triggering the replace.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function ReplaceCommand ( )
function ReplaceCommand()
triggerClientEvent( "replaceVeh", root, replaceVeh )
    triggerClientEvent ("replaceVeh", root, replaceVeh)
end
end
addCommandHandler( "replace", ReplaceCommand )
addCommandHandler ("replace", ReplaceCommand)
</syntaxhighlight>
</syntaxhighlight>
</section>
</section>
Line 60: Line 58:
Client-side example for replacing weapons with custom mods.
Client-side example for replacing weapons with custom mods.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function replaceWeapon()  
function ReplaceWeapon()  
txd = engineLoadTXD ( "m4.txd" )
    txd = engineLoadTXD ("m4.txd")
engineImportTXD ( txd, 356)
    engineImportTXD (txd, 356)
dff = engineLoadDFF ( "m4.dff", 356) -- use weapon model ID, not weapon ID (model ID from https://wiki.multitheftauto.com/wiki/Weapons)
    dff = engineLoadDFF ("m4.dff", 356) -- use weapon model ID, not weapon ID (model ID from https://wiki.multitheftauto.com/wiki/Weapons)
engineReplaceModel ( dff, 356) -- Likewise, model ID, for M4 as example it's 356
    engineReplaceModel (dff, 356) -- Likewise, model ID, for M4 as example it's 356
 
end
end
addEventHandler ( "onClientResourceStart", getResourceRootElement(getThisResource()), replaceWeapon)
addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), replaceWeapon)
</syntaxhighlight>
</syntaxhighlight>
</section>
</section>
Line 75: Line 72:
Client-Side example for replacing object collision, texture and model with custom ones.
Client-Side example for replacing object collision, texture and model with custom ones.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function ReplaceObject ( )
function ReplaceObject()
 
    col = engineLoadCOL ("MyModel.col")
col = engineLoadCOL( "MyModel.col" )
    txd = engineLoadTXD ("MyModel.txd")
txd = engineLoadTXD( "MyModel.txd" )
    dff = engineLoadDFF ("MyModel.dff")
dff = engineLoadDFF( "MyModel.dff", 0 )
 
engineReplaceCOL( col, 1234 )
engineImportTXD( txd, 1234 )
engineReplaceModel( dff, 1234 )-- replace the model at least


    engineReplaceCOL (col, 1234)
    engineImportTXD (txd, 1234)
    engineReplaceModel (dff, 1234) -- replace the model at least
end
end
 
addEvent ("replaceObj", true)
addEvent ( "replaceObj", true )
addEventHandler ("replaceObj", root, ReplaceObject)
addEventHandler ( "replaceObj", root, ReplaceObject )
</syntaxhighlight>
</syntaxhighlight>
</section>
</section>
Line 94: Line 88:
Server-side example function for triggering the replace.
Server-side example function for triggering the replace.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function ReplaceCommand ( )
function ReplaceCommand()
triggerClientEvent( "replaceObj", root, replaceObj )
    triggerClientEvent ("replaceObj", root, replaceObj)
end
end
addCommandHandler( "replace", ReplaceCommand )
addCommandHandler ("replace", ReplaceCommand)
</syntaxhighlight>
</syntaxhighlight>
</section>
</section>

Revision as of 20:51, 19 September 2021

[[{{{image}}}|link=|]] Note: Please note the loading order that is used in the examples as other orders can cause collisions, textures or the DFF not to load due to technical limitations

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.

[[{{{image}}}|link=|]] 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 methods shown here.

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

Example 1:

Click to collapse [-]
Client

Client-side example for replacing vehicle model and texture with custom ones.

function ReplaceVehicle()
    outputChatBox ("> replacing the euros vehicle")

    txd = engineLoadTXD ("data/euros.txd")
    engineImportTXD (txd, 587)
    dff = engineLoadDFF ("data/euros.dff")
    engineReplaceModel (dff, 587)
end

addEvent ("replaceVeh", true)
addEventHandler ("replaceVeh", root, ReplaceVehicle)
Click to collapse [-]
Server

Server-side example function for triggering the replace.

function ReplaceCommand()
    triggerClientEvent ("replaceVeh", root, replaceVeh)
end
addCommandHandler ("replace", ReplaceCommand)

Example 2:

Click to collapse [-]
Client

Client-side example for replacing weapons with custom mods.

function ReplaceWeapon() 
    txd = engineLoadTXD ("m4.txd")
    engineImportTXD (txd, 356)
    dff = engineLoadDFF ("m4.dff", 356) -- use weapon model ID, not weapon ID (model ID from https://wiki.multitheftauto.com/wiki/Weapons)
    engineReplaceModel (dff, 356) -- Likewise, model ID, for M4 as example it's 356
end
addEventHandler ("onClientResourceStart", getResourceRootElement(getThisResource()), replaceWeapon)

Example 3:

Click to collapse [-]
Client

Client-Side example for replacing object collision, texture and model with custom ones.

function ReplaceObject()
    col = engineLoadCOL ("MyModel.col")
    txd = engineLoadTXD ("MyModel.txd")
    dff = engineLoadDFF ("MyModel.dff")

    engineReplaceCOL (col, 1234)
    engineImportTXD (txd, 1234)
    engineReplaceModel (dff, 1234) -- replace the model at least
end
addEvent ("replaceObj", true)
addEventHandler ("replaceObj", root, ReplaceObject)
Click to collapse [-]
Server

Server-side example function for triggering the replace.

function ReplaceCommand()
    triggerClientEvent ("replaceObj", root, replaceObj)
end
addCommandHandler ("replace", ReplaceCommand)

See Also