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); }
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); } }
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"); }