mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
Instant Messages between users in the same region should actually now work.
This commit is contained in:
@@ -268,29 +268,27 @@ namespace OpenSim.Region.ClientStack
|
||||
/// <remarks>TODO</remarks>
|
||||
/// <param name="message"></param>
|
||||
/// <param name="target"></param>
|
||||
public void SendInstantMessage(string message, LLUUID target, string fromName)
|
||||
public void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent, LLUUID imSessionID, string fromName, byte dialog, uint timeStamp)
|
||||
{
|
||||
if (message != "typing")
|
||||
{
|
||||
|
||||
Encoding enc = Encoding.ASCII;
|
||||
ImprovedInstantMessagePacket msg = new ImprovedInstantMessagePacket();
|
||||
msg.AgentData.AgentID = this.AgentID;
|
||||
msg.AgentData.SessionID = this.SessionID;
|
||||
msg.AgentData.AgentID = fromAgent;
|
||||
msg.AgentData.SessionID = fromAgentSession;
|
||||
msg.MessageBlock.FromAgentName = enc.GetBytes(fromName + " \0");
|
||||
msg.MessageBlock.Dialog = 0;
|
||||
msg.MessageBlock.Dialog = dialog;
|
||||
msg.MessageBlock.FromGroup = false;
|
||||
msg.MessageBlock.ID = target.Combine(this.SecureSessionID);
|
||||
msg.MessageBlock.ID = imSessionID;
|
||||
msg.MessageBlock.Offline = 0;
|
||||
msg.MessageBlock.ParentEstateID = 0;
|
||||
msg.MessageBlock.Position = new LLVector3();
|
||||
msg.MessageBlock.RegionID = new LLUUID();
|
||||
msg.MessageBlock.Timestamp = 0;
|
||||
msg.MessageBlock.ToAgentID = target;
|
||||
msg.MessageBlock.RegionID = LLUUID.Random();
|
||||
msg.MessageBlock.Timestamp = timeStamp;
|
||||
msg.MessageBlock.ToAgentID = toAgent;
|
||||
msg.MessageBlock.Message = enc.GetBytes(message + "\0");
|
||||
msg.MessageBlock.BinaryBucket = new byte[0];
|
||||
|
||||
this.OutPacket(msg);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -927,7 +925,7 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
ObjectUpdatePacket outPacket = new ObjectUpdatePacket();
|
||||
outPacket.RegionData.RegionHandle = regionHandle;
|
||||
outPacket.RegionData.TimeDilation = timeDilation;
|
||||
outPacket.RegionData.TimeDilation = timeDilation;
|
||||
outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1];
|
||||
|
||||
outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primShape, flags);
|
||||
@@ -938,6 +936,9 @@ namespace OpenSim.Region.ClientStack
|
||||
outPacket.ObjectData[0].Text = Helpers.StringToField(text);
|
||||
outPacket.ObjectData[0].ParentID = parentID;
|
||||
outPacket.ObjectData[0].PSBlock = particleSystem;
|
||||
outPacket.ObjectData[0].ClickAction = 0;
|
||||
//outPacket.ObjectData[0].Flags = 0;
|
||||
outPacket.ObjectData[0].Radius = 20;
|
||||
|
||||
byte[] pb = pos.GetBytes();
|
||||
Array.Copy(pb, 0, outPacket.ObjectData[0].ObjectData, 0, pb.Length);
|
||||
@@ -1045,6 +1046,7 @@ namespace OpenSim.Region.ClientStack
|
||||
bytes[i++] = (byte)((ac >> 8) % 256);
|
||||
|
||||
dat.Data = bytes;
|
||||
|
||||
return (dat);
|
||||
}
|
||||
|
||||
@@ -1196,7 +1198,7 @@ namespace OpenSim.Region.ClientStack
|
||||
ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);
|
||||
|
||||
SetDefaultAvatarPacketValues(ref objdata);
|
||||
objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24);
|
||||
objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24);
|
||||
objdata.PathCurve = 16;
|
||||
objdata.ProfileCurve = 1;
|
||||
objdata.PathScaleX = 100;
|
||||
|
||||
@@ -121,14 +121,12 @@ namespace OpenSim.Region.ClientStack
|
||||
break;
|
||||
case PacketType.ImprovedInstantMessage:
|
||||
ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack;
|
||||
|
||||
string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName);
|
||||
string IMmessage = Util.FieldToString(msgpack.MessageBlock.Message);
|
||||
|
||||
if (OnInstantMessage != null)
|
||||
{
|
||||
this.OnInstantMessage(msgpack.AgentData.AgentID, msgpack.MessageBlock.ToAgentID,
|
||||
msgpack.MessageBlock.Timestamp, IMfromName, IMmessage);
|
||||
this.OnInstantMessage(msgpack.AgentData.AgentID, msgpack.AgentData.SessionID, msgpack.MessageBlock.ToAgentID, msgpack.MessageBlock.ID,
|
||||
msgpack.MessageBlock.Timestamp, IMfromName, IMmessage, msgpack.MessageBlock.Dialog);
|
||||
}
|
||||
break;
|
||||
case PacketType.RezObject:
|
||||
@@ -235,7 +233,6 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
ObjectAddPacket addPacket = (ObjectAddPacket)Pack;
|
||||
PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket);
|
||||
|
||||
OnAddPrim(this.AgentId, addPacket.ObjectData.RayEnd, shape);
|
||||
}
|
||||
break;
|
||||
@@ -460,9 +457,12 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
break;
|
||||
case PacketType.UpdateTaskInventory:
|
||||
// Console.WriteLine(Pack.ToString());
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack;
|
||||
break;
|
||||
case PacketType.RezScript:
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
break;
|
||||
case PacketType.MapLayerRequest:
|
||||
this.RequestMapLayer();
|
||||
break;
|
||||
|
||||
@@ -273,23 +273,5 @@ namespace OpenSim.Region.ClientStack
|
||||
this.ClientThread.Abort();
|
||||
}
|
||||
|
||||
#region Inventory Creation
|
||||
private void SetupInventory(AuthenticateResponse sessionInfo)
|
||||
{
|
||||
|
||||
}
|
||||
private AgentInventory CreateInventory(LLUUID baseFolder)
|
||||
{
|
||||
AgentInventory inventory = null;
|
||||
|
||||
return inventory;
|
||||
}
|
||||
|
||||
private void CreateInventoryItem(CreateInventoryItemPacket packet)
|
||||
{
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user