OsMessageObject

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{osslfunc
 
{{osslfunc
 
|threat_level=Low
 
|threat_level=Low
|permissions=${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
+
|permissions=${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
 
|delay=0
 
|delay=0
|function_syntax=void osMessageObject(key objectID, string message)
+
|function_syntax= osMessageObject(key primID, string message)
|ossl_example=This example consists of a sender script, and a reciever script.
+
|ossl_example=This example consists of a sender script, and a receiver script.
 
: '''Sender script'''
 
: '''Sender script'''
 
<source lang = "lsl">
 
<source lang = "lsl">
 
// ----------------------------------------------------------------
 
// ----------------------------------------------------------------
 
// Example / Sample Script to show function use.
 
// Example / Sample Script to show function use.
//
 
// Script Title:    osMessageObject.lsl
 
// Script Author:
 
// Threat Level:    Low
 
// Script Source:  SUPPLEMENTAL http://opensimulator.org/wiki/osMessageObject
 
//
 
// Notes: See Script Source reference for more detailed information
 
// This sample is full opensource and available to use as you see fit and desire.
 
// Threat Levels only apply to OSSL & AA Functions
 
// See http://opensimulator.org/wiki/Threat_level
 
// ================================================================
 
// Inworld Script Line:    osMessageObject(key objectUUID, string message);
 
//
 
// Example of osMessageObject
 
//
 
// SPECIAL NOTE
 
// send a message to to object identified by the given UUID,
 
// a script in the Receiving object must implement the dataserver function
 
// the dataserver function is passed the ID of the calling function and a string message
 
// Dataserver event is only raised in the root prim of the linkset
 
//
 
 
//
 
//
 
default
 
default
Line 47: Line 26:
  
  
: '''Reciever script'''
+
: '''Receiver script'''
 
<source lang = "lsl">
 
<source lang = "lsl">
 
// Place this script in the Receiver prim.
 
// Place this script in the Receiver prim.
Line 63: Line 42:
 
</source>
 
</source>
 
|description=
 
|description=
Where ''objectUUID'' = the UUID of the object you are messaging.  
+
''primID'' = the UUID of the prim you are messaging.  
 
+
''message'' = The string you want to send.  
Where ''message'' = The String of data you want to send.  
+
  
Sends a message to to object identified by the given UUID, a script in the object must implement the dataserver function the dataserver function is passed the ID of the calling function and a string message.  
+
Sends a message to a prim identified by the given UUID, a script in the prim must implement the dataserver event handler. the dataserver event is passed the UUID of the calling prim and a string message.  
 +
<div style="background-color:#FFA500; padding:10px; padding-bottom:5px; border: 1px #FF544F solid">
 +
This is incompatible with the normal use of dataserver event on scripts on the receiving prim.<br>
 +
The dataserver query_id argument should be a unique id of a request. This function just uses it as a sender id. All scripts with dataserver event will receive it with no easy to validate. A normal request may also trigger the event on several scripts of the prim. The target one can compare the query_id and validate it, other scripts can not tell if it is a normal request for other script, or a message.<br>
 +
this unless the prims can know senders UUIDs and filter based on them
 +
</div>
 
|
 
|
 
}}
 
}}

Latest revision as of 12:05, 27 October 2021

osMessageObject(key primID, string message)
primID = the UUID of the prim you are messaging.

message = The string you want to send.

Sends a message to a prim identified by the given UUID, a script in the prim must implement the dataserver event handler. the dataserver event is passed the UUID of the calling prim and a string message.

This is incompatible with the normal use of dataserver event on scripts on the receiving prim.
The dataserver query_id argument should be a unique id of a request. This function just uses it as a sender id. All scripts with dataserver event will receive it with no easy to validate. A normal request may also trigger the event on several scripts of the prim. The target one can compare the query_id and validate it, other scripts can not tell if it is a normal request for other script, or a message.
this unless the prims can know senders UUIDs and filter based on them

Threat Level Low
Permissions ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
Extra Delay 0 seconds
Example(s)
This example consists of a sender script, and a receiver script.
Sender script
// ----------------------------------------------------------------
// Example / Sample Script to show function use.
//
default
{
    state_entry()
    {
        llSay(0, "Touch me to use osMessageObject to message an object");
    }
    touch_end(integer total_num)
    {
        key kTargetObj = "UUID"; //INSERT A VALID Object UUID here
        string sSentence = "This message sent from a Sending object using osMessageObject";
        osMessageObject(kTargetObj,sSentence);
    }
}


Receiver script
// Place this script in the Receiver prim.
default
{
    state_entry()
    {
        llSay(0, "osMessageObject Receiver Ready\nPlease replace UUID in osMessageObject Script (line 31) kTargetObj = "+(string)llGetKey());
    }
    dataserver(key query_id, string data)
    {
        llSay(0, "RECEIVER: The message received.\n\t query_id = "+(string)query_id+"\n\t msg = "+data);
    }
}
Personal tools
General
About This Wiki