/// <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; }
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; }
/// <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; }
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>()); }
/// <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) { }
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)); }
public BlissHiveObjectInventoryLogParser(BlissHiveLogContainer container) : base(container) { }
public BlissHiveObjectLogParser(BlissHiveLogContainer container) : base(container) { }
public BlissHiveSurvivorLogParser(BlissHiveLogContainer container) : base(container) { }
public BlissHiveSurvivorInventoryLogParser(BlissHiveLogContainer container) : base(container) { }