コード例 #1
0
        public void LockMenu(MenuFlags menuFlags)
        {
            MenuFlags menuStatus = GetMenuStatus();

            menuStatus |= menuFlags;

            byte[] bytes = BitConverter.GetBytes((int)menuStatus);

            _memoryAccessor.WriteMem(ProcessName, Addresses.MenuLock.Address, bytes);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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());
        }
コード例 #7
0
 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.");
     }
 }
コード例 #8
0
        private void WriteStatus(Allies actor, int status)
        {
            var bytes = BitConverter.GetBytes(status);

            _memoryAccessor.WriteMem(ProcessName, actor.PrimaryStatus.Address, bytes);
        }
コード例 #9
0
 public void SetGil(int gil)
 {
     _memoryAccessor.WriteMem(Settings.ProcessName, Addresses.Gil.Address, BitConverter.GetBytes(gil));
 }