示例#1
0
        /// <summary>
        /// Loads the activity log of all survivors. MUST LOAD SURVIVORS AND INVENTORIES FIRST.
        /// </summary>
        /// <param name="blissHive">The hive to parse</param>
        public void LoadObjectActivity(BlissHiveLogContainer blissHive)
        {
            BlissHiveObjectActivityLogParser parser = new BlissHiveObjectActivityLogParser(blissHive);

            parser.onParseProgressListeners += this.onParseProgressListeners;

            LogParseResult result = parser.Parse();

            foreach (BlissHiveObjectActivityLogParseResultEntry entry in result.result)
            {
                if (entry.changedItems.Count > 0)
                {
                    foreach (BlissHiveLogObject logObject in this.logObjects)
                    {
                        BlissHiveLogObjectActivityItem castItem =
                            (BlissHiveLogObjectActivityItem)entry.changedItems.ElementAt(0);

                        if (logObject.objectUpdateID == castItem.logObject.objectUpdateID)
                        {
                            foreach (BlissHiveLogObjectActivityItem item in entry.changedItems)
                            {
                                logObject.activity.AddLast(item);
                            }
                        }
                    }
                }
            }

            // Result is kinda pointless with this parse

            this.onParseProgressListeners = null;
        }
        /// <summary>
        /// Loads the activity log of all survivors. MUST LOAD SURVIVORS AND INVENTORIES FIRST.
        /// </summary>
        /// <param name="blissHive">The hive to parse</param>
        public void LoadSurvivorActivity(BlissHiveLogContainer blissHive)
        {
            BlissHiveSurvivorActivityLogParser parser = new BlissHiveSurvivorActivityLogParser(blissHive);
            parser.onParseProgressListeners += this.onParseProgressListeners;

            LogParseResult result = parser.Parse();

            foreach (BlissHiveSurvivorActivityLogParseResultEntry entry in result.result) {
                if( entry.changedItems.Count > 0 ){
                    foreach (BlissHiveLogSurvivor survivor in this.survivors) {
                        BlissHiveLogSurvivorActivityItem castItem =
                            (BlissHiveLogSurvivorActivityItem)entry.changedItems.ElementAt(0);

                        if (survivor.survivorID == castItem.survivor.survivorID) {
                            foreach( BlissHiveLogSurvivorActivityItem item in entry.changedItems){
                                survivor.activity.AddLast(item);
                            }
                        }
                    }
                }
            }

            // Result is kinda pointless with this parse

            this.onParseProgressListeners = null;
        }
        /// <summary>
        /// Loads the activity log of all survivors. MUST LOAD SURVIVORS AND INVENTORIES FIRST.
        /// </summary>
        /// <param name="blissHive">The hive to parse</param>
        public void LoadSurvivorActivity(BlissHiveLogContainer blissHive)
        {
            BlissHiveSurvivorActivityLogParser parser = new BlissHiveSurvivorActivityLogParser(blissHive);

            parser.onParseProgressListeners += this.onParseProgressListeners;

            LogParseResult result = parser.Parse();

            foreach (BlissHiveSurvivorActivityLogParseResultEntry entry in result.result)
            {
                if (entry.changedItems.Count > 0)
                {
                    foreach (BlissHiveLogSurvivor survivor in this.survivors)
                    {
                        BlissHiveLogSurvivorActivityItem castItem =
                            (BlissHiveLogSurvivorActivityItem)entry.changedItems.ElementAt(0);

                        if (survivor.survivorID == castItem.survivor.survivorID)
                        {
                            foreach (BlissHiveLogSurvivorActivityItem item in entry.changedItems)
                            {
                                survivor.activity.AddLast(item);
                            }
                        }
                    }
                }
            }

            // Result is kinda pointless with this parse

            this.onParseProgressListeners = null;
        }
        /// <summary>
        /// Loads the activity log of all survivors. MUST LOAD SURVIVORS AND INVENTORIES FIRST.
        /// </summary>
        /// <param name="blissHive">The hive to parse</param>
        public void LoadObjectActivity(BlissHiveLogContainer blissHive)
        {
            BlissHiveObjectActivityLogParser parser = new BlissHiveObjectActivityLogParser(blissHive);
            parser.onParseProgressListeners += this.onParseProgressListeners;

            LogParseResult result = parser.Parse();

            foreach (BlissHiveObjectActivityLogParseResultEntry entry in result.result) {
                if (entry.changedItems.Count > 0) {
                    foreach (BlissHiveLogObject logObject in this.logObjects) {
                        BlissHiveLogObjectActivityItem castItem =
                            (BlissHiveLogObjectActivityItem)entry.changedItems.ElementAt(0);

                        if (logObject.objectUpdateID == castItem.logObject.objectUpdateID) {
                            foreach (BlissHiveLogObjectActivityItem item in entry.changedItems) {
                                logObject.activity.AddLast(item);
                            }
                        }
                    }
                }
            }

            // Result is kinda pointless with this parse

            this.onParseProgressListeners = null;
        }
        public override LogParseResult Parse()
        {
            LinkedList <LogParseResultEntry> result = new LinkedList <LogParseResultEntry>();

            BlissHiveLogContainer blissHiveLogContainer = (BlissHiveLogContainer)this.container;

            foreach (BlissHiveLogObject logObject in blissHiveLogContainer.logObjectContainer.logObjects)
            {
                for (int i = 0; i < logObject.inventories.Count - 1; i++)
                {
                    BlissHiveLogInventory inv     = logObject.inventories.ElementAt(i);
                    BlissHiveLogInventory nextInv = logObject.inventories.ElementAt(i + 1);

                    LinkedList <BlissHiveLogActivityItem> changedItems =
                        BlissHiveLogInventory.GetItemDifference(inv, nextInv);

                    changedItems = BlissHiveLogInventory.AddObject(logObject, changedItems);

                    BlissHiveObjectActivityLogParseResultEntry change =
                        new BlissHiveObjectActivityLogParseResultEntry(nextInv.originalLogEntry);
                    change.changedItems = changedItems;

                    result.AddLast(change);
                }
            }

            this.onParseProgressListeners = null;
            return(new LogParseResult(result));
        }
        /// <summary>
        /// Loads the inventory of all survivors. MUST LOAD SURVIVORS FIRST.
        /// </summary>
        /// <param name="blissHive">The hive to parse</param>
        public void LoadSurvivorInventory(BlissHiveLogContainer blissHive)
        {
            BlissHiveSurvivorInventoryLogParser parser = new BlissHiveSurvivorInventoryLogParser(blissHive);
            parser.onParseProgressListeners += this.onParseProgressListeners;

            LogParseResult result = parser.Parse();
            // Result is kinda pointless with this parse

            this.onParseProgressListeners = null;
        }
        /// <summary>
        /// Loads the survivors into the container list.
        /// </summary>
        /// <param name="blissHive">The blisshive to load survivors from</param>
        public void LoadObjects(BlissHiveLogContainer blissHive)
        {
            BlissHiveObjectLogParser parser = new BlissHiveObjectLogParser(blissHive);
            parser.onParseProgressListeners += this.onParseProgressListeners;
            LogParseResult result = parser.Parse();

            foreach (BlissHiveObjectLogParseResultEntry entry in result.result) {
                this.logObjects.AddLast(entry.logObject);
            }
            this.onParseProgressListeners = null;
        }
        /// <summary>
        /// Loads the debug monitors of all survivors. MUST LOAD SURVIVORS FIRST.
        /// </summary>
        /// <param name="blissHive">The hive to parse</param>
        public void LoadSurvivorDebugMonitor(BlissHiveLogContainer blissHive)
        {
            BlissHiveDebugMonitorLogParser parser = new BlissHiveDebugMonitorLogParser(blissHive);

            parser.onParseProgressListeners += this.onParseProgressListeners;

            LogParseResult result = parser.Parse();

            // Result is kinda pointless with this parse

            this.onParseProgressListeners = null;
        }
