EngineReplaceModel: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
Line 20: Line 20:
'''Example 1:'''
'''Example 1:'''
<section name="Client" class="client" show="true">
<section name="Client" class="client" show="true">
Client-Side example for replacing vehicle model and texture with custom ones.
Client-Side example for replacing vehicle collisions, 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" )
--We will not load the TXD for now
engineImportTXD ( txd, 587 )
  dff = engineLoadDFF ( "data/euros.dff", 587 ) --Load the DFF for first time with an ID specified (required for collisions)
dff = engineLoadDFF ( "data/euros.dff", 587 )
  engineReplaceModel ( dff, 587 ) --Replace it for first time
engineReplaceModel ( dff, 587 )
  x, y, z = getElementPosition ( getLocalPlayer() ) -- Get the player position
  vehicle = createVehicle ( 587, x, y+3, z ) -- Create the vehicle near player position (the car you want to replace must be near the player for the collisions)
  setTimer ( function () destroyElement ( vehicle ) end, 3000, 1 ) -- Destroy it after 3000 seconds
  setTimer ( function () -- Now we will load the TXD for first time, and the DFF for second time
    txd = engineLoadTXD ( "data/euros.txd" )--Load the TXD
    engineImportTXD ( txd, 587 )
 
    dff = engineLoadDFF ( "data/euros.dff", 587 ) --Load the DFF for second time
    engineReplaceModel ( dff, 587 )
  end, 50, 1 )
end
end



Revision as of 15:11, 13 September 2011

This function replaces the given model in the given model ID with the DFF file passed. This function supports vehicles and objects at the moment.

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.

Syntax

bool engineReplaceModel ( dff theModel, int modelID )

Required Arguments

  • theModel: The model to replace the given model ID with
  • modelID: The model it to replace the model of

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 collisions, model and texture with custom ones.

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

--We will not load the TXD for now
  dff = engineLoadDFF ( "data/euros.dff", 587 ) --Load the DFF for first time with an ID specified (required for collisions)
  engineReplaceModel ( dff, 587 ) --Replace it for first time
  x, y, z = getElementPosition ( getLocalPlayer() ) -- Get the player position
  vehicle = createVehicle ( 587, x, y+3, z ) -- Create the vehicle near player position (the car you want to replace must be near the player for the collisions)
  setTimer ( function () destroyElement ( vehicle ) end, 3000, 1 ) -- Destroy it after 3000 seconds
  setTimer ( function () -- Now we will load the TXD for first time, and the DFF for second time
    txd = engineLoadTXD ( "data/euros.txd" )--Load the TXD
    engineImportTXD ( txd, 587 )

    dff = engineLoadDFF ( "data/euros.dff", 587 ) --Load the DFF for second time
    engineReplaceModel ( dff, 587 )
  end, 50, 1 )
end

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

Server-side example function for triggering the replace.

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

Example 2:

Click to collapse [-]
Client

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

function ReplaceObject ( )

txd = engineLoadTXD( "MyModel.txd" )
col = engineLoadCOL( "MyModel.col" )
dff = engineLoadDFF( "MyModel.dff", 0 ) --modelid is everytime 0, when you replace no vehicle

engineImportTXD( txd, 1234 )
engineReplaceCOL( col, 1234 )
engineReplaceModel( dff, 1234 )-- replace the model at least

end

addEvent ( "replaceObj", true )
addEventHandler ( "replaceObj", getRootElement(), ReplaceObject )
Click to collapse [-]
Server

Server-side example function for triggering the replace.

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

See Also