/// <summary>
        /// Adds an object to a list of normal activity items
        /// </summary>
        /// <param name="logObject"></param>
        /// <param name="activityItems"></param>
        /// <returns></returns>
        public static LinkedList<BlissHiveLogActivityItem> AddObject(BlissHiveLogObject logObject,
                    LinkedList<BlissHiveLogActivityItem> activityItems)
        {
            LinkedList<BlissHiveLogActivityItem> result =
                new LinkedList<BlissHiveLogActivityItem>();

            foreach (BlissHiveLogActivityItem activityItem in activityItems) {
                result.AddLast(
                    new BlissHiveLogObjectActivityItem(
                        logObject, activityItem.quantity,
                        activityItem.item, activityItem.timestamp
                    )
                );
            }

            return result;
        }
        AddObject(BlissHiveLogObject logObject,
                  LinkedList <BlissHiveLogActivityItem> activityItems)
        {
            LinkedList <BlissHiveLogActivityItem> result =
                new LinkedList <BlissHiveLogActivityItem>();

            foreach (BlissHiveLogActivityItem activityItem in activityItems)
            {
                result.AddLast(
                    new BlissHiveLogObjectActivityItem(
                        logObject, activityItem.quantity,
                        activityItem.item, activityItem.timestamp
                        )
                    );
            }

            return(result);
        }
        /// <summary>
        /// Estimates the object type based on a lot of parameters.
        /// </summary>
        /// <param name="itemSlots"></param>
        /// <param name="backpackSlots"></param>
        /// <param name="weaponSlots"></param>
        /// <param name="wheels"></param>
        /// <param name="glass"></param>
        /// <param name="hasRotor"></param>
        /// <param name="hasHull"></param>
        /// <param name="hasEngine"></param>
        /// <param name="hasFuel"></param>
        /// <param name="hasFuelTankParts"></param>
        /// <returns>A list with items which may be the object.</returns>
        public static LinkedList <BlissHiveLogObjectType> EstimateObjectType(
            BlissHiveLogObject blissHiveLogObject)
        {
            LinkedList <BlissHiveLogObjectType> result = new LinkedList <BlissHiveLogObjectType>();

            if (blissHiveLogObject.GetItemCount() <= 50 &&
                blissHiveLogObject.GetBackpackCount() <= 5 &&
                blissHiveLogObject.GetWeaponCount() <= 10 &&
                blissHiveLogObject.GetWheelCount() == 0 &&
                blissHiveLogObject.GetGlassCount() == 0 &&
                !blissHiveLogObject.HasRotor() &&
                !blissHiveLogObject.HasHull() &&
                !blissHiveLogObject.HasEngine() &&
                !blissHiveLogObject.HasFuel() &&
                !blissHiveLogObject.HasFuelTankParts())
            {
                // This must only be a tent, end of story!
                result.AddLast(BlissHiveLogObjectType.tent);
                return(result);
            }

            foreach (BlissHiveLogObjectType type in BlissHiveLogObjectType.typeList)
            {
                if (type.itemSlots < blissHiveLogObject.GetItemCount() ||
                    type.backpackSlots < blissHiveLogObject.GetBackpackCount() ||
                    type.weaponSlots < blissHiveLogObject.GetWeaponCount() ||
                    type.wheels < blissHiveLogObject.GetWheelCount() ||
                    type.glass < blissHiveLogObject.GetGlassCount() ||
                    (!type.hasRotor && blissHiveLogObject.HasRotor()) ||
                    (!type.hasFuel && blissHiveLogObject.HasFuel()) ||
                    (!type.hasFuelTankParts && blissHiveLogObject.HasFuelTankParts()) ||
                    (!type.hasHull && blissHiveLogObject.HasHull()) ||
                    (!type.hasEngine && blissHiveLogObject.HasEngine())
                    )
                {
                    continue;
                }
                result.AddLast(type);
            }
            return(result);
        }
