EFTCheatPVE/stoopid.raw/Gridmanager.cs

132 lines
4.2 KiB
C#

using System;
using System.Reflection;
using EFT.InventoryLogic;
using EFT.UI;
public class Gridmanager
{
private static Type _ued1aType;
private static ConstructorInfo _ued1aConstructor;
static Gridmanager()
{
LoadUed1aType();
}
private static void LoadUed1aType()
{
try
{
Type[] types = Assembly.Load("Assembly-CSharp").GetTypes();
foreach (Type type in types)
{
if (type.Name == "\ued6f")
{
_ued1aType = type;
ConsoleScreen.Log("Found type: \ued6f");
break;
}
}
if (_ued1aType != null)
{
ConstructorInfo[] constructors = _ued1aType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
foreach (ConstructorInfo constructorInfo in constructors)
{
ParameterInfo[] parameters = constructorInfo.GetParameters();
ConsoleScreen.Log($"Constructor found with {parameters.Length} parameters:");
for (int j = 0; j < parameters.Length; j++)
{
ParameterInfo parameterInfo = parameters[j];
ConsoleScreen.Log($"Param {j + 1}: {parameterInfo.ParameterType.FullName} ({parameterInfo.Name})");
}
if (parameters.Length == 8 && parameters[0].ParameterType == typeof(string) && parameters[1].ParameterType == typeof(int) && parameters[2].ParameterType == typeof(int) && parameters[3].ParameterType == typeof(bool) && parameters[4].ParameterType == typeof(bool) && parameters[5].ParameterType.IsArray && parameters[6].ParameterType.Name.Contains("CompoundItem") && parameters[7].ParameterType == typeof(int))
{
_ued1aConstructor = constructorInfo;
ConsoleScreen.Log("Located the obfuscated constructor successfully.");
break;
}
}
if (_ued1aConstructor == null)
{
ConsoleScreen.Log("Failed to locate \ued6f constructor by matching parameter types.");
}
}
else
{
ConsoleScreen.Log("Failed to find \ued6f type.");
}
}
catch (Exception ex)
{
ConsoleScreen.Log("Error during LoadUed1aType: " + ex.Message);
}
}
public static dynamic CreateGrid(string id, int gridWidth, int gridHeight, bool canStretchVertically, bool canStretchHorizontally, CompoundItem parentItem)
{
try
{
if (_ued1aConstructor != null)
{
ItemFilter[] array = new ItemFilter[0];
ConsoleScreen.Log($"Attempting to create new grid with ID: {id}, Width: {gridWidth}, Height: {gridHeight}");
return _ued1aConstructor.Invoke(new object[8] { id, gridWidth, gridHeight, canStretchVertically, canStretchHorizontally, array, parentItem, -1 });
}
ConsoleScreen.Log("Failed to create new grid. Constructor is null.");
return null;
}
catch (Exception ex)
{
ConsoleScreen.Log("Error creating grid: " + ex.Message);
return null;
}
}
public async void ReplaceGrid(dynamic item, int newGridWidth, int newGridHeight, string newGridID = null)
{
try
{
ConsoleScreen.Log("Starting grid replacement process...");
dynamic val = new ItemFactory().CreateItem("5c0a794586f77461c458f892");
if (val == null)
{
ConsoleScreen.Log("Failed to create boss container.");
return;
}
ConsoleScreen.Log("Boss container created successfully.");
dynamic val2 = val.Grids.FirstOrDefault();
if (val2 == null)
{
ConsoleScreen.Log("Failed to retrieve the boss container's grid.");
return;
}
ConsoleScreen.Log($"Boss container grid found. Grid ID: {(object)val2.ID}");
if (!(item.Grids[0]?.ParentItem is CompoundItem compoundItem))
{
ConsoleScreen.Log("Failed to retrieve the original parent item.");
return;
}
ConsoleScreen.Log("Original parent item retrieved successfully.");
if (item.Grids != null && item.Grids.Length > 0)
{
dynamic val3 = item.Grids[0];
ConsoleScreen.Log("Original grid found.");
string text = val3.ID;
string text2 = (string.IsNullOrEmpty(newGridID) ? text : newGridID);
ConsoleScreen.Log("Replacing original grid with Boss container grid. Final Grid ID: " + text2);
val2.ParentItem = compoundItem;
item.Grids[0] = val2;
ConsoleScreen.Log("Successfully replaced the grid with the boss container's grid.");
}
else
{
ConsoleScreen.Log("Item does not have any grids to replace.");
}
}
catch (Exception ex)
{
ConsoleScreen.Log("Error replacing grid: " + ex.Message + "\n" + ex.StackTrace);
}
}
}