SetElementSyncer: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Created page with '{{Server function}} __NOTOC__ This function can be used to change the syncer (player) of an element. The function can be also used to remove element's syncer making it go ou…')
 
(Add persist parameter)
 
(11 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{Server function}}
{{Server function}}
__NOTOC__  
__NOTOC__
This function can be used to change the syncer ([[player]]) of an element. The function can be also used to remove element's syncer making it go out of sync.
This function can be used to change the syncer ([[player]]) of an element. The syncer is the player who is responsible for informing the server about the state of that element - it's position, orientation and other state information. The function can be also used to remove an element's syncer.
 
Only [[vehicle]] and [[ped]] elements can have a syncer, other element types are not currently automatically synced by MTA.
 
Please note that using this function to change an element's syncer will only last as long as the element is within syncable range of the player unless persist is set to true. This is within 140 units for vehicles and 100 units for peds. As soon as it becomes impossible for your chosen player to sync the element, another player (or no player) will be automatically selected, and your setting will be lost. With vehicles, the last occupant to leave a vehicle will be selected as the syncer and override any setting you may have made.
 
Using this function to remove an element's syncer, means no player will be assigned to syncing the element. That will not be changed until setElementSyncer is called again.
It should also be noted that certain network changes to an element do not require a syncer. Actions such as destroying an element or explicitly setting the element's position (in a server side script), will still be updated on all clients regardless of this setting.


==Syntax==  
==Syntax==  
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setElementSyncer ( element theElement, [ player thePlayer = nil, bool enabled = true ] )
bool setElementSyncer ( element theElement, player thePlayer[, bool persist=false ] )
</syntaxhighlight>  
</syntaxhighlight>  
{{OOP||[[element]]:setSyncer|syncer|getElementSyncer}}


===Required Arguments===  
===Required Arguments===  
*'''theElement:''' The [[element]] whose syncer you wish to change.
*'''theElement:''' The [[element]] whose syncer you wish to change.
*'''thePlayer:''' The [[player]] who should be the new syncer of the element. If set to ''false'', this element will not have a syncer. If set to ''true'', MTA will pick automatically the nearest or most relevant player to that element.


===Optional Arguments===
===Optional Arguments===
{{OptionalArg}}
*'''persist:''' If ''true'', the server will not automatically change the syncer. If set to ''false'', default syncer behavior resumes.
*'''thePlayer:''' The [[player]] who should be the new syncer of the element. Can be ignored as '''[[nil]]''' when removing the sync of an element.
*'''enabled:''' Whether the sync should be enabled or disabled. Disabling element's syncer may lead to desynchronization.


===Returns===
===Returns===
Returns ''true'' if the syncer was changed succesfully, ''false'' otherwise.
Returns ''true'' if the syncer was changed successfully, ''false'' if the element passed was not a ped or vehicle.


==Example==  
==Example==  
<section name="Server" class="server" show="true">
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
-- TODO
addCommandHandler ( "createMyVehicle", function ( player, command )
    local x, y, z = getElementPosition ( player )
    local myVehicle = createVehicle ( 411, x, y, z )
    setElementSyncer ( myVehicle, player )
end
)
</syntaxhighlight>
</syntaxhighlight>
</section>


==See Also==
==See Also==
{{Element_functions}}
{{Element_functions}}

Latest revision as of 23:15, 30 March 2024

This function can be used to change the syncer (player) of an element. The syncer is the player who is responsible for informing the server about the state of that element - it's position, orientation and other state information. The function can be also used to remove an element's syncer.

Only vehicle and ped elements can have a syncer, other element types are not currently automatically synced by MTA.

Please note that using this function to change an element's syncer will only last as long as the element is within syncable range of the player unless persist is set to true. This is within 140 units for vehicles and 100 units for peds. As soon as it becomes impossible for your chosen player to sync the element, another player (or no player) will be automatically selected, and your setting will be lost. With vehicles, the last occupant to leave a vehicle will be selected as the syncer and override any setting you may have made.

Using this function to remove an element's syncer, means no player will be assigned to syncing the element. That will not be changed until setElementSyncer is called again. It should also be noted that certain network changes to an element do not require a syncer. Actions such as destroying an element or explicitly setting the element's position (in a server side script), will still be updated on all clients regardless of this setting.

Syntax

bool setElementSyncer ( element theElement, player thePlayer[, bool persist=false ] )

OOP Syntax Help! I don't understand this!

Method: element:setSyncer(...)
Variable: .syncer
Counterpart: getElementSyncer


Required Arguments

  • theElement: The element whose syncer you wish to change.
  • thePlayer: The player who should be the new syncer of the element. If set to false, this element will not have a syncer. If set to true, MTA will pick automatically the nearest or most relevant player to that element.

Optional Arguments

  • persist: If true, the server will not automatically change the syncer. If set to false, default syncer behavior resumes.

Returns

Returns true if the syncer was changed successfully, false if the element passed was not a ped or vehicle.

Example

addCommandHandler ( "createMyVehicle", function ( player, command )
    local x, y, z = getElementPosition ( player )
    local myVehicle = createVehicle ( 411, x, y, z )
    setElementSyncer ( myVehicle, player )
end
)

See Also