Exemplo n.º 4
0
        public override LogParseResult Parse()
        {
            LinkedList <LogParseResultEntry> result = new LinkedList <LogParseResultEntry>();

            int count = 0;
            BlissHiveLogContainer blissHiveLogContainer = (BlissHiveLogContainer)this.container;

            // proc_updateObjectInventory(56849,
            // '[[["glock17_EP1","ItemToolbox","ItemHatchet","LeeEnfield"],[1,1,1,1]],[["ItemPainkiller","ItemSodaCoke","ItemEpinephrine","20Rnd_762x51_DMR","15Rnd_9x19_M9SD","15Rnd_9x19_M9","FoodCanFrankBeans","17Rnd_9x19_glock17","SmokeShellGreen","ItemBandage","ItemMorphine","ItemJerrycanEmpty","ItemJerrycan","PartEngine"],[3,3,1,2,1,1,1,2,1,1,1,2,1,1]],[[],[]]]
            foreach (BlissHiveLogEntry entry in container.logs)
            {
                if (entry.functionName == "proc_updateObjectInventory")
                {
                    BlissHiveLogObject logObject = GetObjectByUpdateID(entry.parameters[0]);
                    String[]           split     = entry.parameters[1].Split(new String[1] {
                        "],["
                    }, StringSplitOptions.None);

                    BlissHiveLogInventory inventory = new BlissHiveLogInventory(entry);
                    for (int i = 0; i < split.Length; i += 2)
                    {
                        String[] items = split[i].Replace("\"", "")
                                         .Replace("[", "")
                                         .Replace("]", "")
                                         .Split(',');
                        String[] quantities = split[i + 1].Replace("\"", "")
                                              .Replace("[", "")
                                              .Replace("]", "")
                                              .Split(',');

                        for (int j = 0; j < items.Length; j++)
                        {
                            if (items[j] == "")
                            {
                                continue;
                            }
                            BlissHiveLogItem logItem = new BlissHiveLogItem(items[j], BlissHiveLogItem.Location.Inventory);
                            logItem.quantity = Int32.Parse(quantities[j]);


                            // Weapons
                            if (i == 0)
                            {
                                logItem.itemType = BlissHiveLogItemType.Weapon;
                            }
                            // Items
                            else if (i == 2)
                            {
                                logItem.itemType = BlissHiveLogItemType.Item;
                            }
                            // Backpacks
                            else if (i == 4)
                            {
                                logItem.itemType = BlissHiveLogItemType.Backpack;
                            }

                            inventory.items.AddLast(logItem);
                        }
                    }

                    if (inventory.items.Count > 0)
                    {
                        logObject.inventories.AddLast(inventory);
                    }
                }

                this.onParseProgressListeners(count, this.container.logs.Length);
                count++;
            }

            this.onParseProgressListeners = null;
            return(new LogParseResult(result));
        }
        /// <summary>
        /// Estimates the object type based on a lot of parameters.
        /// </summary>
        /// <param name="itemSlots"></param>
        /// <param name="backpackSlots"></param>
        /// <param name="weaponSlots"></param>
        /// <param name="wheels"></param>
        /// <param name="glass"></param>
        /// <param name="hasRotor"></param>
        /// <param name="hasHull"></param>
        /// <param name="hasEngine"></param>
        /// <param name="hasFuel"></param>
        /// <param name="hasFuelTankParts"></param>
        /// <returns>A list with items which may be the object.</returns>
        public static LinkedList<BlissHiveLogObjectType> EstimateObjectType(
            BlissHiveLogObject blissHiveLogObject)
        {
            LinkedList<BlissHiveLogObjectType> result = new LinkedList<BlissHiveLogObjectType>();

            if (blissHiveLogObject.GetItemCount() <= 50 &&
                blissHiveLogObject.GetBackpackCount() <= 5 &&
                blissHiveLogObject.GetWeaponCount() <= 10 &&
                blissHiveLogObject.GetWheelCount() == 0 &&
                blissHiveLogObject.GetGlassCount() == 0 &&
                !blissHiveLogObject.HasRotor() &&
                !blissHiveLogObject.HasHull() &&
                !blissHiveLogObject.HasEngine() &&
                !blissHiveLogObject.HasFuel() &&
                !blissHiveLogObject.HasFuelTankParts()) {
                // This must only be a tent, end of story!
                result.AddLast(BlissHiveLogObjectType.tent);
                return result;
            }

            foreach (BlissHiveLogObjectType type in BlissHiveLogObjectType.typeList) {
                if (type.itemSlots < blissHiveLogObject.GetItemCount() ||
                    type.backpackSlots < blissHiveLogObject.GetBackpackCount() ||
                    type.weaponSlots < blissHiveLogObject.GetWeaponCount() ||
                    type.wheels < blissHiveLogObject.GetWheelCount() ||
                    type.glass < blissHiveLogObject.GetGlassCount() ||
                    (!type.hasRotor && blissHiveLogObject.HasRotor()) ||
                    (!type.hasFuel && blissHiveLogObject.HasFuel()) ||
                    (!type.hasFuelTankParts && blissHiveLogObject.HasFuelTankParts()) ||
                    (!type.hasHull && blissHiveLogObject.HasHull()) ||
                    (!type.hasEngine && blissHiveLogObject.HasEngine())
                    )
                    continue;
                result.AddLast(type);
            }
            return result;
        }
 public BlissHiveLogObjectActivityItem(BlissHiveLogObject survivor,
     int quantity, BlissHiveLogItem item, String timestamp)
     : base(quantity, item, timestamp)
 {
     this.logObject = survivor;
 }
 public BlissHiveLogObjectActivityItem(BlissHiveLogObject survivor,
                                       int quantity, BlissHiveLogItem item, String timestamp)
     : base(quantity, item, timestamp)
 {
     this.logObject = survivor;
 }
        void blissHivePlayerTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if ((String)e.Node.Tag == "object") {
                this.dayzLogParserForm.blissHiveCardControl.SelectedIndex = 1;
                foreach (BlissHiveLogObject logObject in LogController.GetInstance().blissHiveLogContainer.logObjectContainer.logObjects) {
                    if (e.Node.Text.Contains(logObject.objectUpdateID)) {
                        this.selectedObject = logObject;
                        this.dayzLogParserForm.blissHivePlayerName.Text = "Object " + e.Node.Text;

                        // Fill the formatted data control
                        this.dayzLogParserForm.blissHiveObjectDataFormattedLogDataListView.Items.Clear();
                        foreach (BlissHiveLogEntry logEntry in logObject.logEntries) {
                            this.dayzLogParserForm.blissHiveObjectDataFormattedLogDataListView.Items.Add(
                                new ListViewItem(
                                    new String[3] { logEntry.timestamp, logEntry.functionName,
                                        String.Join(", ", logEntry.parameters) }
                                    )
                                );
                        }

                        // Fill the raw data control
                        StringBuilder stringBuilder = new StringBuilder("");
                        foreach (BlissHiveLogEntry logEntry in logObject.logEntries) {
                            stringBuilder.AppendLine(logEntry.original);
                        }
                        this.dayzLogParserForm.blissHiveObjectDataRawLogDataTextBox.Text = stringBuilder.ToString();

                        // Fill the combo box for the inventories
                        ComboBox inventoryComboBox = this.dayzLogParserForm.blissHiveObjectDataInventoryHistoryComboBox;
                        inventoryComboBox.Items.Clear();

                        foreach (BlissHiveLogInventory inv in logObject.inventories) {
                            inventoryComboBox.Items.Add(inv.originalLogEntry.timestamp);
                        }

                        // If selected, the list views will clear & fill
                        if (inventoryComboBox.Items.Count > 0)
                            inventoryComboBox.SelectedIndex = inventoryComboBox.Items.Count - 1;
                        else {
                            // If not selected, the list views need to be cleared still
                            this.dayzLogParserForm
                                .blissHiveObjectDataInventoryHistoryBackpackListView.Items.Clear();
                            this.dayzLogParserForm
                                .blissHiveObjectDataInventoryHistoryInventoryListView.Items.Clear();
                        }

                        // Fill the health control
                        this.dayzLogParserForm.blissHiveObjectDataHealthListView.Items.Clear();
                        foreach (BlissHiveLogObjectHealth healthEntry in logObject.health) {
                            this.dayzLogParserForm.blissHiveObjectDataHealthListView.Items.Add(
                                new ListViewItem(new String[2] { healthEntry.part, healthEntry.health + "" }));
                        }

                        // Fill the activity log
                        ListView listView = this.dayzLogParserForm.blissHiveObjectDataActivityLogListView;
                        listView.Items.Clear();

                        foreach (BlissHiveLogActivityItem item in logObject.activity) {
                            ListViewItem listViewItem =
                                new ListViewItem(new String[2] { item.timestamp + "", item.ToString() });
                            listView.Items.Add(listViewItem);
                        }

                        this.dayzLogParserForm.blissHiveObjectDataHealthTypeEstimateTextBox.Text =
                            logObject.EstimateObjectType().Replace(", ", "\r\n");
                    }
                }
            }
        }
 public BlissHiveObjectLogParseResultEntry(LogEntry entry, BlissHiveLogObject logObject)
     : base(entry)
 {
     this.logObject = logObject;
         // this.logObject.lastSignOfActivity = entry.timestampUnix;
 }
        void blissHivePlayerTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if ((String)e.Node.Tag == "object")
            {
                this.dayzLogParserForm.blissHiveCardControl.SelectedIndex = 1;
                foreach (BlissHiveLogObject logObject in LogController.GetInstance().blissHiveLogContainer.logObjectContainer.logObjects)
                {
                    if (e.Node.Text.Contains(logObject.objectUpdateID))
                    {
                        this.selectedObject = logObject;
                        this.dayzLogParserForm.blissHivePlayerName.Text = "Object " + e.Node.Text;

                        // Fill the formatted data control
                        this.dayzLogParserForm.blissHiveObjectDataFormattedLogDataListView.Items.Clear();
                        foreach (BlissHiveLogEntry logEntry in logObject.logEntries)
                        {
                            this.dayzLogParserForm.blissHiveObjectDataFormattedLogDataListView.Items.Add(
                                new ListViewItem(
                                    new String[3] {
                                logEntry.timestamp, logEntry.functionName,
                                String.Join(", ", logEntry.parameters)
                            }
                                    )
                                );
                        }

                        // Fill the raw data control
                        StringBuilder stringBuilder = new StringBuilder("");
                        foreach (BlissHiveLogEntry logEntry in logObject.logEntries)
                        {
                            stringBuilder.AppendLine(logEntry.original);
                        }
                        this.dayzLogParserForm.blissHiveObjectDataRawLogDataTextBox.Text = stringBuilder.ToString();

                        // Fill the combo box for the inventories
                        ComboBox inventoryComboBox = this.dayzLogParserForm.blissHiveObjectDataInventoryHistoryComboBox;
                        inventoryComboBox.Items.Clear();

                        foreach (BlissHiveLogInventory inv in logObject.inventories)
                        {
                            inventoryComboBox.Items.Add(inv.originalLogEntry.timestamp);
                        }

                        // If selected, the list views will clear & fill
                        if (inventoryComboBox.Items.Count > 0)
                        {
                            inventoryComboBox.SelectedIndex = inventoryComboBox.Items.Count - 1;
                        }
                        else
                        {
                            // If not selected, the list views need to be cleared still
                            this.dayzLogParserForm
                            .blissHiveObjectDataInventoryHistoryBackpackListView.Items.Clear();
                            this.dayzLogParserForm
                            .blissHiveObjectDataInventoryHistoryInventoryListView.Items.Clear();
                        }

                        // Fill the health control
                        this.dayzLogParserForm.blissHiveObjectDataHealthListView.Items.Clear();
                        foreach (BlissHiveLogObjectHealth healthEntry in logObject.health)
                        {
                            this.dayzLogParserForm.blissHiveObjectDataHealthListView.Items.Add(
                                new ListViewItem(new String[2] {
                                healthEntry.part, healthEntry.health + ""
                            }));
                        }

                        // Fill the activity log
                        ListView listView = this.dayzLogParserForm.blissHiveObjectDataActivityLogListView;
                        listView.Items.Clear();

                        foreach (BlissHiveLogActivityItem item in logObject.activity)
                        {
                            ListViewItem listViewItem =
                                new ListViewItem(new String[2] {
                                item.timestamp + "", item.ToString()
                            });
                            listView.Items.Add(listViewItem);
                        }

                        this.dayzLogParserForm.blissHiveObjectDataHealthTypeEstimateTextBox.Text =
                            logObject.EstimateObjectType().Replace(", ", "\r\n");
                    }
                }
            }
        }
Exemplo n.º 11
0
 public BlissHiveObjectLogParseResultEntry(LogEntry entry, BlissHiveLogObject logObject)
     : base(entry)
 {
     this.logObject = logObject;
     // this.logObject.lastSignOfActivity = entry.timestampUnix;
 }