OsMessageAttachments
From OpenSimulator
(Difference between revisions)
Line 6: | Line 6: | ||
|description= | |description= | ||
Sends a specified message to the specified avatar's attachments on the specified attachment points. | Sends a specified message to the specified avatar's attachments on the specified attachment points. | ||
+ | Options: | ||
+ | [[OSSL Constants/OS_ATTACH_MSG_INVERT_POINTS|OS_ATTACH_MSG_INVERT_POINTS]] invert how the attachment points list should be treated | ||
+ | [[OSSL Constants/OS_ATTACH_MSG_OBJECT_CREATOR|OS_ATTACH_MSG_OBJECT_CREATOR]] send only to those have the same CreatorID with host object CreatorID | ||
+ | [[OSSL Constants/OS_ATTACH_MSG_SCRIPT_CREATOR|OS_ATTACH_MSG_SCRIPT_CREATOR]] send only to those have the same CreatorID with sender script CreatorID | ||
calling with [[OSSL Constants/OS_ATTACH_MSG_ALL|OS_ATTACH_MSG_ALL]] as attachpoint sends the message to attachments on every point<br> | calling with [[OSSL Constants/OS_ATTACH_MSG_ALL|OS_ATTACH_MSG_ALL]] as attachpoint sends the message to attachments on every point<br> | ||
− | |||
− | |||
− | |||
Behaves as [[osMessageObject]], without the sending script needing to know the attachment keys in advance. | Behaves as [[osMessageObject]], without the sending script needing to know the attachment keys in advance. |
Revision as of 10:26, 1 January 2022
osMessageAttachments(key avatar, string message, list attachmentPoints, integer options);
| |
Sends a specified message to the specified avatar's attachments on the specified attachment points.
Options: OS_ATTACH_MSG_INVERT_POINTS invert how the attachment points list should be treated OS_ATTACH_MSG_OBJECT_CREATOR send only to those have the same CreatorID with host object CreatorID OS_ATTACH_MSG_SCRIPT_CREATOR send only to those have the same CreatorID with sender script CreatorID calling with OS_ATTACH_MSG_ALL as attachpoint sends the message to attachments on every point Behaves as osMessageObject, without the sending script needing to know the attachment keys in advance. This is incompatible with the normal use of dataserver event on scripts the receiving prim. | |
Threat Level | Moderate |
Permissions | ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER |
Extra Delay | 0 seconds |
Example(s) | |
string NPCName = "osMessageAttachments"; key npc; default { state_entry() { llSensor("", NULL_KEY, OS_NPC, 96, TWO_PI); } sensor(integer d) { integer i; for(i=0;i<d;++i) { if(llDetectedName(i) == NPCName + " NPC") { osNpcRemove(llDetectedKey(i)); } } llSensor("", NULL_KEY, OS_NPC, 96, TWO_PI); } no_sensor() { state ready; } } state ready { state_entry() { npc = osNpcCreate(NPCName, "NPC", llGetPos(), llGetOwner()); } touch_start(integer p) { integer i; integer wasNPC = FALSE; for(i=0;i<p;++i) { key detected = llDetectedKey(i); if(!wasNPC) { wasNPC = detected == npc; } list attachments = osGetNumberOfAttachments(detected, [ ATTACH_HEAD, ATTACH_LHAND, ATTACH_RHAND ]); list attachmentsToMessage = []; integer j; integer k = llGetListLength(attachments); integer l; for(j=0;j<k;j+=2){ l = llList2Integer(attachments, j); if(l > 0 && llList2Integer(attachments, j + 1) > 0){ attachmentsToMessage += [l]; } } osMessageAttachments(detected, "foo", attachmentsToMessage, 0); osMessageAttachments(detected, "bar", attachmentsToMessage, OS_ATTACH_MSG_INVERT_POINTS); osMessageAttachments(detected, "baz", [OS_ATTACH_MSG_ALL], 0); osMessageAttachments(detected, "will never be sent", [OS_ATTACH_MSG_ALL], OS_ATTACH_MSG_INVERT_POINTS); osMessageAttachments(detected, "heard by both feet", [ATTACH_LFOOT, ATTACH_RFOOT], 0); osMessageAttachments(detected, "heard by object creator feet", [ATTACH_LFOOT, ATTACH_RFOOT], OS_ATTACH_MSG_OBJECT_CREATOR); osMessageAttachments(detected, "heard by script creator feet", [ATTACH_LFOOT, ATTACH_RFOOT], OS_ATTACH_MSG_SCRIPT_CREATOR); } if(!wasNPC) { osNpcTouch(npc, llGetKey(), 0); } } } | |
Notes | |
This function was added in 0.7.5-post-fixes
See the OSSL Constants page for information about the pre-defined constants that can be used for the 'options' argument of this function call. |