ClientScriptableObjectClass

A client script class that doesn't represent any particular game object.

Can receive events sent with sm.event.sendToScriptableObject.

Fields:

TypeNameDescription
ScriptableObjectscriptableObjectThe ScriptableObject belonging to this class instance.
anydataData from the "data" json element.
anyparamsParameter sent to sm.scriptableObject.createScriptableObject.

Common callbacks:


server_onCreate(self) serverEventCallback

Called when the scripted object is created. This occurs when a new object is built, spawned, or loaded from the save file.

Parameters:

TypeNameDescription
tableselfThe class instance.

client_onCreate(self) clientEventCallback

Called when the scripted object is created. This occurs when a new object is built, spawned, or loaded from the save file.

Parameters:

TypeNameDescription
tableselfThe class instance.

server_onDestroy(self) serverEventCallback

Called when the scripted object is destroyed.

Parameters:

TypeNameDescription
tableselfThe class instance.

client_onDestroy(self) clientEventCallback

Called when the scripted object is destroyed.

Parameters:

TypeNameDescription
tableselfThe class instance.

server_onRefresh(self) serverEventCallback

Called if the Lua script attached to the object is modified while the game is running.

Note:

This event requires Scrap Mechanic to be running with the '-dev' flag. This will allow scripts to automatically refresh upon changes.

Parameters:

TypeNameDescription
tableselfThe class instance.

client_onRefresh(self) clientEventCallback

Called if the Lua script attached to the object is modified while the game is running.

Note:

This event requires Scrap Mechanic to be running with the '-dev' flag. This will allow scripts to automatically refresh upon changes.

Parameters:

TypeNameDescription
tableselfThe class instance.

server_onFixedUpdate(self, timeStep) serverEventCallback

Called every game tick – 40 ticks a second. If the frame rate is lower than 40 fps, this event may be called twice.

During a fixed update, physics and logic between interactables are updated.

Parameters:

TypeNameDescription
tableselfThe class instance.
numbertimeStepThe time period of a tick. (Is always 0.025, a 1/40th of a second.)

server_onReceiveUpdate(self) serverEventCallback

Called occasionally to indicate that some time has passed.

For performance reasons; it recommended to use this instead of server_onFixedUpdate for updates that do not need to happen frequently.

Use sm.game.getCurrentTick to calculate the time.

Parameters:

TypeNameDescription
tableselfThe class instance.

client_onFixedUpdate(self, timeStep) clientEventCallback

Called every game tick – 40 ticks a second. If the frame rate is lower than 40 fps, this event may be called twice.

During a fixed update, physics and logic between interactables are updated.

Parameters:

TypeNameDescription
tableselfThe class instance.
numbertimeStepThe time period of a tick. (Is always 0.025, a 1/40th of a second.)

client_onUpdate(self, deltaTime) clientEventCallback

Called every frame.

During a frame update, graphics, animations and effects are updated.

Warning:

Because of how frequent this event is called, the game's frame rate is greatly affected by the amount of code executed here.

For any non-graphics related code, consider using client_onFixedUpdate instead.

If the event is not in use, consider removing it from the script. (Event callbacks that are not implemented will not be called.)

Parameters:

TypeNameDescription
tableselfThe class instance.
numberdeltaTimeDelta time since the last frame.

client_onClientDataUpdate(self, data, channel) clientEventCallback

Called when the client receives new client data updates from the server set with Network.setClientData.

Data set in this way is persistent and the latest data will automatically be sent to new clients.

The data will arrive after client_onCreate during the same tick.

Channel 1 will be received before channel 2 if both are updated.

Parameters:

TypeNameDescription
tableselfThe class instance.
anydataAny lua object set with Network.setClientData
integerchannelClient data channel, 1 or 2. (default: 1)

client_onLocalPlayerChangedWorld(self, world) clientEventCallback

Called when the client player changes world.

Parameters:

TypeNameDescription
tableselfThe class instance.
WorldworldThe entered world.