void HandleNpcTextQuery(QueryNPCText packet) { NpcText npcText = Global.ObjectMgr.GetNpcText(packet.TextID); QueryNPCTextResponse response = new QueryNPCTextResponse(); response.TextID = packet.TextID; if (npcText != null) { for (byte i = 0; i < SharedConst.MaxNpcTextOptions; ++i) { response.Probabilities[i] = npcText.Data[i].Probability; response.BroadcastTextID[i] = npcText.Data[i].BroadcastTextID; if (!response.Allow && npcText.Data[i].BroadcastTextID != 0) { response.Allow = true; } } } if (!response.Allow) { Log.outError(LogFilter.Sql, "HandleNpcTextQuery: no BroadcastTextID found for text {0} in `npc_text table`", packet.TextID); } SendPacket(response); }
public static void HandleNpcTextUpdate(Packet packet) { var npcText = new NpcText(); var entry = packet.ReadEntry("Entry"); if (entry.Value) // Can be masked { return; } var size = packet.ReadInt32("Size"); var data = packet.ReadBytes(size); var hasData = packet.ReadBit(); if (!hasData) { return; // nothing to do } var pkt = new Packet(data, packet.Opcode, packet.Time, packet.Direction, packet.Number, packet.Writer, packet.FileName); npcText.Probabilities = new float[8]; for (var i = 0; i < 8; ++i) { npcText.Probabilities[i] = pkt.ReadSingle("Probability", i); } for (var i = 0; i < 8; ++i) { pkt.ReadInt32("Broadcast Text Id", i); } }
public static void HandleNpcTextUpdate(Packet packet) { var npcText = new NpcText(); var entry = packet.ReadUInt32("Entry"); npcText.Probabilities = new float[8]; npcText.Texts1 = new string[8]; npcText.Texts2 = new string[8]; npcText.Languages = new Language[8]; npcText.EmoteDelays = new uint[8][]; npcText.EmoteIds = new EmoteType[8][]; for (var i = 0; i < 8; i++) { npcText.Probabilities[i] = packet.ReadSingle("Probability", i); npcText.Texts1[i] = packet.ReadCString("Text 1", i); npcText.Texts2[i] = packet.ReadCString("Text 2", i); npcText.Languages[i] = packet.ReadEnum <Language>("Language", TypeCode.Int32, i); npcText.EmoteDelays[i] = new uint[3]; npcText.EmoteIds[i] = new EmoteType[3]; for (var j = 0; j < 3; j++) { npcText.EmoteDelays[i][j] = packet.ReadUInt32("Emote Delay", i, j); npcText.EmoteIds[i][j] = packet.ReadEnum <EmoteType>("Emote ID", TypeCode.UInt32, i, j); } } Stuffing.NpcTexts.TryAdd(entry, npcText); }
public static void HandleNpcTextUpdate(Packet packet) { var npcText = new NpcText(); var hasData = packet.ReadBit("hasData"); var entry = packet.ReadEntry("TextID"); if (entry.Value) // Can be masked { return; } if (!hasData) { return; // nothing to do } var size = packet.ReadInt32("Size"); npcText.Probabilities = new float[8]; for (var i = 0; i < 8; ++i) { npcText.Probabilities[i] = packet.ReadSingle("Probability", i); } for (var i = 0; i < 8; ++i) { packet.ReadInt32("Unknown Id", i); } }
public static void HandleNpcTextUpdate(Packet packet) { var entry = packet.ReadEntry("Entry"); if (entry.Value) // Can be masked { return; } NpcText npcText = new NpcText { ID = (uint)entry.Key }; npcText.Probabilities = new float?[8]; npcText.Texts0 = new string[8]; npcText.Texts1 = new string[8]; npcText.Languages = new Language?[8]; npcText.EmoteDelays = new uint?[8][]; npcText.Emotes = new EmoteType?[8][]; var proto = packet.Holder.NpcTextOld = new() { Entry = npcText.ID.Value }; for (int i = 0; i < 8; i++) { var textEntry = new PacketNpcTextOldEntry(); npcText.Probabilities[i] = textEntry.Probability = packet.ReadSingle("Probability", i); npcText.Texts0[i] = textEntry.Text0 = packet.ReadCString("Text0", i); npcText.Texts1[i] = textEntry.Text1 = packet.ReadCString("Text1", i); npcText.Languages[i] = packet.ReadInt32E <Language>("Language", i); textEntry.Language = (int?)npcText.Languages[i] ?? 0; npcText.EmoteDelays[i] = new uint?[3]; npcText.Emotes[i] = new EmoteType?[3]; for (int j = 0; j < 3; j++) { var emote = new BroadcastTextEmote(); npcText.EmoteDelays[i][j] = emote.Delay = packet.ReadUInt32("EmoteDelay", i, j); npcText.Emotes[i][j] = packet.ReadUInt32E <EmoteType>("EmoteID", i, j); emote.EmoteId = (uint?)npcText.Emotes[i][j] ?? 0; textEntry.Emotes.Add(emote); } proto.Texts.Add(textEntry); } packet.AddSniffData(StoreNameType.NpcText, entry.Key, "QUERY_RESPONSE"); Storage.NpcTexts.Add(npcText, packet.TimeSpan); } }
public static void HandleNpcTextUpdate(Packet packet) { var entry = packet.ReadEntry("Entry"); if (entry.Value) // Can be masked { return; } NpcText npcText = new NpcText { ID = (uint)entry.Key }; npcText.Probabilities = new float[8]; npcText.Texts1 = new string[8]; npcText.Texts2 = new string[8]; npcText.Languages = new Language[8]; npcText.EmoteDelays = new uint[8][]; npcText.EmoteIds = new EmoteType[8][]; for (int i = 0; i < 8; i++) { npcText.Probabilities[i] = packet.ReadSingle("Probability", i); npcText.Texts1[i] = packet.ReadCString("Text 1", i); npcText.Texts2[i] = packet.ReadCString("Text 2", i); npcText.Languages[i] = packet.ReadInt32E <Language>("Language", i); npcText.EmoteDelays[i] = new uint[3]; npcText.EmoteIds[i] = new EmoteType[3]; for (int j = 0; j < 3; j++) { npcText.EmoteDelays[i][j] = packet.ReadUInt32("Emote Delay", i, j); npcText.EmoteIds[i][j] = packet.ReadUInt32E <EmoteType>("Emote ID", i, j); } } packet.AddSniffData(StoreNameType.NpcText, entry.Key, "QUERY_RESPONSE"); Storage.NpcTexts.Add(npcText, packet.TimeSpan); }
private static IPacket GetNpcTextUpdatePkt(NpcTexts texts) { IPacket responce = WorldPacketFactory.Create(WMSG.SMSG_NPC_TEXT_UPDATE); BinaryWriter writer = responce.CreateWriter(); writer.Write(texts.Id); for (int i = 0; i < 8; i++) { NpcText text = texts.Texts[i]; writer.Write(text.Probability); writer.WriteCString(text.Text0); writer.WriteCString(text.Text1); writer.Write(text.Language); for (int j = 0; (j < 3); j++) { writer.Write(text.Emote[j, 0]); writer.Write(text.Emote[j, 1]); } } return(responce); }