Ejemplo n.º 1
0
        private void CopyEventTime(object sender, MouseEventArgs e, SniffedEvent sniffedEvent)
        {
            string unixTime = (sniffedEvent.eventTime / 1000).ToString();

            txtStartTime.Text = unixTime;
            txtEndTime.Text   = unixTime;
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
            }
            }
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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;
            }
        }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
        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;
            }
            }
        }
Ejemplo n.º 10
0
        // 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);
        }