示例#9
0
        /// <summary>
        /// Loads the inventory of all survivors. MUST LOAD SURVIVORS FIRST.
        /// </summary>
        /// <param name="blissHive">The hive to parse</param>
        public void LoadObjectInventory(BlissHiveLogContainer blissHive)
        {
            BlissHiveObjectInventoryLogParser parser = new BlissHiveObjectInventoryLogParser(blissHive);

            parser.onParseProgressListeners += this.onParseProgressListeners;

            LogParseResult result = parser.Parse();

            // Result is kinda pointless with this parse

            this.onParseProgressListeners = null;
        }
        /// <summary>
        /// Loads the survivors into the container list.
        /// </summary>
        /// <param name="blissHive">The blisshive to load survivors from</param>
        public void LoadSurvivors(BlissHiveLogContainer blissHive)
        {
            BlissHiveSurvivorLogParser parser = new BlissHiveSurvivorLogParser(blissHive);

            parser.onParseProgressListeners += this.onParseProgressListeners;
            LogParseResult result = parser.Parse();

            foreach (BlissHiveSurvivorLogParseResultEntry entry in result.result)
            {
                this.survivors.AddLast(entry.survivor);
            }
            this.onParseProgressListeners = null;
        }
示例#11
0
        /// <summary>
        /// Loads the survivors into the container list.
        /// </summary>
        /// <param name="blissHive">The blisshive to load survivors from</param>
        public void LoadObjects(BlissHiveLogContainer blissHive)
        {
            BlissHiveObjectLogParser parser = new BlissHiveObjectLogParser(blissHive);

            parser.onParseProgressListeners += this.onParseProgressListeners;
            LogParseResult result = parser.Parse();

            foreach (BlissHiveObjectLogParseResultEntry entry in result.result)
            {
                this.logObjects.AddLast(entry.logObject);
            }
            this.onParseProgressListeners = null;
        }
