/// <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); }
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; }
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"); } } } }