示例#1
0
        public static void Apply(Settings settings, int pid)
        {
            if (string.Equals(settings.LastUpdate, "unupdated", StringComparison.Ordinal))
            {
                MessageBox.Show("Memory offsets need updating, click the update offsets button.");
                return;
            }

            using (var p = Process.GetProcessById(pid))
            {
                var ptr = IntPtr.Zero;
                try
                {
                    ptr = OpenProcess(ProcessFlags, false, pid);
                    if (string.Equals(p.ProcessName, "ffxiv", StringComparison.Ordinal))
                    {
                        ApplyX86(settings, p, ptr);
                    }
                    else if (string.Equals(p.ProcessName, "ffxiv_dx11", StringComparison.Ordinal))
                    {
                        ApplyX64(settings, p, ptr);
                    }
                }
                finally
                {
                    if (ptr != IntPtr.Zero)
                    {
                        CloseHandle(ptr);
                    }
                }
            }
        }
示例#2
0
        private static void ApplyX64(Settings settings, Process process, IntPtr ptr)
        {
            var addr = GetAddress(8, process, ptr, settings.DX11_StructureAddress, settings.DX11_ZoomMax);
            Write(settings.DesiredZoom, ptr, addr);
            addr = GetAddress(8, process, ptr, settings.DX11_StructureAddress, settings.DX11_ZoomCurrent);
            Write(settings.DesiredZoom, ptr, addr);

            addr = GetAddress(8, process, ptr, settings.DX11_StructureAddress, settings.DX11_FovCurrent);
            Write(settings.DesiredFov, ptr, addr);
            addr = GetAddress(8, process, ptr, settings.DX11_StructureAddress, settings.DX11_FovMax);
            Write(settings.DesiredFov, ptr, addr);
        }
示例#3
0
 public static Settings Load(string location = null)
 {
     var settings = new Settings();
     try
     {
         var doc = XDocument.Load(location ?? SettingsFile);
         var root = doc.Element("Root");
         foreach (var element in root.Elements())
         {
             switch (element.Name.LocalName)
             {
                 case "AutoApply":
                     settings.AutoApply = bool.Parse(element.Value);
                     break;
                 case "DX9":
                     settings.DX9_StructureAddress = element.Element("StructureAddress")
                         .Value
                         .Split(',')
                         .Where(x => !string.IsNullOrEmpty(x))
                         .Select(x => int.Parse(x, NumberStyles.HexNumber, CultureInfo.InvariantCulture))
                         .ToArray();
                     settings.DX9_ZoomCurrent = int.Parse(element.Element("ZoomCurrent").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                     settings.DX9_ZoomMax = int.Parse(element.Element("ZoomMax").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                     settings.DX9_FovCurrent = int.Parse(element.Element("FovCurrent").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                     settings.DX9_FovMax = int.Parse(element.Element("FovMax").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                     break;
                 case "DX11":
                     settings.DX11_StructureAddress = element.Element("StructureAddress")
                         .Value
                         .Split(',')
                         .Where(x => !string.IsNullOrEmpty(x))
                         .Select(x => int.Parse(x, NumberStyles.HexNumber, CultureInfo.InvariantCulture))
                         .ToArray();
                     settings.DX11_ZoomCurrent = int.Parse(element.Element("ZoomCurrent").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                     settings.DX11_ZoomMax = int.Parse(element.Element("ZoomMax").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                     settings.DX11_FovCurrent = int.Parse(element.Element("FovCurrent").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                     settings.DX11_FovMax = int.Parse(element.Element("FovMax").Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                     break;
                 case "DesiredZoom":
                     settings.DesiredZoom = float.Parse(element.Value, CultureInfo.InvariantCulture);
                     if (settings.DesiredZoom < 1f || settings.DesiredZoom > 1000f)
                     {
                         settings.DesiredZoom = 20f;
                     }
                     break;
                 case "DesiredFov":
                     settings.DesiredFov = float.Parse(element.Value, CultureInfo.InvariantCulture);
                     if (settings.DesiredFov < 0.01f || settings.DesiredFov > 3f)
                     {
                         settings.DesiredFov = 0.78f;
                     }
                     break;
                 case "LastUpdate":
                     settings.LastUpdate = element.Value;
                     break;
             }
         }
     }
     catch
     {
         /* xml failed to load, lose settings */
     }
     return settings;
 }