public void LockMenu(MenuFlags menuFlags) { MenuFlags menuStatus = GetMenuStatus(); menuStatus |= menuFlags; byte[] bytes = BitConverter.GetBytes((int)menuStatus); _memoryAccessor.WriteMem(ProcessName, Addresses.MenuLock.Address, bytes); }
public void SetCharacterName(CharNames charName, string newName) { CharMemLoc cml = CharMemLoc.ByName(charName); byte[] bytes = newName.MapStringToFf7Bytes(); if (_momentAccessor.AtMomentOrLater(charName.AllowNamingAfter)) { _memoryAccessor.WriteMem(ProcessName, cml.Name.Address, bytes); } _memoryAccessor.WriteMem(ProcessName, cml.StartingName.Address, bytes); }
public void AddMateria(byte materiaId, uint experience = 0) { var scanResult = _memory.ScanMem(Settings.ProcessName, FirstAddress, ItemSize, InvCapacity, IsEmpty); if (scanResult.BaseAddrOffset == -1) { return; } IntPtr address = IntPtr.Add(FirstAddress, scanResult.BaseAddrOffset); var materiaSlot = new MateriaSlot(materiaId, experience); _memory.WriteMem(Settings.ProcessName, address, materiaSlot.AsBytes()); bool IsEmpty(byte[] bytes) => bytes.All(b => b == byte.MaxValue); }
public void SetCharacterEquipment(CharNames charName, byte equipmentEquipmentId, Func <CharMemLoc, IntPtr> addressSelector) { CharMemLoc charMemLoc = CharMemLoc.ByName(charName); var bytes = new[] { equipmentEquipmentId }; _memoryAccessor.WriteMem(Settings.ProcessName, addressSelector(charMemLoc), bytes); }
public void SetMenuColors(string processName, MenuColors menuColors) { if (ApplicationSettings.Instance.MenuSettings.TransitionColors) { MenuColors startColor = GetMenuColors(processName); MenuColors[] colorSteps = GetColorSteps(startColor, menuColors); foreach (var menuColor in colorSteps) { UpdateDisplayColors(processName, menuColor); Thread.Sleep(100); } } UpdateDisplayColors(processName, menuColors); _memoryAccessor.WriteMem(processName, Addresses.MenuColorAllSave.Address, menuColors.GetSaveBytes()); _currentColor = menuColors; }
public void AddItem(ushort itemId, ushort quantity = 1, bool allowIncrement = true) { var scanResult = _memory.ScanMem(Settings.ProcessName, FirstAddress, ItemSize, InvCapacity, IsItem); if (scanResult.BaseAddrOffset == -1) // Have none, find empty { scanResult = _memory.ScanMem(Settings.ProcessName, FirstAddress, ItemSize, InvCapacity, IsEmpty); WriteInventoryItem(new InventorySlot(itemId, quantity), scanResult.BaseAddrOffset); } else if (allowIncrement) { var item = new InventorySlot(scanResult.Bytes); item.Quantity += quantity; WriteInventoryItem(item, scanResult.BaseAddrOffset); } bool IsItem(byte[] bytes) => new InventorySlot(bytes).ItemId == itemId; bool IsEmpty(byte[] bytes) => bytes.All(b => b == byte.MaxValue); void WriteInventoryItem(InventorySlot inventorySlot, int addrOffset) => _memory.WriteMem(Settings.ProcessName, IntPtr.Add(FirstAddress, addrOffset), inventorySlot.AsBytes()); }
public void SetGil(int gil) { try { lock (Padlock) { _memoryAccessor.WriteMem(Settings.ProcessName, Addresses.Gil.Address, BitConverter.GetBytes(gil)); } } catch (Exception e) { _logger.LogError(e, "Error setting player gil."); } }
private void WriteStatus(Allies actor, int status) { var bytes = BitConverter.GetBytes(status); _memoryAccessor.WriteMem(ProcessName, actor.PrimaryStatus.Address, bytes); }
public void SetGil(int gil) { _memoryAccessor.WriteMem(Settings.ProcessName, Addresses.Gil.Address, BitConverter.GetBytes(gil)); }