OnElementDataChange: Difference between revisions
Jump to navigation
Jump to search
m (→Example) |
Fernando187 (talk | contribs) m (formatting for global parameters) |
||
(17 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
{{Server event}} | |||
__NOTOC__ | __NOTOC__ | ||
This event is triggered ''after'' an element's [[element data|data]] entry is changed. Such changes can be made on the client or the server using [[setElementData]]. | |||
This event is triggered | |||
{{Note|These predefined variables are special in this event: | |||
*'''client''': The [[event system#Event client|client]] global variable is set to the client that called [[setElementData]], or '''nil''' if it was called on the server. | |||
*'''sourceResource''': The [[resource]] which changed the element data - '''nil''', if client synced data, '''resource''' element otherwise.}} | |||
==Parameters== | ==Parameters== | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
string | string theKey, var oldValue, var newValue | ||
</syntaxhighlight> | </syntaxhighlight> | ||
*''' | *'''theKey''': The name of the element data entry that has changed. | ||
*''' | *'''oldValue''': The old value of this entry before it changed. See [[element data]] for a list of possible datatypes. | ||
*'''newValue''': the new value of this entry after it changed. This will be equivalent to [[getElementData]](source, theKey). | |||
==Cancelling== | |||
This event cannot be cancelled using [[cancelEvent]]. To reverse the effect, use [[setElementData]] with the old value. See Example. | |||
==Source== | ==Source== | ||
The | The source of this event is the [[element]] whose element data changed. | ||
==Example== | ==Example== | ||
<section name="Server" class="server" show="true"> | <section name="Server" class="server" show="true"> | ||
This example outputs a message to players when any of their element data values is changed. | This example outputs a message to players when any of their element data values is changed. | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
function outputChange( | function outputChange(theKey, oldValue, newValue) | ||
if (getElementType(source) == "player") then -- check if the element is a player | |||
outputChatBox("Your element data '" .. tostring(theKey) .. "' has changed from '" .. tostring(oldValue) .. "' to '" .. tostring(newValue) .. "'", source) -- output the change for the affected player | |||
end | |||
end | |||
addEventHandler("onElementDataChange", root, outputChange) | |||
</syntaxhighlight> | |||
</section> | |||
<section name="Server" class="server" show="true"> | |||
This example checks and possibly reverses an element's data change. | |||
<syntaxhighlight lang="lua"> | |||
function checkChange(theKey, oldValue) | |||
-- The client can only set 'special_thing' on its own player | |||
if (theKey== "special_thing") and (client ~= source) then | |||
outputChatBox("Illegal setting of " .. tostring(theKey) .. "' by '" .. tostring(getPlayerName(client))) | |||
setElementData(source, theKey, oldValue) -- Set back the original value | |||
end | |||
end | end | ||
addEventHandler("onElementDataChange", | addEventHandler("onElementDataChange", root, checkChange) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</section> | </section> | ||
{{See also/Server event|Element events}} | {{See also/Server event|Element events}} |
Latest revision as of 15:11, 1 June 2025
This event is triggered after an element's data entry is changed. Such changes can be made on the client or the server using setElementData.
Parameters
string theKey, var oldValue, var newValue
- theKey: The name of the element data entry that has changed.
- oldValue: The old value of this entry before it changed. See element data for a list of possible datatypes.
- newValue: the new value of this entry after it changed. This will be equivalent to getElementData(source, theKey).
Cancelling
This event cannot be cancelled using cancelEvent. To reverse the effect, use setElementData with the old value. See Example.
Source
The source of this event is the element whose element data changed.
Example
Click to collapse [-]
ServerThis example outputs a message to players when any of their element data values is changed.
function outputChange(theKey, oldValue, newValue) if (getElementType(source) == "player") then -- check if the element is a player outputChatBox("Your element data '" .. tostring(theKey) .. "' has changed from '" .. tostring(oldValue) .. "' to '" .. tostring(newValue) .. "'", source) -- output the change for the affected player end end addEventHandler("onElementDataChange", root, outputChange)
Click to collapse [-]
ServerThis example checks and possibly reverses an element's data change.
function checkChange(theKey, oldValue) -- The client can only set 'special_thing' on its own player if (theKey== "special_thing") and (client ~= source) then outputChatBox("Illegal setting of " .. tostring(theKey) .. "' by '" .. tostring(getPlayerName(client))) setElementData(source, theKey, oldValue) -- Set back the original value end end addEventHandler("onElementDataChange", root, checkChange)
See Also
Element events
- onElementClicked
- onElementColShapeHit
- onElementColShapeLeave
- onElementDataChange
- onElementDestroy
- onElementDimensionChange
- onElementInteriorChange
- onElementModelChange
- onElementStartSync
- onElementStopSync
Event functions
- addEvent
- addEventHandler
- cancelEvent
- cancelLatentEvent
- getEventHandlers
- getLatentEventHandles
- getLatentEventStatus
- removeEventHandler
- triggerEvent
- wasEventCancelled