Files
libremetaverse/libsecondlife-cs/Packets/CommunicationPackets.cs
John Hurliman 56e55a0798 * Moved packet helpers in to a separate directory, a separate namespace, and separate categories. Updated the rest of the library and name2key to reflect the changes
* Added Inventory class skeleton
* Added UpdateInventoryItem packet helper
* Removed CRC proof of concept from sldump
* Numerous miscellaneous updates (sorry!)

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@46 52acb1d6-8a22-11de-b505-999d5b087335
2006-07-09 22:18:58 +00:00

89 lines
3.5 KiB
C#

/*
* Copyright (c) 2006, Second Life Reverse Engineering Team
* All rights reserved.
*
* - Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* - Neither the name of the Second Life Reverse Engineering Team nor the names
* of its contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
namespace libsecondlife.Packets
{
public class Communication
{
public static Packet ImprovedInstantMessage(ProtocolManager protocol, LLUUID targetAgentID,
LLUUID myAgentID, uint parentEstateID, LLUUID regionID, LLVector3 position, byte offline,
byte dialog, LLUUID id, uint timestamp, string myAgentName, string message,
byte[] binaryBucket)
{
Hashtable blocks = new Hashtable();
Hashtable fields = new Hashtable();
fields["FromAgentID"] = myAgentID;
fields["ToAgentID"] = targetAgentID;
fields["ParentEstateID"] = parentEstateID;
fields["RegionID"] = regionID;
fields["Position"] = position;
fields["Offline"] = offline;
fields["Dialog"] = dialog;
fields["ID"] = id;
fields["Timestamp"] = timestamp;
fields["FromAgentName"] = myAgentName;
fields["Message"] = message;
fields["BinaryBucket"] = binaryBucket;
blocks[fields] = "MessageBlock";
return PacketBuilder.BuildPacket("ImprovedInstantMessage", protocol, blocks, Helpers.MSG_RELIABLE);
}
public static Packet ChatFromViewer(ProtocolManager protocol, LLUUID myAgentID, LLUUID mySessionID, string message,
byte type, int channel, byte command, LLUUID commandID, float radius, LLVector3 position)
{
Hashtable blocks = new Hashtable();
Hashtable agentData = new Hashtable();
Hashtable chatData = new Hashtable();
Hashtable conversationData = new Hashtable();
// Agent Data Block
agentData["AgentID"] = myAgentID;
agentData["SessionID"] = mySessionID;
blocks[agentData] = "AgentData";
// Chat Data Block
chatData["Message"] = message;
chatData["Type"] = type;
chatData["Channel"] = channel;
blocks[chatData] = "ChatData";
// Conversation Data Block
conversationData["Command"] = command;
conversationData["CommandID"] = commandID;
conversationData["Radius"] = radius;
conversationData["Position"] = position;
blocks[conversationData] = "ConversationData";
return PacketBuilder.BuildPacket("ChatFromViewer", protocol, blocks, Helpers.MSG_RELIABLE);
}
}
}