示例#12
0
        public void ParseData(BlissHiveLogContainer container)
        {
            int           count = 0;
            StringBuilder b     = new StringBuilder();

            foreach (BlissHiveLogSurvivor survivor in container.survivorContainer.survivors)
            {
                b.Append("survivor_" + count + "[]").Append("=").Append(survivor.username ?? "").Append("&");
                b.Append("survivor_" + count + "[]").Append("=").Append(survivor.survivorUpdateID ?? "").Append("&");
                foreach (String str in survivor.locations)
                {
                    b.Append("survivor_" + count + "_locations[]").Append("=").Append(str).Append("&");
                }
                count++;
            }
            this.data = b.ToString();
            // this.data = String.Join("&", result.ToArray<String>());
        }
示例#13
0
        /// <summary>
        /// Starts the log parse, with given filePath, and invokes if needed.
        /// </summary>
        /// <param name="filePath">The filepath of the file</param>
        public void StartLogParse(String filePath)
        {
            if (this.dayzLogParserForm.blissHiveDownloadProgressBar.InvokeRequired)
            {
                this.dayzLogParserForm.BeginInvoke(new MethodInvoker(delegate() { StartLogParse(filePath); }));
            }
            else
            {
                foreach (MenuItem item in this.dayzLogParserForm.fileMenuItem.MenuItems)
                {
                    if ((String)item.Tag == "openFile")
                    {
                        item.Enabled = false;
                        // Don't break
                        // break;
                    }
                }
                this.dayzLogParserForm.blissHiveDownloadLogBtn.Text    = "Parsing..";
                this.dayzLogParserForm.blissHiveDownloadLogBtn.Enabled = false;

                this.dayzLogParserForm.blissHiveProgressTimeRemainingLbl.Text = "";
                this.dayzLogParserForm.blissHivePlayerName.Text = "Parsing log file..";

                BlissHiveLogContainer blissHiveLogContainer = new BlissHiveLogContainer();

                int maximum = blissHiveLogContainer.GetLogCount(filePath);
                this.dayzLogParserForm.blissHiveDownloadProgressBar.Minimum = 0;
                this.dayzLogParserForm.blissHiveDownloadProgressBar.Maximum = maximum;


                LogController.GetInstance().blissHiveLogContainer = blissHiveLogContainer;

                // Start a background worker to do calculating stuff outside of the UI thread
                BackgroundWorker bw = new BackgroundWorker();
                bw.RunWorkerAsync(filePath);
                bw.DoWork += new DoWorkEventHandler(bw_DoWork);

                bw.WorkerSupportsCancellation = false;
                bw.WorkerReportsProgress      = false;
            }
        }
        public override LogParseResult Parse()
        {
            LinkedList <LogParseResultEntry> result = new LinkedList <LogParseResultEntry>();

            int count = 0;

            /*
             * 0 = ID
             * 1 = Position     [???,[x, y, z?]]
             * 2 = Inventory    [[<tool>, <sidearm>, <mainWeapon>], [<sidearm>, <item>]]
             * 3 = Backpack     [<backpackName>, [[<weapon>], [qty]], [[<item1>, <item2>], [<item1Qty>, [item2Qty]]]
             * 4 = Medical      [false,false,false,true,false,false,true,11714.7,["aimpoint"],[0,0],0,[159.803,247.991]] ??
             *                  [Probably broken bones, fever, etc here ,<blood>,    rest unknown
             * 5 = lastAte,     0 || 1
             * 6 = lastDrank,   0 || 1
             * 7 = survivalTime
             * 8 = model      Seems to be 'any' all the time, but perhaps 'hero' and 'bandit' are values as well
             * 9 = humanity
             * 10 = zombiekills
             * 11 = headshots
             * 12 = murders
             * 13 = banditkills
             * 14 = state       ["M16A2","ainvpknlmstpslaywrfldnon_medic",100]
             *                  [<equiped weapon?>, <gibberish>, <???>]
             **/
            BlissHiveLogContainer blissHiveLogContainer = (BlissHiveLogContainer)this.container;

            LinkedList <String> functionList = new LinkedList <String>();

            foreach (BlissHiveLogEntry entry in container.logs)
            {
                if (!functionList.Contains(entry.functionName))
                {
                    functionList.AddLast(entry.functionName);
                }

                if (entry.functionName == "proc_updateSurvivor")
                {
                    BlissHiveLogInventory inventory = new BlissHiveLogInventory(entry);

                    String inventoryParam = entry.parameters[2];
                    // No point parsing empty inventories
                    if (inventoryParam != "[]")
                    {
                        String[] invTypes = inventoryParam.Split(new String[1] {
                            "],["
                        }, StringSplitOptions.None);
                        String[] invWeapons = invTypes[0]
                                              .Replace("[[", "")
                                              .Replace("\"", "")
                                              .Split(',');

                        String[] invItems = invTypes[1]
                                            .Replace("]]", "")
                                            .Replace("\"", "")
                                            .Replace("[", "")
                                            .Replace("]", "")
                                            .Split(',');

                        foreach (String weapon in invWeapons)
                        {
                            inventory.items.AddLast(new BlissHiveLogItem(weapon, BlissHiveLogItem.Location.Inventory));
                        }

                        foreach (String item in invItems)
                        {
                            int number = 0;
                            // Sometimes, the item is a number (ammo for previous ammo clip).
                            // We don't want those as an item.
                            if (!Int32.TryParse(item, out number))
                            {
                                inventory.items.AddLast(new BlissHiveLogItem(item, BlissHiveLogItem.Location.Inventory));
                            }
                        }
                    }
                    String backpackParam = entry.parameters[3];
                    // No point parsing empty inventories
                    Boolean addedWeapon = false, addedItem = false;
                    if (backpackParam != "[]")
                    {
                        String[] backpackTypes = backpackParam
                                                 .Split(new String[1] {
                            "],["
                        }, StringSplitOptions.None);

                        String[] temp = backpackTypes[0]
                                        .Split(new String[1] {
                            ",[["
                        }, StringSplitOptions.None);
                        String backpackName = temp[0]
                                              .Replace("[", "")
                                              .Replace("\"", "");
                        String[] backpackWeapons        = new String[0];
                        String[] backpackQuantities     = new String[0];
                        String[] backpackItems          = new String[0];
                        String[] backpackItemQuantities = new String[0];


                        // If there's weapons in the backpack
                        if (temp.Length > 1)
                        {
                            backpackWeapons = temp[1]
                                              .Replace("\"", "")
                                              .Split(',');
                            backpackQuantities = backpackTypes[1]
                                                 .Replace("]", "")
                                                 .Split(',');
                        }

                        // If there's items in the backpack
                        if (backpackTypes.Length > 2)
                        {
                            backpackItems = backpackTypes[2]
                                            .Replace("[", "")
                                            .Replace("\"", "")
                                            .Split(',');
                            backpackItemQuantities = backpackTypes[3]
                                                     .Replace("]]]", "")
                                                     .Split(',');
                        }

                        inventory.items.AddLast(
                            new BlissHiveLogItem(backpackName, BlissHiveLogItem.Location.Backpack));

                        int itemCount = 0;
                        foreach (String backpackWeapon in backpackWeapons)
                        {
                            if (backpackWeapon == "")
                            {
                                continue;
                            }
                            inventory.items.AddLast(
                                new BlissHiveLogItem(
                                    backpackWeapon,
                                    BlissHiveLogItem.Location.Backpack,
                                    Int32.Parse(backpackQuantities[itemCount])
                                    )
                                );
                            addedWeapon = true;
                            itemCount++;
                        }

                        itemCount = 0;
                        foreach (String backpackItem in backpackItems)
                        {
                            if (backpackItem == "")
                            {
                                continue;
                            }
                            inventory.items.AddLast(
                                new BlissHiveLogItem(
                                    backpackItem,
                                    BlissHiveLogItem.Location.Backpack,
                                    Int32.Parse(backpackItemQuantities[itemCount])
                                    )
                                );
                            addedItem = true;
                            itemCount++;
                        }
                    }

                    // If both the inventory and the backpack has changed
                    // if (inventoryParam != "[]" && backpackParam != "[]") {
                    // }

                    if (inventoryParam != "[]" || backpackParam != "[]" &&
                        (addedItem || addedWeapon))
                    {
                        foreach (BlissHiveLogSurvivor survivor in
                                 blissHiveLogContainer.survivorContainer.survivors)
                        {
                            if (survivor.survivorUpdateID == entry.parameters[0])
                            {
                                // Groups the items for easier readability
                                inventory.GroupItems();
                                survivor.inventories.AddLast(inventory);
                            }
                        }
                        result.AddLast(new BlissHiveSurvivorInventoryLogParseResultEntry(entry));
                    }
                }
                else if (entry.functionName == "proc_killSurvivor")
                {
                }

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

            foreach (String function in functionList)
            {
                Console.WriteLine(function);
            }

            this.onParseProgressListeners = null;
            return(new LogParseResult(result));
        }
 public BlissHiveObjectActivityLogParser(BlissHiveLogContainer container)
     : base(container)
 {
 }
 public BlissHiveSurvivorActivityLogParser(BlissHiveLogContainer container)
     : base(container)
 {
 }
示例#17
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));
        }
示例#18
0
 public BlissHiveObjectInventoryLogParser(BlissHiveLogContainer container)
     : base(container)
 {
 }
 public BlissHiveObjectLogParser(BlissHiveLogContainer container)
     : base(container)
 {
 }
示例#20
0
 public BlissHiveSurvivorLogParser(BlissHiveLogContainer container)
     : base(container)
 {
 }
 public BlissHiveSurvivorInventoryLogParser(BlissHiveLogContainer container)
     : base(container)
 {
 }
        /// <summary>
        /// Loads the survivors into the container list.
        /// </summary>
        /// <param name="blissHive">The blisshive to load survivors from</param>
        public void LoadSurvivors(BlissHiveLogContainer blissHive)
        {
            BlissHiveSurvivorLogParser parser = new BlissHiveSurvivorLogParser(blissHive);
            parser.onParseProgressListeners += this.onParseProgressListeners;
            LogParseResult result = parser.Parse();

            foreach (BlissHiveSurvivorLogParseResultEntry entry in result.result) {
                this.survivors.AddLast(entry.survivor);
            }
            this.onParseProgressListeners = null;
        }