public void DestroyObject(PacketIn packet)
 {
     //Log.WriteLine(netLogic.Shared.LogType.Network, "SMSG_DESTROY_OBJECT {0}", packet.PacketId.RawId);
     GameGuid guid = new GameGuid(packet.ReadUInt64());
     //Destroy(GameObject.Find(guid.ToString()));
     GetInstance().ObjMgr().Remove(guid);
 }
Esempio n. 2
0
        public void HandleChat(PacketIn packet)
        {
            try
            {

                string channel = null;
                UInt64 guid = 0;
                GameGuid fguid = null, fguid2 = null;
                string username = null;

                byte Type = packet.ReadByte();
                UInt32 Language = packet.ReadUInt32();

                guid = packet.ReadUInt64();
                fguid = new GameGuid(guid);
                packet.ReadInt32();

                if ((ChatMsg)Type == ChatMsg.CHAT_MSG_CHANNEL)
                {
                    channel = packet.ReadString();
                }

                if (Type == 47)
                    return;
                fguid2 = new GameGuid(packet.ReadUInt64());

                UInt32 Length = packet.ReadUInt32();
                string Message = Encoding.Default.GetString(packet.ReadBytes((int)Length));

                //Message = Regex.Replace(Message, @"\|H[a-zA-z0-9:].|h", ""); // Why do i should need spells and quest linked? ;>
                Message = Regex.Replace(Message, @"\|[rc]{1}[a-zA-z0-9]{0,8}", ""); // Colorfull chat message also isn't the most important thing.

                byte afk = 0;

                if (fguid.GetOldGuid() == 0)
                {
                    username = "******";
                }
                else
                {
                    //if (netLogicCore.ObjectMgr.objectExists(fguid))
                        //username = netLogicCore.ObjectMgr.GetObject(fguid).Name;
                }

                if (username == null)
                {

                    ChatQueue que = new ChatQueue();
                    que.GUID = fguid;
                    que.Type = Type;
                    que.Language = Language;
                    if ((ChatMsg)Type == ChatMsg.CHAT_MSG_CHANNEL)
                        que.Channel = channel;
                    que.Length = Length;
                    que.Message = Message;
                    que.AFK = afk;
                    ChatQueued.Add(que);
                    QueryName(guid);
                    return;
                }

                object[] param = new object[] { (ChatMsg)Type, channel, username, Message };
                netInstance.Event(new Event(EventType.EVENT_CHAT_MSG, "0", param));
                //Log.WriteLine(LogType.Chat, "[{1}] {0}", Message, username);
            }
            catch (Exception ex)
            {
                Log.WriteLine(LogType.Error, "Exception Occured");
                Log.WriteLine(LogType.Error, "Message: {0}", ex.Message);
                Log.WriteLine(LogType.Error, "Stacktrace: {0}", ex.StackTrace);
            }
        }
Esempio n. 3
0
        public void HandleCharEnum(PacketIn packet)
        {
            byte count = packet.ReadByte();

            PlayerEnum[] chr = new PlayerEnum[10];
            for (int i = 0; i < count; i++)
            {

                chr[i].GUID = new GameGuid(packet.ReadUInt64());
                chr[i].Name = packet.ReadString();
                chr[i].Race = packet.ReadByte();
                chr[i].Class = packet.ReadByte();
                chr[i].Gender = packet.ReadByte();
                chr[i].Skin = packet.ReadByte();
                chr[i].Face = packet.ReadByte();
                chr[i].HairStyle = packet.ReadByte();
                chr[i].HairColor = packet.ReadByte();
                chr[i].FacialHair = packet.ReadByte();
                chr[i].Level = packet.ReadByte();
                chr[i].ZoneID = packet.ReadUInt32();
                chr[i].MapID = packet.ReadUInt32();
                chr[i].X = packet.ReadFloat();
                chr[i].Y = packet.ReadFloat();
                chr[i].Z = packet.ReadFloat();

                chr[i].Guild = packet.ReadUInt32();
                chr[i].CharacterFlags = packet.ReadUInt32();
                chr[i].CustomizationFlags = packet.ReadUInt32();
                chr[i].FirstLogin = packet.ReadByte();
                chr[i].PetInfoID = packet.ReadUInt32();
                chr[i].PetLevel = packet.ReadUInt32();
                chr[i].PetFamilyID = packet.ReadUInt32();
                chr[i]._items = new PlayerEnumItem[23];
                for (int x = 0; x <= 22; x++)
                {
                    chr[i]._items[x].displayId = packet.ReadUInt32();
                    chr[i]._items[x].inventorytype = packet.ReadByte();
                    chr[i]._items[x].enchant = packet.ReadUInt32(); // enchant (2.4 patch)
                }

               /* packet.ReadByte();
                packet.ReadByte();
                packet.ReadByte();
                packet.ReadByte();*/

                CharacterListExt cx;
                cx.p = chr[i];
                cx.class_ = "classname";
                cx.race = "racename";
                cx.zone = "zonename";
                cx.map_ = "mapname";

                Global.GetInstance().GetWSession().GetCharList().Add(cx);

            }

            #region Default Char Create
            if (count == 0)
            {
                PacketOut outpacket = new PacketOut(WorldServerOpCode.CMSG_CHAR_CREATE);

                outpacket.Write("qweqwe");
                outpacket.Write((byte)1); // race - human
                outpacket.Write((byte)1); // class - warrior
                outpacket.Write((byte)0); // gender - male
                outpacket.Write((byte)1); // skin
                outpacket.Write((byte)1); // face
                outpacket.Write((byte)1); // hair style
                outpacket.Write((byte)1); // hair color
                outpacket.Write((byte)1); // facial hair
                outpacket.Write((byte)1); // outfit id
                Send(outpacket);
                outpacket = new PacketOut(WorldServerOpCode.CMSG_CHAR_ENUM);
                Send(outpacket);
                // return;
            }
            else {

            }
            #endregion

            Log.WriteLine(netLogic.Shared.LogType.Success, "Received info about {0} characters", count);

            PingLoop();
            LevelManager.Load("CharactersList");
        }