示例#1
0
        public Packet inObj(Packet packet, IPEndPoint sim)
        {
            string simIP = sim.ToString();
            if (!lastSim.Equals(simIP))
            {
                lastSim = simIP;
                avclients.Clear();
            }
            ObjectUpdatePacket ObjectUpdate = (ObjectUpdatePacket)packet;
            foreach (ObjectUpdatePacket.ObjectDataBlock block in ObjectUpdate.ObjectData)
            {
                if ((block.PCode == 0x2f) && (block.FullID!=frame.AgentID)) // Avatars only
                {
                    //writethis("\n\n-----------\n------\n---\n" + block.ToString(),ConsoleColor.White,ConsoleColor.DarkBlue);
                    string FirstName = null;
                    string LastName = null;
                    string Title = null;
                    #region decode name
                    if (block.NameValue != null)
                    {
                        if(local2global.ContainsKey(block.ID))
                        {
                            local2global[block.ID]=block.FullID;
                        }else
                        {
                            local2global.Add(block.ID,block.FullID);
                        }
                        string[] namevalues = Utils.BytesToString(block.NameValue).Split("\r\n".ToCharArray());
                        foreach (string line in namevalues)
                        {
                            NameValue namevalue = new NameValue(line);
                            if (namevalue.Value != null)
                            {
                                if (namevalue.Name == "FirstName")
                                {

                                    FirstName = Convert.ToString(namevalue.Value);
                                    if (avclients.ContainsKey(block.FullID))
                                    {
                                        if (avclients[block.FullID] == "") { }
                                        else
                                        {
                                            if(form.Display())
                                            FirstName = "(" + avclients[block.FullID] + ") " + FirstName;
                                        }
                                        namevalue.Value = FirstName;
                                    }
                                    else
                                    {
                                        if (!blocks.ContainsKey(block.FullID))
                                        {
                                            blocks.Add(block.FullID, block);
                                            rb = ObjectUpdate.RegionData;
                                        }
                                    }
                                }
                                else if (namevalue.Name == "LastName")
                                {
                                    LastName = Convert.ToString(namevalue.Value);
                                }
                                else if (namevalue.Name == "Title")
                                {
                                    Title = Convert.ToString(namevalue.Value);
                                }

                            }

                        }
                        string newname = "";
                        if (FirstName != null)
                        {
                            if (newname != "") newname += "\r\n";
                            newname += "FirstName STRING RW SV " + FirstName;

                        }
                        if (LastName != null)
                        {
                            if (newname != "") newname += "\n";
                            newname += "LastName STRING RW SV " + LastName;
                        }
                        if (Title != null)
                        {
                            if (newname != "") newname += "\n";
                            newname += "Title STRING RW SV " + Title;
                        }
                        block.NameValue = Utils.StringToBytes(newname);
                        //writethis("\n" + block.FullID.ToString() + "\n" + newname, ConsoleColor.White, ConsoleColor.DarkGreen);

                    }

                    #endregion

                }
            }
            return ObjectUpdate;
        }
示例#2
0
        public Packet inObj(Packet packet, IPEndPoint sim)
        {
            string simIP = sim.ToString();

            if (!lastSim.Equals(simIP))
            {
                lastSim = simIP;
                avclients.Clear();
            }
            ObjectUpdatePacket ObjectUpdate = (ObjectUpdatePacket)packet;

            foreach (ObjectUpdatePacket.ObjectDataBlock block in ObjectUpdate.ObjectData)
            {
                if ((block.PCode == 0x2f) && (block.FullID != frame.AgentID)) // Avatars only
                {
                    //writethis("\n\n-----------\n------\n---\n" + block.ToString(),ConsoleColor.White,ConsoleColor.DarkBlue);
                    string FirstName = null;
                    string LastName  = null;
                    string Title     = null;
                    #region decode name
                    if (block.NameValue != null)
                    {
                        if (local2global.ContainsKey(block.ID))
                        {
                            local2global[block.ID] = block.FullID;
                        }
                        else
                        {
                            local2global.Add(block.ID, block.FullID);
                        }
                        string[] namevalues = Utils.BytesToString(block.NameValue).Split("\r\n".ToCharArray());
                        foreach (string line in namevalues)
                        {
                            NameValue namevalue = new NameValue(line);
                            if (namevalue.Value != null)
                            {
                                if (namevalue.Name == "FirstName")
                                {
                                    FirstName = Convert.ToString(namevalue.Value);
                                    if (avclients.ContainsKey(block.FullID))
                                    {
                                        if (avclients[block.FullID] == "")
                                        {
                                        }
                                        else
                                        {
                                            if (form.Display())
                                            {
                                                FirstName = "(" + avclients[block.FullID] + ") " + FirstName;
                                            }
                                        }
                                        namevalue.Value = FirstName;
                                    }
                                    else
                                    {
                                        if (!blocks.ContainsKey(block.FullID))
                                        {
                                            blocks.Add(block.FullID, block);
                                            rb = ObjectUpdate.RegionData;
                                        }
                                    }
                                }
                                else if (namevalue.Name == "LastName")
                                {
                                    LastName = Convert.ToString(namevalue.Value);
                                }
                                else if (namevalue.Name == "Title")
                                {
                                    Title = Convert.ToString(namevalue.Value);
                                }
                            }
                        }
                        string newname = "";
                        if (FirstName != null)
                        {
                            if (newname != "")
                            {
                                newname += "\r\n";
                            }
                            newname += "FirstName STRING RW SV " + FirstName;
                        }
                        if (LastName != null)
                        {
                            if (newname != "")
                            {
                                newname += "\n";
                            }
                            newname += "LastName STRING RW SV " + LastName;
                        }
                        if (Title != null)
                        {
                            if (newname != "")
                            {
                                newname += "\n";
                            }
                            newname += "Title STRING RW SV " + Title;
                        }
                        block.NameValue = Utils.StringToBytes(newname);
                        //writethis("\n" + block.FullID.ToString() + "\n" + newname, ConsoleColor.White, ConsoleColor.DarkGreen);
                    }



                    #endregion
                }
            }
            return(ObjectUpdate);
        }