public static void Login(Client client, PacketIn packet) { string user = packet.ReadString(); string pass = packet.ReadString(); ServerConsole.WriteLine("Login request from {0} on ip {1}.", MessageLevel.Message, user, client.IP.ToString()); client.UserLogin(user, pass); }
public void Handle_CreatureQuery(PacketIn packet) { Entry entry = new Entry(); entry.entry = packet.ReadUInt32(); entry.name = packet.ReadString(); entry.blarg = packet.ReadBytes(3); entry.subname = packet.ReadString(); entry.flags = packet.ReadUInt32(); entry.subtype = packet.ReadUInt32(); entry.family = packet.ReadUInt32(); entry.rank = packet.ReadUInt32(); foreach (Object obj in objectMgr.getObjectArray()) { if (obj.Fields != null) { if (obj.Fields[(int)UpdateFields.OBJECT_FIELD_ENTRY] == entry.entry) { obj.Name = entry.name; objectMgr.updateObject(obj); } } } }
public ChatMessage(PacketIn p) { szName = p.ReadString(21); nSize = p.ReadInt16(); nType = (byte)p.ReadByte(); szMessage = p.ReadString(nSize); }
public static void Login(Client client, PacketIn packet) { string user = packet.ReadString(); string pass = packet.ReadString(); ServerConsole.WriteLine("Login request from {0} on ip {1}.", user, client.IP.ToString()); client.UserLogin(user, pass); }
public static void CreateCharacter(Client client, PacketIn packet) { string name = packet.ReadString(); byte type = packet.ReadByte(); byte strength = packet.ReadByte(); byte health = packet.ReadByte(); byte intelligence = packet.ReadByte(); byte wisdom = packet.ReadByte(); byte agility = packet.ReadByte(); byte face = packet.ReadByte(); byte hair = packet.ReadByte(); if ((strength + health + intelligence + wisdom + agility) != 5) { ServerConsole.WriteLine(System.Drawing.Color.Red, "Invalid character creation request from {0}.", client.User.Username ); return; } int playerId = client.CreateCharacter(name, type, strength, health, intelligence, wisdom, agility, face, hair); client.SendPlayerList(); }
public void Handle_NameQuery(PacketIn packet) { WoWGuid guid = new WoWGuid(packet.ReadUInt64()); string name = packet.ReadString(); packet.ReadByte(); Race Race = (Race)packet.ReadUInt32(); Gender Gender = (Gender)packet.ReadUInt32(); Classname Class = (Classname)packet.ReadUInt32(); if (objectMgr.objectExists(guid)) // Update existing Object { Object obj = objectMgr.getObject(guid); obj.Name = name; objectMgr.updateObject(obj); } else // Create new Object -- FIXME: Add to new 'names only' list? { Object obj = new Object(guid); obj.Name = name; objectMgr.addObject(obj); /* Process chat message if we looked them up now */ for (int i = 0; i < ChatQueued.Count; i++) { ChatQueue message = (ChatQueue)ChatQueued[i]; if (message.GUID.GetOldGuid() == guid.GetOldGuid()) { Log.WriteLine(LogType.Chat, "[{1}] {0}", message.Message, name); ChatQueued.Remove(message); } } } }
public CList(PacketIn packet) { packet.Seek(4, System.IO.SeekOrigin.Current); nRace = packet.ReadInt32(); packet.Seek(161, System.IO.SeekOrigin.Current); szName = packet.ReadString(19); packet.Seek(376, System.IO.SeekOrigin.Current); }
public SERVER_LIST(PacketIn p) { last_login_idx = p.ReadUInt16(); count = p.ReadUInt16(); list = new SERVER_INFO[count]; for (int i = 0; i < count; i++) { list[i] = new SERVER_INFO(p.ReadUInt16(), p.ReadString(21), p.ReadByte() == 1 ? true : false, p.ReadString(256), p.ReadString(16), p.ReadInt32(), p.ReadUInt16()); } }
public void HandleRealmlist(PacketIn packetIn) { //packetIn.ReadByte(); UInt16 Length = packetIn.ReadUInt16(); UInt32 Request = packetIn.ReadUInt32(); int realmscount = packetIn.ReadInt16(); //Console.Write(packetIn.ToHex()); Log.WriteLine(LogType.Success, "Got information about {0} realms.", realmscount); Realm[] realms = new Realm[realmscount]; try { for (int i = 0; i < realmscount; i++) { realms[i].Type = packetIn.ReadByte(); realms[i].Color = packetIn.ReadByte(); packetIn.ReadByte(); // unk realms[i].Name = packetIn.ReadString(); realms[i].Address = packetIn.ReadString(); realms[i].Population = packetIn.ReadFloat(); realms[i].NumChars = packetIn.ReadByte(); realms[i].Language = packetIn.ReadByte(); packetIn.ReadByte(); } Realmlist = realms; mCore.Event(new Event(EventType.EVENT_REALMLIST, "", new object[] { Realmlist })); } 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); Disconnect(); } }
public static void CreatePlayer(Client client, PacketIn packet) { string name = packet.ReadString(); byte type = packet.ReadByte(); byte strength = packet.ReadByte(); byte health = packet.ReadByte(); byte intelligence = packet.ReadByte(); byte wisdom = packet.ReadByte(); byte agility = packet.ReadByte(); byte face = packet.ReadByte(); byte hair = packet.ReadByte(); if ((strength + health + intelligence + wisdom + agility) != 5) { client.Send(new Packets.CharacterCreationError(Packets.CHARACTER_CREATION_ERROR.SHARING_POINTS_ERROR)); Hackshield.AddOffense(client, OffenseSeverity.IncorrectPacketDetails); return; } //check if name is valid if (!Utilities.IsAlnum(name)) { client.Send(new Packets.CharacterError(Packets.CHARACTER_ERROR.INVALID_CHARS)); return; } //check if player name is taken if (Player.GetPlayer(name) != null) { client.Send(new Packets.CharacterCreationError(Packets.CHARACTER_CREATION_ERROR.NAME_TAKEN)); return; } int playerId = client.CreatePlayer(name, type, strength, health, intelligence, wisdom, agility, face, hair); client.SendPlayerList(); }
public void HandleCharEnum(PacketIn packet) { byte count = packet.ReadByte(); Character[] characterList = new Character[count]; for (int i = 0; i < count; i++) { characterList[i].GUID = packet.ReadUInt64(); characterList[i].Name = packet.ReadString(); characterList[i].Race = packet.ReadByte(); characterList[i].Class = packet.ReadByte(); packet.ReadByte(); packet.ReadUInt32(); packet.ReadByte(); packet.ReadByte(); packet.ReadUInt32(); characterList[i].MapID = packet.ReadUInt32(); packet.ReadFloat(); packet.ReadFloat(); packet.ReadFloat(); packet.ReadUInt32(); packet.ReadUInt32(); packet.ReadByte(); packet.ReadUInt32(); packet.ReadUInt32(); packet.ReadUInt32(); packet.ReadBytes(9 * 20); } Log.WriteLine(LogType.Success, "Received info about {0} characters", count); Charlist = characterList; mCore.Event(new Event(EventType.EVENT_CHARLIST, "", new object[] { Charlist })); PingLoop(); }
public static void CreatePlayer(Client client, PacketIn packet) { string name = packet.ReadString(); byte type = packet.ReadByte(); byte strength = packet.ReadByte(); byte health = packet.ReadByte(); byte intelligence = packet.ReadByte(); byte wisdom = packet.ReadByte(); byte agility = packet.ReadByte(); byte face = packet.ReadByte(); byte hair = packet.ReadByte(); if((strength + health + intelligence + wisdom + agility) != 5) { client.Send(new Packets.CharacterCreationError(Packets.CHARACTER_CREATION_ERROR.SHARING_POINTS_ERROR)); Hackshield.AddOffense(client, OffenseSeverity.IncorrectPacketDetails); return; } //check if name is valid if (!Utilities.IsAlnum(name)) { client.Send(new Packets.CharacterError(Packets.CHARACTER_ERROR.INVALID_CHARS)); return; } //check if player name is taken if (Player.GetPlayer(name) != null) { client.Send(new Packets.CharacterCreationError(Packets.CHARACTER_CREATION_ERROR.NAME_TAKEN)); return; } int playerId = client.CreatePlayer(name, type, strength, health, intelligence, wisdom, agility, face, hair); client.SendPlayerList(); }
public static void PlayerChat(Client Client, PacketIn packet) { string message = packet.ReadString(); ChatManager.Chat(Client.Character, message); }
public static void PlayerChat(Client client, PacketIn packet) { string message = packet.ReadString(); client.Send(new Packets.Chat(client.Character.Player.Name,message)); }
/// <summary> /// The function which is used to proceed an incoming packet to the active TCPConnection /// </summary> /// <param name="con">The connection which received the packet</param> /// <param name="buf">byte[] array containing the raw content of the received packet</param> /// <param name="start">Start of the content in buf, usually 0</param> /// <param name="size">Size of the packet (minus start)</param> /// <returns>PacketIn -> Converted raw package to MemoryStream based PacketIn</returns> public PacketIn ProcessPacket(TCPConnection con, byte[] buf, int start, int size) { PacketIn packet = new PacketIn(buf, start, size); switch (packet.ID) { case 0: // ResultMsg var res = new AUTH_PACKETS.RESULT(packet.ReadUInt16(), packet.ReadUInt16(), packet.ReadInt32()); if (res.nRequestPacket == 2005) { if (res.nResult == 0) { con.SendTCP(CreateReportPacket()); con.SendTCP(CreateCharacterListPacket()); } else { con.Disconnect(); XLog.Log("Can't connect to game server. Result: {0} - disconnecting...", res.nResult); } } break; case 2004: // CharacterList m_iGameCharacterList = new GAME_PACKETS.CharacterList(packet); XLog.Log("Character selection. Please use /use ID to select a character."); for (int i = 0; i < m_iGameCharacterList.nCount; i++) { XLog.Log("-> Character {0}: {1}", i + 1, m_iGameCharacterList.nList[i].szName); } break; case 21: // ChatLocal var tmp = packet.ReadInt32(); string szSource = m_dHandles.ContainsKey(tmp) ? m_dHandles[tmp] : "INVALID-HANDLE:" + tmp; int nLen = packet.ReadByte(); int nType = packet.ReadByte(); XLog.AddMessage(szSource, packet.ReadString(nLen), nType); break; case 22: // ChatMsg var pMessage = new GAME_PACKETS.ChatMessage(packet); XLog.AddMessage(pMessage.szName, pMessage.szMessage, pMessage.nType); break; case 3: // Enter: Handle -> Name, small hack so we don't have to read the full packet (which is f*****g large) if (packet.ReadByte() == 0) { int key = packet.ReadInt32(); if (m_dHandles.ContainsKey(key)) { m_dHandles.Remove(key); } packet.Seek(77, System.IO.SeekOrigin.Current); string value = packet.ReadString(19); m_dHandles.Add(key, value); } break; case 507: // Property: Own Name -> Handle if (m_dHandles.ContainsKey(0) && m_tPingThread == null) { var szName = m_dHandles[0]; m_dHandles.Remove(0); m_dHandles.Add(packet.ReadInt32(), szName); m_tPingThread = new System.Threading.Thread(new System.Threading.ThreadStart(SendPingPacket)); m_tPingThread.IsBackground = true; m_tPingThread.Start(); } break; default: break; } return(packet); }
public static void PlayerChat(Client client, PacketIn packet) { string message = packet.ReadString(); client.Send(new Packets.Chat(client.Character.Player.Name, message)); }
public void HandleChat(PacketIn packet) { try { string channel = null; UInt64 guid = 0; WoWGuid fguid = null, fguid2 = null; string username = null; byte Type = packet.ReadByte(); UInt32 Language = packet.ReadUInt32(); guid = packet.ReadUInt64(); fguid = new WoWGuid(guid); packet.ReadInt32(); if ((ChatMsg)Type == ChatMsg.Channel) { channel = packet.ReadString(); } if (Type == 47) { return; } fguid2 = new WoWGuid(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 (objectMgr.objectExists(fguid)) { username = objectMgr.getObject(fguid).Name; } } if (username == null) { ChatQueue que = new ChatQueue(); que.GUID = fguid; que.Type = Type; que.Language = Language; if ((ChatMsg)Type == ChatMsg.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 }; mCore.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); } }