public FF7BattleMap GetBattleMap() { var bytes = new byte[Addresses.BattleMapStart.NumBytes]; _memory.ReadMem(Settings.ProcessName, Addresses.BattleMapStart.Address, bytes); var isBattleByte = new byte[1]; _memory.ReadMem(Settings.ProcessName, Addresses.ActiveBattleState.Address, isBattleByte); return(new FF7BattleMap(bytes, isBattleByte.Single())); }
public void RemoveWeaponMateria(CharNames charNames, int keep = 0) { CharMemLoc charMemLoc = CharMemLoc.ByName(charNames); byte[] emptyRow = { byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue }; for (int i = ItemSize * keep; i < charMemLoc.WeaponMateria.NumBytes; i += ItemSize) { IntPtr address = IntPtr.Add(charMemLoc.WeaponMateria.Address, i); var bytes = new byte[ItemSize]; _memory.ReadMem(Settings.ProcessName, address, bytes); var materia = new MateriaSlot(bytes); AddMateria(materia.MateriaId, materia.Experience); _memory.WriteMem(Settings.ProcessName, address, emptyRow); } }
public byte GetCharacterEquipment(CharNames charName, Func <CharMemLoc, IntPtr> addressSelector) { CharMemLoc charMemLoc = CharMemLoc.ByName(charName); var bytes = new byte[1]; _memoryAccessor.ReadMem(Settings.ProcessName, addressSelector(charMemLoc), bytes); return(bytes[0]); }
private int GetTrueStatus(Allies actor) { var bytes = new byte[4]; _memoryAccessor.ReadMem(ProcessName, actor.SecondaryStatus.Address, bytes); int status = BitConverter.ToInt32(bytes); return(status); }
public string GetCharacterName(CharNames charName) { CharMemLoc cml = CharMemLoc.ByName(charName); byte[] bytes = new byte[cml.Name.NumBytes]; _memoryAccessor.ReadMem(ProcessName, cml.Name.Address, bytes); string characterName = bytes.MapFf7BytesToString(); return(characterName); }
public MenuColors GetMenuColors(string processName) { byte[] topLeftBuffer = new byte[3]; byte[] botLeftBuffer = new byte[3]; byte[] topRightBuffer = new byte[3]; byte[] botRightBuffer = new byte[3]; if (_memoryAccessor.ReadMem(processName, Addresses.MenuTopLeft.Address, topLeftBuffer) && _memoryAccessor.ReadMem(processName, Addresses.MenuBotLeft.Address, botLeftBuffer) && _memoryAccessor.ReadMem(processName, Addresses.MenuTopRight.Address, topRightBuffer) && _memoryAccessor.ReadMem(processName, Addresses.MenuBotRight.Address, botRightBuffer)) { return(new MenuColors { TopLeft = topLeftBuffer.ToColor(), BotLeft = botLeftBuffer.ToColor(), TopRight = topRightBuffer.ToColor(), BotRight = botRightBuffer.ToColor(), }); } return(_currentColor); }
public Scene GetCurrentScene() { var buffer = new byte[Addresses.SceneMapStart.NumBytes]; _memoryAccessor.ReadMem(ProcessName, Addresses.SceneMapStart.Address, buffer); string[] enemyNames = new string[3]; for (int i = 0; i < 3; i++) { var nameBytes = buffer.Skip(SceneMapConst.ActorSize * i + SceneMapConst.EnemyNameOffset) .TakeWhile(x => x != SceneMapConst.EnemyNameEnd).ToArray(); enemyNames[i] = nameBytes.MapFf7BytesToString(nameBytes.Length); } return(new Scene(enemyNames)); }
public ushort GetGp() { try { lock (Padlock) { var buffer = new byte[Addresses.Gp.NumBytes]; _memoryAccessor.ReadMem(Settings.ProcessName, Addresses.Gp.Address, buffer); return(BitConverter.ToUInt16(buffer)); } } catch (Exception e) { _logger.LogError(e, "Error setting player GP."); } return(0); }
private void TryUpdateMoment() { try { if (DateTime.UtcNow >= _nextMomentCheckAllowed) { lock (Padlock) { if (DateTime.UtcNow >= _nextMomentCheckAllowed) { _nextMomentCheckAllowed = DateTime.UtcNow.AddSeconds(2); byte[] bytes = new byte[Addresses.GameMoment.NumBytes]; _memoryAccessor.ReadMem(ProcessName, Addresses.GameMoment.Address, bytes); _lastCheckedMoment = (ushort)((bytes[1] << 8) + bytes[0]); } } } } catch (Exception e) { _logger.LogError(e, "Error fetching game moment."); } }
public MenuFlags GetMenuStatus() { byte[] bytes = new byte[Addresses.MenuLock.NumBytes]; _memoryAccessor.ReadMem(ProcessName, Addresses.MenuLock.Address, bytes); return((MenuFlags)BitConverter.ToUInt16(bytes)); }