Add llRegionSayTo
llRegionSayTo(key target, integer channel, string messasge) Allows messages to be sent region-wide to a particular prim.bulletsim
parent
a0a0c64cb1
commit
2787207aa2
|
@ -282,6 +282,27 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// wComm.DeliverMessageTo(target, channelID, m_host.Name, m_host.UUID, text);
|
||||||
|
public void DeliverMessageTo(UUID target, int channel, string name, UUID id, string msg)
|
||||||
|
{
|
||||||
|
foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg))
|
||||||
|
{
|
||||||
|
// Dont process if this message is from yourself!
|
||||||
|
if (li.GetHostID().Equals(id))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
SceneObjectPart sPart = m_scene.GetSceneObjectPart(li.GetHostID());
|
||||||
|
if (sPart == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ( li.GetHostID().Equals(target))
|
||||||
|
{
|
||||||
|
QueueMessage(new ListenerInfo(li, name, id, msg));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void QueueMessage(ListenerInfo li)
|
protected void QueueMessage(ListenerInfo li)
|
||||||
{
|
{
|
||||||
lock (m_pending.SyncRoot)
|
lock (m_pending.SyncRoot)
|
||||||
|
|
|
@ -80,6 +80,26 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <param name="msg">msg to sent</param>
|
/// <param name="msg">msg to sent</param>
|
||||||
void DeliverMessage(ChatTypeEnum type, int channel, string name, UUID id, string msg);
|
void DeliverMessage(ChatTypeEnum type, int channel, string name, UUID id, string msg);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Delivers the message to a specified object in the region.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name='target'>
|
||||||
|
/// Target.
|
||||||
|
/// </param>
|
||||||
|
/// <param name='channel'>
|
||||||
|
/// Channel.
|
||||||
|
/// </param>
|
||||||
|
/// <param name='name'>
|
||||||
|
/// Name.
|
||||||
|
/// </param>
|
||||||
|
/// <param name='id'>
|
||||||
|
/// Identifier.
|
||||||
|
/// </param>
|
||||||
|
/// <param name='msg'>
|
||||||
|
/// Message.
|
||||||
|
/// </param>
|
||||||
|
void DeliverMessageTo(UUID target, int channel, string name, UUID id, string msg);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Are there any listen events ready to be dispatched?
|
/// Are there any listen events ready to be dispatched?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -843,6 +843,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
wComm.DeliverMessage(ChatTypeEnum.Region, channelID, m_host.Name, m_host.UUID, text);
|
wComm.DeliverMessage(ChatTypeEnum.Region, channelID, m_host.Name, m_host.UUID, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void llRegionSayTo(string target, int channel, string msg)
|
||||||
|
{
|
||||||
|
if (channel == 0)
|
||||||
|
{
|
||||||
|
LSLError("Cannot use llRegionSay() on channel 0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.Length > 1023)
|
||||||
|
msg = msg.Substring(0, 1023);
|
||||||
|
|
||||||
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
|
UUID TargetID;
|
||||||
|
UUID.TryParse(target, out TargetID);
|
||||||
|
|
||||||
|
IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
|
||||||
|
if (wComm != null)
|
||||||
|
wComm.DeliverMessageTo(TargetID, channel, m_host.Name, m_host.UUID, msg);
|
||||||
|
}
|
||||||
|
|
||||||
public LSL_Integer llListen(int channelID, string name, string ID, string msg)
|
public LSL_Integer llListen(int channelID, string name, string ID, string msg)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
@ -10486,12 +10507,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
NotImplemented("llGetUsedMemory");
|
NotImplemented("llGetUsedMemory");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llRegionSayTo(LSL_Key target, LSL_Integer channel, LSL_String msg)
|
|
||||||
{
|
|
||||||
m_host.AddScriptLPS(1);
|
|
||||||
NotImplemented("llRegionSayTo");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void llScriptProfiler(LSL_Integer flags)
|
public void llScriptProfiler(LSL_Integer flags)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
|
@ -271,6 +271,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
void llPushObject(string target, LSL_Vector impulse, LSL_Vector ang_impulse, int local);
|
void llPushObject(string target, LSL_Vector impulse, LSL_Vector ang_impulse, int local);
|
||||||
void llRefreshPrimURL();
|
void llRefreshPrimURL();
|
||||||
void llRegionSay(int channelID, string text);
|
void llRegionSay(int channelID, string text);
|
||||||
|
void llRegionSayTo(string target, int channelID, string text);
|
||||||
void llReleaseCamera(string avatar);
|
void llReleaseCamera(string avatar);
|
||||||
void llReleaseControls();
|
void llReleaseControls();
|
||||||
void llReleaseURL(string url);
|
void llReleaseURL(string url);
|
||||||
|
|
|
@ -1199,6 +1199,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
m_LSL_Functions.llRegionSay(channelID, text);
|
m_LSL_Functions.llRegionSay(channelID, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void llRegionSayTo(string key, int channelID, string text)
|
||||||
|
{
|
||||||
|
m_LSL_Functions.llRegionSayTo(key, channelID, text);
|
||||||
|
}
|
||||||
|
|
||||||
public void llReleaseCamera(string avatar)
|
public void llReleaseCamera(string avatar)
|
||||||
{
|
{
|
||||||
m_LSL_Functions.llReleaseCamera(avatar);
|
m_LSL_Functions.llReleaseCamera(avatar);
|
||||||
|
|
Loading…
Reference in New Issue