SRegionScript

Index

Functions Index

Function

Properties Index

Property

Events Index

Event
Description

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)

Parameter
Type
Description

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".

Parameter
Type
Description

Space.SubscribeToNetwork("thekey")
example 2

UnsubscribeFromNetwork

void UnsubscribeFromNetwork (string key)

Unsubscribe from network messages on "key".

Parameter
Type
Description

Space.UnsubscribeFromNetwork("thekey")
example 2

SendMessageToAllClientScripts

void SendMessageToAllClientScripts (string messageName, Table message)

Sends a network message to all client scripts.

Parameter
Type
Description

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

Parameter
Type
Description

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.

Parameter
Type
Description

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)

Last updated

Sinespace® is a registered trademark of Sine Wave Entertainment Ltd, All Rights Reserved.