private void CopyEventTime(object sender, MouseEventArgs e, SniffedEvent sniffedEvent) { string unixTime = (sniffedEvent.eventTime / 1000).ToString(); txtStartTime.Text = unixTime; txtEndTime.Text = unixTime; }
private void CopyEventTarget(object sender, MouseEventArgs e, SniffedEvent sniffedEvent) { if (sniffedEvent.targetGuid.IsEmpty()) { MessageBox.Show("Event has no target!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } SetObjectFilterFieldsFromGuid(sniffedEvent.targetGuid); }
private void lstEvents_DrawItem(object sender, DrawListViewItemEventArgs e) { e.DrawDefault = true; switch ((RowColorType)cmbRowColors.SelectedIndex) { case RowColorType.None: { e.Item.BackColor = Color.White; e.Item.UseItemStyleForSubItems = true; return; } case RowColorType.Alternating: { if ((e.ItemIndex % 2) == 1) { e.Item.BackColor = RowColor_Grey; e.Item.UseItemStyleForSubItems = true; } return; } case RowColorType.SourceBased: { SniffedEvent sniffedEvent = e.Item.Tag as SniffedEvent; if (sniffedEvent.sourceGuid.IsEmpty()) { e.Item.BackColor = Color.White; } else if (sniffedEvent.sourceGuid.GetObjectType() == ObjectType.GameObject) { e.Item.BackColor = RowColor_GameObject; } else if (sniffedEvent.sourceGuid.GetObjectType() == ObjectType.Creature) { e.Item.BackColor = RowColor_Creature; } else if (sniffedEvent.sourceGuid.GetObjectType() == ObjectType.Player) { e.Item.BackColor = RowColor_Player; } else { e.Item.BackColor = RowColor_Misc; } e.Item.UseItemStyleForSubItems = true; return; } } }
private void btnReplayJumpToEventTime_Click(object sender, EventArgs e) { if (lstEvents.SelectedItems.Count == 0) { MessageBox.Show("No event selected."); return; } ListViewItem selectedItem = lstEvents.SelectedItems[0]; SniffedEvent sniffedEvent = (SniffedEvent)selectedItem.Tag; uint unixTime = (uint)(sniffedEvent.eventTime / 1000); SendChatCommand("settime " + unixTime.ToString()); }
private void lstEvents_SelectedIndexChanged(object sender, EventArgs e) { if (lstEvents.SelectedItems.Count == 0) { txtEventDescription.Text = ""; return; } ListViewItem selectedItem = lstEvents.SelectedItems[0]; SniffedEvent sniffedEvent = (SniffedEvent)selectedItem.Tag; txtEventDescription.Text = "-- Generic Information --" + Environment.NewLine; txtEventDescription.Text += "Event Type: " + SniffedEventTypesDict[sniffedEvent.eventType] + Environment.NewLine; txtEventDescription.Text += "Event Time: " + sniffedEvent.eventTime.ToString() + " (" + Utility.GetDateTimeFromUnixTimeMs(sniffedEvent.eventTime).ToString() + ")" + Environment.NewLine; txtEventDescription.Text += "Source: " + sniffedEvent.sourceGuid.ToString() + Environment.NewLine; txtEventDescription.Text += "Target: " + sniffedEvent.targetGuid.ToString() + Environment.NewLine + Environment.NewLine; txtEventDescription.Text += "-- Event Specific Data --" + Environment.NewLine + sniffedEvent.longDescription; }
private void btnReplayJumpToEventTarget_Click(object sender, EventArgs e) { if (lstEvents.SelectedItems.Count == 0) { MessageBox.Show("No event selected."); return; } ListViewItem selectedItem = lstEvents.SelectedItems[0]; SniffedEvent sniffedEvent = (SniffedEvent)selectedItem.Tag; if (sniffedEvent.targetGuid.IsEmpty()) { MessageBox.Show("Event has no target."); return; } SendTeleportToGuid(sniffedEvent.targetGuid); }
private void UpdateTimeDisplayForAllEvents() { ulong firstEventTime = 0; ulong previousEventTime = 0; for (int i = 0; i < lstEvents.Items.Count; i++) { ListViewItem lvi = lstEvents.Items[i]; SniffedEvent sniffedEvent = (SniffedEvent)lvi.Tag; if (i == 0) { firstEventTime = sniffedEvent.eventTime; previousEventTime = sniffedEvent.eventTime; } lvi.SubItems[1].Text = FormatTimeString(sniffedEvent.eventTime, firstEventTime, previousEventTime); previousEventTime = sniffedEvent.eventTime; } }
private void RemoveEventsWithTarget(object sender, MouseEventArgs e, ObjectGuid targetGuid) { if (targetGuid.IsEmpty()) { MessageBox.Show("Event has no target!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } List <ListViewItem> itemsToRemove = new List <ListViewItem>(); for (int i = 0; i < lstEvents.Items.Count; i++) { SniffedEvent sniffedEvent = (SniffedEvent)lstEvents.Items[i].Tag; if (sniffedEvent.targetGuid == targetGuid) { itemsToRemove.Add(lstEvents.Items[i]); } } foreach (var item in itemsToRemove) { lstEvents.Items.Remove(item); } }
private void HandlePacket(byte[] buffer) { ByteBuffer packet = new ByteBuffer(buffer); byte opcode = packet.ReadUInt8(); switch ((GUIOpcode)opcode) { case GUIOpcode.SMSG_EVENT_TYPE_LIST: { SniffedEventTypesDict.Clear(); uint startTime = packet.ReadUInt32(); txtStartTime.Text = startTime.ToString(); uint endTime = packet.ReadUInt32(); txtEndTime.Text = endTime.ToString(); uint eventsCount = packet.ReadUInt32(); for (uint i = 0; i < eventsCount; i++) { uint eventId = packet.ReadUInt32(); int imageIndex = packet.ReadInt32(); string eventName = packet.ReadCString(); SniffedEventTypesDict.Add(eventId, eventName); SniffedEventImagesDict.Add(eventId, imageIndex); SniffedEventCategoryDict.Add(eventId, DetermineEventCategory(eventName)); } UpdateEventTypesList(); btnAdd_Click(null, null); break; } case GUIOpcode.SMSG_EVENT_DATA_LIST: { uint eventsCount = packet.ReadUInt32(); ulong firstEventTime = 0; ulong previousEventTime = 0; for (uint i = 0; i < eventsCount; i++) { SniffedEvent eventData = new SniffedEvent(); eventData.uniqueIdentifier = packet.ReadUInt32(); eventData.eventType = packet.ReadUInt32(); eventData.eventTime = packet.ReadUInt64(); eventData.sourceGuid = new ObjectGuid(packet.ReadUInt64()); eventData.targetGuid = new ObjectGuid(packet.ReadUInt64()); string shortDescription = packet.ReadCString(); eventData.longDescription = packet.ReadCString(); if (i == 0) { firstEventTime = eventData.eventTime; previousEventTime = eventData.eventTime; } ListViewItem newItem = new ListViewItem(); newItem.Text = ""; newItem.SubItems.Add(FormatTimeString(eventData.eventTime, firstEventTime, previousEventTime)); newItem.SubItems.Add(shortDescription); newItem.ImageIndex = SniffedEventImagesDict[eventData.eventType]; newItem.Tag = eventData; lstEvents.Items.Add(newItem); previousEventTime = eventData.eventTime; } break; } case GUIOpcode.SMSG_EVENT_DATA_END: { Text = "Sniff Browser - Showing " + lstEvents.Items.Count.ToString() + " Events"; btnRefresh.Enabled = true; break; } } }
// Script And Waypoint Making private void btnMakeScript_Click(object sender, EventArgs e) { if (lstEvents.SelectedItems.Count == 0) { MessageBox.Show("No event selected."); return; } string mainScriptIdStr = "1"; if (Utility.ShowInputDialog(ref mainScriptIdStr, "Main Script Id") != DialogResult.OK) { return; } uint mainScriptId = UInt32.Parse(mainScriptIdStr); string genericScriptIdStr = "50000"; if (Utility.ShowInputDialog(ref genericScriptIdStr, "Generic Script Id") != DialogResult.OK) { return; } uint genericScriptId = UInt32.Parse(genericScriptIdStr); string tableName = "generic_scripts"; if (Utility.ShowInputDialog(ref tableName, "Table Name") != DialogResult.OK) { return; } string commentPrefix = ""; if (Utility.ShowInputDialog(ref commentPrefix, "Comment Prefix") != DialogResult.OK) { return; } bool hasGameObjectSpawn = false; List <object> guidList = new List <object>(); guidList.Add(ObjectGuid.Empty); foreach (ListViewItem lvi in lstEvents.SelectedItems) { SniffedEvent sniffedEvent = (SniffedEvent)lvi.Tag; if (!sniffedEvent.sourceGuid.IsEmpty() && !guidList.Contains(sniffedEvent.sourceGuid)) { guidList.Add(sniffedEvent.sourceGuid); } if (!sniffedEvent.targetGuid.IsEmpty() && !guidList.Contains(sniffedEvent.targetGuid)) { guidList.Add(sniffedEvent.targetGuid); } if (sniffedEvent.sourceGuid.GetObjectType() == ObjectType.GameObject && lvi.SubItems[2].Text.Contains("spawns")) { hasGameObjectSpawn = true; } } FormListSelector frmListSelector1 = new FormListSelector(guidList, "Make Script", "Select source object:"); if (frmListSelector1.ShowDialog() != DialogResult.OK) { return; } ObjectGuid sourceGuid = (ObjectGuid)guidList[frmListSelector1.ReturnValue]; FormListSelector frmListSelector2 = new FormListSelector(guidList, "Make Script", "Select target object:"); if (frmListSelector2.ShowDialog() != DialogResult.OK) { return; } byte saveGameObjectSpawnsToDatabase = 0; if (hasGameObjectSpawn && MessageBox.Show("Save gameobject spawns to database?", "Make Script", MessageBoxButtons.YesNo) == DialogResult.Yes) { saveGameObjectSpawnsToDatabase = 1; } ObjectGuid targetGuid = (ObjectGuid)guidList[frmListSelector1.ReturnValue]; ByteBuffer packet = new ByteBuffer(); packet.WriteUInt8((byte)GUIOpcode.CMSG_MAKE_SCRIPT); packet.WriteUInt32(mainScriptId); packet.WriteUInt32(genericScriptId); packet.WriteCString(tableName); packet.WriteCString(commentPrefix); packet.WriteUInt64(sourceGuid.RawGuid); packet.WriteUInt64(targetGuid.RawGuid); packet.WriteUInt8(saveGameObjectSpawnsToDatabase); packet.WriteUInt32((uint)lstEvents.SelectedItems.Count); foreach (ListViewItem lvi in lstEvents.SelectedItems) { SniffedEvent sniffedEvent = (SniffedEvent)lvi.Tag; packet.WriteUInt32(sniffedEvent.uniqueIdentifier); } SendPacket(packet); }