Line 291: | Line 291: | ||
{{ScriptFunction|<nowiki>Action<int></nowiki>|OnAvatarJoin||An event function which will be called whenever an Avatar joins and will also contain the Avatar's ID as a parameter.|5=<pre>function OnAvatarJoin(playerID) | {{ScriptFunction|<nowiki>Action<int></nowiki>|OnAvatarJoin||An event function which will be called whenever an Avatar joins and will also contain the Avatar's ID as a parameter.|5=<pre>function OnAvatarJoin(playerID) | ||
− | + | end</pre>|6=<pre>function OnAvatarJoin(id) | |
− | + | local numOfAvatars = Space.Scene.ConnectedAvatars | |
− | + | Space.Log("Avatar with ID " .. id .. "has joined") | |
− | + | Space.Log("Number of avatars connected: " .. numOfAvatars) | |
− | end</pre>|6=<pre></pre>}} | + | end</pre>}} |
{{ScriptFunction|<nowiki>Action<int></nowiki>|OnAvatarLeave||An event function which will be called whenever an Avatar leaves and will also contain the Avatar's ID as a parameter.|5=<pre>function OnAvatarLeave(playerID) | {{ScriptFunction|<nowiki>Action<int></nowiki>|OnAvatarLeave||An event function which will be called whenever an Avatar leaves and will also contain the Avatar's ID as a parameter.|5=<pre>function OnAvatarLeave(playerID) | ||
− | + | end</pre>|6=<pre>function OnAvatarLeave(id) | |
− | + | local numOfAvatars = Space.Scene.ConnectedAvatars | |
− | + | Space.Log("Avatar with ID " .. id .. "has left") | |
− | + | Space.Log("Number of avatars connected: " .. numOfAvatars) | |
− | end</pre>|6=<pre></pre>}} | + | end</pre>}} |
{{ScriptFunction|<nowiki>Action<string, Table></nowiki>|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. |5=<pre>function OnScriptServerMessage(key, table) | {{ScriptFunction|<nowiki>Action<string, Table></nowiki>|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. |5=<pre>function OnScriptServerMessage(key, table) |
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)
Subscribe to network messages on "key".
Space.SubscribeToNetwork("thekey")
Unsubscribe from network messages on "key".
Space.UnsubscribeFromNetwork("thekey")
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)
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)
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)
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)
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)
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)
Access to the SScene class methods and properties.
Space.Scene
Access to the SDatabase class methods and properties.
Space.Database
Access to the SMath class methods and properties.
Space.Math
Access to the SShared class methods and properties.
Space.Shared
Access to the SWebservice class methods and properties.
Space.WebServices
Returns "Server" if this script is a Server script
type = Space.RuntimeType
Returns true if in Editor. (this will return false on server scripts)
IsInEditor = Space.InEditor
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)
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)
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)
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)
Server script events are "Magic methods" which, unlike client scripts, you don't have to bind or subscribe to. They will be called as long as you have their methods implemented in your server script.
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
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
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)
|