SRegionScript
Index
Functions Index
void Log (string message)
void SubscribeToNetwork (string key)
void UnsubscribeFromNetwork (string key)
void SendMessageToAllClientScripts (string messageName, Table message)
void SendMessageToClientScripts (int playerID, string messageName, Table message)
void StartCoroutine (DynValue coroutine, DynValue parameter=default(DynValue)) void StartCoroutine (string name, DynValue parameter=default(DynValue))
Properties Index
string ScriptID get
int InstanceID get
int RegionID get
SScene Scene get
SDatabase Database get
SMath Math get
SShared Shared get
SWebservice WebServices get
string RuntimeType get
bool InEditor get
float TimeSinceAwake get
string DateTimeUTC get
int LocalTimeUnix get
int ServerTimeUnix get
Events Index
Action< int > OnAvatarJoin \ Action< int > OnAvatarLeave \ Action< string, Table > OnScriptServerMessage
An event function which will be called whenever an Avatar joins and will also contain the Avatar's ID as a parameter.
Functions
Log
void Log (string message)
Log a message to console. (only works on preview grid)
Space.Log("Log")
--Clicking the object will make the server script log "Test Message" on all clients
--server script
function OnScriptServerMessage(key, table)
if key == "testKey" then
Space.Log("Message:" .. table[1])
end
end
--client script
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
Space.Network.SendNetworkMessage("testKey",{"Test Message"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
SubscribeToNetwork
void SubscribeToNetwork (string key)
Subscribe to network messages on "key".
Space.SubscribeToNetwork("thekey")
example 2
UnsubscribeFromNetwork
void UnsubscribeFromNetwork (string key)
Unsubscribe from network messages on "key".
Space.UnsubscribeFromNetwork("thekey")
example 2
SendMessageToAllClientScripts
void SendMessageToAllClientScripts (string messageName, Table message)
Sends a network message to all client scripts.
Space.SendMessageToAllClientScripts("thekey",{"themessage"})
--Clicking the object by a single client will send a message to the server which triggers a message response to all clients
--server script--
function OnScriptServerMessage(key, table)
if key == "testKey" then
Space.SendMessageToAllClientScripts("ServerResponse",{"message response to all client scripts in region that are subscribed to this key"})
end
end
--client script--
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
Space.Network.SendNetworkMessage("testKey",{"Test Message"})
end
OnRecieveFunction = function(SNetworkMessage)
Space.Log(SNetworkMessage.Key)
Space.Log(SNetworkMessage.Message[1])
end
Space.Network.SubscribeToNetwork("ServerResponse", OnRecieveFunction)
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
SendMessageToClientScripts
void SendMessageToClientScripts (int playerID, string messageName, Table message)
Sends a network message to a client script belonging to a specific player
Space.SendMessageToAllClientScripts(APlayerID,"thekey",{"themessage"})
--Clicking the object by a single client will send a message to the server which triggers...
--a message response only to that specific client
--server script--
function OnScriptServerMessage(key, table)
if key == "testKey" then
local sender = table[2]
Space.SendMessageToClientScripts(sender,"ServerResponse",{"a message response to the clicker's client script in region that is subscribed to this key"})
end
end
--client script--
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
id = Space.Scene.PlayerAvatar.ID
Space.Network.SendNetworkMessage("testKey",{"Test Message", id})
end
OnRecieveFunction = function(SNetworkMessage)
Space.Log(SNetworkMessage.Key)
Space.Log(SNetworkMessage.Message[1])
end
Space.Network.SubscribeToNetwork("ServerResponse", OnRecieveFunction)
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
StartCoroutine
void StartCoroutine (DynValue coroutine, DynValue parameter=default(DynValue)) void StartCoroutine (string name, DynValue parameter=default(DynValue))
Runs the given function as a coroutine. A parameter is optional.
Space.StartCoroutine(AFunctionName)
--Clicking the object on client will trigger a 3 second countdown on server script using coroutine
--server script--
function OnScriptServerMessage(key, table)
if key == "testKey" and table[1] == "Timer" then
Space.StartCoroutine(TimerCoroutine)
end
end
function TimerCoroutine()
local time = 0
while time < 3 do
Space.Log(3-time)
time = time + 1
coroutine.yield(1)
end
end
--client script--
thisObject = Space.Host.ExecutingObject
function OnClickFunction()
Space.Network.SendNetworkMessage("testKey",{"Timer"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
Properties
ScriptID
string ScriptID get
Returns a unique identifier of this script runtime. (can be found in "/list_scripts" window on preview.)
scriptID = Space.ScriptID
--Clicking the object on client will make the server script log it's ScriptID
--server script--
function OnScriptServerMessage(key, table)
if key == "testKey" and table[1] == "ScriptID" then
Space.Log(Space.ScriptID)
end
end
--client script--
thisObject = Space.Host.ExecutingObject
function OnClickFunction()
Space.Network.SendNetworkMessage("testKey",{"ScriptID"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
InstanceID
int InstanceID get
Returns a unique identifier for the instance of the region. Useful in the case of multiple shards/instances being used. InstanceID does not necessarily equal to the RegionID, even if there's only one instance running.
instance = Space.InstanceID
--Clicking the object on client will make the server script log only...
--if it's instanceID matches with client's instanceID
--server script--
function OnScriptServerMessage(key, table)
local instanceID = Space.InstanceID
if key == "testKey" and table[1] == "ScriptID" and table[2] == instanceID then
Space.Log(instanceID)
end
end
--client script--
thisObject = Space.Host.ExecutingObject
function OnClickFunction()
local instanceID = Space.Scene.InstanceID
Space.Network.SendNetworkMessage("testKey",{"ScriptID", instanceID})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
RegionID
int RegionID get
Returns a unique identifier for the region. (Same ID seen in curator)
region = Space.RegionID
--Clicking the object on client will make the server script log only...
--if it's RegionID matches with client's RegionID
--server script--
function OnScriptServerMessage(key, table)
local RegionID = Space.RegionID
if key == "testKey" and table[1] == "ScriptID" and table[2] == RegionID then
Space.Log(RegionID)
end
end
--client script--
thisObject = Space.Host.ExecutingObject
function OnClickFunction()
local RegionID = Space.Scene.RegionID
Space.Network.SendNetworkMessage("testKey",{"ScriptID", RegionID})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
Scene
SScene Scene get
Access to the SScene class methods and properties.
Space.Scene
Database
SDatabase Database get
Access to the SDatabase class methods and properties.
Space.Database
Math
SMath Math get
Access to the SMath class methods and properties.
Space.Math
Shared
SShared Shared get
Access to the SShared class methods and properties.
Space.Shared
WebServices
SWebservice WebServices get
Access to the SWebservice class methods and properties.
Space.WebServices
RuntimeType
string RuntimeType get
Returns "Server" if this script is a Server script
type = Space.RuntimeType
InEditor
bool InEditor get
Returns true if in Editor. (this will return false on server scripts)
IsInEditor = Space.InEditor
TimeSinceAwake
float TimeSinceAwake get
Time, in seconds, since this script runtime has been awake.
SecondsAwake = Space.TimeSinceAwake
--Clicking the object will make the server script log it's TimeSinceAwake on all clients
--server script
function OnScriptServerMessage(key, table)
if key == "testKey" and table[1] == "TimeSinceAwake" then
Space.Log(Space.TimeSinceAwake)
end
end
--client script
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
Space.Network.SendNetworkMessage("testKey",{"TimeSinceAwake"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
DateTimeUTC
string DateTimeUTC get
Returns a string of the current Date/Time in UTC
DateAndTime = Space.DateTimeUTC
--Clicking the object will make the server script log it's DateTimeUTC on all clients
--server script
function OnScriptServerMessage(key, table)
if key == "testKey" and table[1] == "DateTimeUTC" then
Space.Log(Space.DateTimeUTC)
end
end
--client script
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
Space.Network.SendNetworkMessage("testKey",{"DateTimeUTC"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
LocalTimeUnix
int LocalTimeUnix get
Returns the current Unix time (in seconds) (same as ServerTimeUnix)
unixtime = Space.LocalTimeUnix
--Clicking the object will make the server script log it's LocalTimeUnix on all clients
--server script
function OnScriptServerMessage(key, table)
if key == "testKey" and table[1] == "LocalTimeUnix" then
Space.Log(Space.LocalTimeUnix)
end
end
--client script
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
Space.Network.SendNetworkMessage("testKey",{"LocalTimeUnix"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
ServerTimeUnix
int ServerTimeUnix get
Returns the current Unix time (in seconds) (same as LocalTimeUnix)
unixtime = Space.ServerTimeUnix
--Clicking the object will make the server script log it's ServerTimeUnix on all clients
--server script
function OnScriptServerMessage(key, table)
if key == "testKey" and table[1] == "ServerTimeUnix" then
Space.Log(Space.ServerTimeUnix)
end
end
--client script
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
Space.Network.SendNetworkMessage("testKey",{"ServerTimeUnix"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)
Events
OnAvatarJoin
Action< int > OnAvatarJoin
An event function which will be called whenever an Avatar joins and will also contain the Avatar's ID as a parameter.
function OnAvatarJoin(playerID)
end
function OnAvatarJoin(id)
local numOfAvatars = Space.Scene.ConnectedAvatars
Space.Log("Avatar with ID " .. id .. "has joined")
Space.Log("Number of avatars connected: " .. numOfAvatars)
end
OnAvatarLeave
Action< int > OnAvatarLeave
An event function which will be called whenever an Avatar leaves and will also contain the Avatar's ID as a parameter.
function OnAvatarLeave(playerID)
end
function OnAvatarLeave(id)
local numOfAvatars = Space.Scene.ConnectedAvatars
Space.Log("Avatar with ID " .. id .. "has left")
Space.Log("Number of avatars connected: " .. numOfAvatars)
end
OnScriptServerMessage
Action< string, Table > OnScriptServerMessage
An event function which will be called whenever the server script receives a Network Message, and will contain the network message key String and message Table as a parameter.
function OnScriptServerMessage(key, table)
theKeyString = key
theSNetworkMessageTable = table
end
--Clicking the object will make the server script log "Test Message" on all clients
--server script
function OnScriptServerMessage(key, table)
if key == "testKey" then
Space.Log("Message:" .. table[1])
end
end
--client script
thisObject = Space.Host.ExecutingObject
OnClickFunction = function()
Space.Network.SendNetworkMessage("testKey",{"Test Message"})
end
thisObject.AddClickable()
thisObject.Clickable.OnClick(OnClickFunction)