From b9ebdeefa19aed3b093595b6a140a99f0f0df1fa Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Mon, 20 Mar 2017 23:59:53 +0100 Subject: [PATCH 1/3] Strafe fixes GTA V fixes --- .../CoolerMaster/MasterkeysProL.cs | 5 ++- .../Corsair/CorsairKeyboard.cs | 34 +++++------------- .../Artemis/Modules/Games/GtaV/GtaVModel.cs | 1 - Artemis/Artemis/Properties/AssemblyInfo.cs | 4 +-- .../Resources/Keyboards/default-profiles.zip | Bin 464061 -> 467181 bytes .../Utilities/DataReaders/DllManager.cs | 7 ++-- .../ViewModels/ProfileEditorViewModel.cs | 26 ++++++-------- 7 files changed, 31 insertions(+), 46 deletions(-) diff --git a/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProL.cs b/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProL.cs index 6b83f28e8..c84f7d4d4 100644 --- a/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProL.cs +++ b/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProL.cs @@ -1,4 +1,5 @@ -using System.Drawing; +using System; +using System.Drawing; using System.Linq; using System.Threading; using System.Windows; @@ -67,6 +68,8 @@ namespace Artemis.DeviceProviders.CoolerMaster for (var y = 0; y < Height; y++) { var c = b.GetPixel(x, y); + if (c.R != 0) + Console.WriteLine(); matrix.KeyColor[y, x] = new KEY_COLOR(c.R, c.G, c.B); } } diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs index 3be6500e2..ef5adc1ab 100644 --- a/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs +++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs @@ -81,13 +81,18 @@ namespace Artemis.DeviceProviders.Corsair PreviewSettings = new PreviewSettings(new Rect(15, 30, 751, 284), Resources.k65); break; case "STRAFE RGB": - Height = 7; + Height = 8; Width = 22; Slug = "corsair-strafe-rgb"; - PreviewSettings = new PreviewSettings(new Rect(23, 30, 940, 303), Resources.strafe); + PreviewSettings = new PreviewSettings(new Rect(23, 12, 937, 324), Resources.strafe); break; } + Height = 8; + Width = 22; + Slug = "corsair-strafe-rgb"; + PreviewSettings = new PreviewSettings(new Rect(23, 12, 937, 324), Resources.strafe); + Logger.Debug("Corsair SDK reported device as: {0}", _keyboard.DeviceInfo.Model); _keyboard.Brush = _keyboardBrush ?? (_keyboardBrush = new ImageBrush()); } @@ -114,29 +119,8 @@ namespace Artemis.DeviceProviders.Corsair /// public override void DrawBitmap(Bitmap bitmap) { - - // For STRAFE, stretch the image on row 2. - if (_keyboard.DeviceInfo.Model == "STRAFE RGB") - { - using (var strafeBitmap = new Bitmap(22, 8)) - { - using (var g = Graphics.FromImage(strafeBitmap)) - { - g.DrawImage(bitmap, new Point(0, 0)); - g.DrawImage(bitmap, new Rectangle(0, 3, 22, 7), new Rectangle(0, 2, 22, 7), - GraphicsUnit.Pixel); - - _keyboardBrush.Image = strafeBitmap; - _keyboard.Update(); - } - } - } - else - { - _keyboardBrush.Image = bitmap; - _keyboard.Update(); - } - + _keyboardBrush.Image = bitmap; + _keyboard.Update(); } public override KeyMatch? GetKeyPosition(Keys keyCode) diff --git a/Artemis/Artemis/Modules/Games/GtaV/GtaVModel.cs b/Artemis/Artemis/Modules/Games/GtaV/GtaVModel.cs index 38f854a65..f97e8c245 100644 --- a/Artemis/Artemis/Modules/Games/GtaV/GtaVModel.cs +++ b/Artemis/Artemis/Modules/Games/GtaV/GtaVModel.cs @@ -29,7 +29,6 @@ namespace Artemis.Modules.Games.GtaV public override void Enable() { - var process = System.Diagnostics.Process.GetProcessesByName("GTA5").First(); DllManager.PlaceLogitechDll(); _pipeServer.PipeMessage += PipeServerOnPipeMessage; base.Enable(); diff --git a/Artemis/Artemis/Properties/AssemblyInfo.cs b/Artemis/Artemis/Properties/AssemblyInfo.cs index 44b0032cb..9b302b36d 100644 --- a/Artemis/Artemis/Properties/AssemblyInfo.cs +++ b/Artemis/Artemis/Properties/AssemblyInfo.cs @@ -53,7 +53,7 @@ using System.Windows; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.9.0.0")] -[assembly: AssemblyFileVersion("1.9.0.0")] +[assembly: AssemblyVersion("1.9.0.1")] +[assembly: AssemblyFileVersion("1.9.0.1")] [assembly: InternalsVisibleTo("Artemis.Explorables")] diff --git a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip index 298df243e9b2c5d93692b72d39654b742c54c620..8b5ead4d6fc2b636eacf68eb66ce210d43547ff6 100644 GIT binary patch delta 43599 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%0AC+ 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 I4;thC4=!`mSO5S3 delta 37387 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 _layers; - private readonly KeybindModel _pasteKeybind; private ObservableCollection _profileNames; private bool _saving; private LayerModel _selectedLayer; @@ -198,7 +196,7 @@ namespace Artemis.ViewModels NotifyOfPropertyChange(() => LayerSelected); } } - + public ProfileModel SelectedProfile => _moduleModel?.ProfileModel; public bool ProfileSelected => SelectedProfile != null; public bool LayerSelected => SelectedProfile != null && SelectedLayer != null; @@ -348,9 +346,7 @@ namespace Artemis.ViewModels return; if (SelectedLayer != null) - { SelectedLayer.InsertAfter(layerModel); - } else { SelectedProfile.Layers.Add(layerModel); @@ -405,6 +401,9 @@ namespace Artemis.ViewModels if (_saving || SelectedProfile == null || _deviceManager.ChangingKeyboard) return; + SelectedProfile.Width = _deviceManager.ActiveKeyboard.Width; + SelectedProfile.Height = _deviceManager.ActiveKeyboard.Height; + _saving = true; try { @@ -421,8 +420,7 @@ namespace Artemis.ViewModels { if (_deviceManager.ActiveKeyboard == null) { - _dialogService.ShowMessageBox("Cannot add profile.", - "To add a profile, please select a keyboard in the options menu first."); + _dialogService.ShowMessageBox("Cannot add profile.", "To add a profile, please select a keyboard in the options menu first."); return; } @@ -701,9 +699,7 @@ namespace Artemis.ViewModels : Cursors.SizeAll; } else - { KeyboardPreviewCursor = Cursors.Hand; - } } private Point GetScaledPosition(MouseEventArgs e) @@ -716,13 +712,13 @@ namespace Artemis.ViewModels var heightScale = sourceImage.ActualHeight / _deviceManager.ActiveKeyboard.PreviewSettings.BackgroundRectangle.Height; // Remove the preview settings' offset from the cursor postion - pos.X = pos.X - (previewSettings.OverlayRectangle.X * widthScale); - pos.Y = pos.Y - (previewSettings.OverlayRectangle.Y * heightScale); + pos.X = pos.X - previewSettings.OverlayRectangle.X * widthScale; + pos.Y = pos.Y - previewSettings.OverlayRectangle.Y * heightScale; // Scale the X and Y position down to match the keyboard's physical size and thus the layer positions - pos.X = pos.X * (SelectedProfile.Width / (previewSettings.OverlayRectangle.Width*widthScale)); + pos.X = pos.X * (SelectedProfile.Width / (previewSettings.OverlayRectangle.Width * widthScale)); pos.Y = pos.Y * (SelectedProfile.Height / (previewSettings.OverlayRectangle.Height * heightScale)); - + return pos; } From 270e5963a90dcbaf871a54d6bf96fada7af4ceed Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Tue, 21 Mar 2017 18:54:21 +0100 Subject: [PATCH 2/3] Added Terraria module --- Artemis/Artemis/Artemis.csproj | 11 +++ .../Corsair/CorsairKeyboard.cs | 5 - .../RocketLeague/RocketLeagueViewModel.cs | 2 +- .../Games/Terraria/TerrariaDataModel.cs | 18 ++++ .../Modules/Games/Terraria/TerrariaModel.cs | 91 +++++++++++++++++++ .../Games/Terraria/TerrariaSettings.cs | 8 ++ .../Modules/Games/Terraria/TerrariaView.xaml | 48 ++++++++++ .../Games/Terraria/TerrariaView.xaml.cs | 28 ++++++ .../Games/Terraria/TerrariaViewModel.cs | 47 ++++++++++ Artemis/Artemis/Settings/OffsetSettings.cs | 1 + Artemis/Artemis/Utilities/Updater.cs | 2 + .../LightFX2Artemis/LightFX2Artemis.vcxproj | 2 +- .../LogiLed2Artemis/LogiLed2Artemis.vcxproj | 1 + Artemis/Razer2Artemis/Razer2Artemis.vcxproj | 2 +- 14 files changed, 258 insertions(+), 8 deletions(-) create mode 100644 Artemis/Artemis/Modules/Games/Terraria/TerrariaDataModel.cs create mode 100644 Artemis/Artemis/Modules/Games/Terraria/TerrariaModel.cs create mode 100644 Artemis/Artemis/Modules/Games/Terraria/TerrariaSettings.cs create mode 100644 Artemis/Artemis/Modules/Games/Terraria/TerrariaView.xaml create mode 100644 Artemis/Artemis/Modules/Games/Terraria/TerrariaView.xaml.cs create mode 100644 Artemis/Artemis/Modules/Games/Terraria/TerrariaViewModel.cs diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index 00dba2b00..492b5f6c4 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -384,6 +384,13 @@ AssettoCorsaView.xaml + + + + + TerrariaView.xaml + + @@ -856,6 +863,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs index ef5adc1ab..4468016b9 100644 --- a/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs +++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs @@ -88,11 +88,6 @@ namespace Artemis.DeviceProviders.Corsair break; } - Height = 8; - Width = 22; - Slug = "corsair-strafe-rgb"; - PreviewSettings = new PreviewSettings(new Rect(23, 12, 937, 324), Resources.strafe); - Logger.Debug("Corsair SDK reported device as: {0}", _keyboard.DeviceInfo.Model); _keyboard.Brush = _keyboardBrush ?? (_keyboardBrush = new ImageBrush()); } diff --git a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueViewModel.cs b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueViewModel.cs index e46759d75..a1f168377 100644 --- a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueViewModel.cs +++ b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueViewModel.cs @@ -36,7 +36,7 @@ namespace Artemis.Modules.Games.RocketLeague { if (!SettingsProvider.Load().EnablePointersUpdate) { - VersionText = "You disabled pointer updates, this could result in the Rocket League effect not working after a game update."; + VersionText = "You disabled pointer updates, this could result in the Rocket League module not working after a game update."; return; } diff --git a/Artemis/Artemis/Modules/Games/Terraria/TerrariaDataModel.cs b/Artemis/Artemis/Modules/Games/Terraria/TerrariaDataModel.cs new file mode 100644 index 000000000..ce01c1f18 --- /dev/null +++ b/Artemis/Artemis/Modules/Games/Terraria/TerrariaDataModel.cs @@ -0,0 +1,18 @@ +using Artemis.Modules.Abstract; +using MoonSharp.Interpreter; + +namespace Artemis.Modules.Games.Terraria +{ + [MoonSharpUserData] + public class TerrariaDataModel : ModuleDataModel + { + public int Hp { get; set; } + public int MaxHp { get; set; } + public int Mana { get; set; } + public int MaxMana { get; set; } + public int Breath { get; set; } + public int MaxBreath { get; set; } + public bool InWater { get; set; } + public bool InLava { get; set; } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/Modules/Games/Terraria/TerrariaModel.cs b/Artemis/Artemis/Modules/Games/Terraria/TerrariaModel.cs new file mode 100644 index 000000000..c7f3c0c8c --- /dev/null +++ b/Artemis/Artemis/Modules/Games/Terraria/TerrariaModel.cs @@ -0,0 +1,91 @@ +using System; +using System.Linq; +using Artemis.DAL; +using Artemis.Managers; +using Artemis.Modules.Abstract; +using Artemis.Settings; +using Artemis.Utilities; +using Artemis.Utilities.Memory; + +namespace Artemis.Modules.Games.Terraria +{ + public class TerrariaModel : ModuleModel + { + private Memory _memory; + private GamePointersCollection _pointer; + + public TerrariaModel(DeviceManager deviceManager, LuaManager luaManager) : base(deviceManager, luaManager) + { + Settings = SettingsProvider.Load(); + DataModel = new TerrariaDataModel(); + ProcessNames.Add("Terraria"); + + // Generate a new offset when the game is updated + //_pointer = new GamePointersCollection + //{ + // Game = "Terraria", + // GameVersion = "1.3.4.4", + // GameAddresses = new List + // { + // new GamePointer + // { + // Description = "PlayerBase", + // BasePointer = new IntPtr(0x0039C078), + // Offsets = new[] {0x280, 0x6C0, 0x674, 0x3C} + // } + // } + //}; + //var res = JsonConvert.SerializeObject(_pointer, Formatting.Indented); + } + + public override string Name => "Terraria"; + public override bool IsOverlay => false; + public override bool IsBoundToProcess => true; + + public override void Dispose() + { + base.Dispose(); + + _memory?.Dispose(); + _memory = null; + } + + public override void Enable() + { + Updater.GetPointers(); + _pointer = SettingsProvider.Load().Terraria; + + base.Enable(); + } + + public override void Update() + { + if (_memory == null) + { + var tempProcess = MemoryHelpers.GetProcessIfRunning(ProcessNames[0]); + if (tempProcess == null) + return; + + _memory = new Memory(tempProcess); + } + + if (ProfileModel == null || DataModel == null || _memory == null) + return; + + var offsets = _pointer.GameAddresses.First(ga => ga.Description == "PlayerBase").ToString(); + var baseAddress = _memory.GetAddress("\"Terraria.exe\"" + offsets); + var basePointer = new IntPtr(_memory.ReadInt32(baseAddress)); + var playerPointer = new IntPtr(_memory.ReadInt32(basePointer + 0x18)); + + var dataModel = (TerrariaDataModel) DataModel; + dataModel.Hp = _memory.ReadInt32(playerPointer + 0x340); + dataModel.MaxHp = _memory.ReadInt32(playerPointer + 0x338); + dataModel.Mana = _memory.ReadInt32(playerPointer + 0x344); + dataModel.MaxMana = _memory.ReadInt32(playerPointer + 0x348); + dataModel.Breath = _memory.ReadInt32(playerPointer + 0x2B4); + dataModel.MaxBreath = _memory.ReadInt32(playerPointer + 0x2B0); + dataModel.InWater = Convert.ToBoolean(_memory.ReadInt32(playerPointer + 0x1D)); + dataModel.InLava = Convert.ToBoolean(_memory.ReadInt32(playerPointer + 0x20)); + } + } +} diff --git a/Artemis/Artemis/Modules/Games/Terraria/TerrariaSettings.cs b/Artemis/Artemis/Modules/Games/Terraria/TerrariaSettings.cs new file mode 100644 index 000000000..c155ff365 --- /dev/null +++ b/Artemis/Artemis/Modules/Games/Terraria/TerrariaSettings.cs @@ -0,0 +1,8 @@ +using Artemis.Modules.Abstract; + +namespace Artemis.Modules.Games.Terraria +{ + public class TerrariaSettings : ModuleSettings + { + } +} \ No newline at end of file diff --git a/Artemis/Artemis/Modules/Games/Terraria/TerrariaView.xaml b/Artemis/Artemis/Modules/Games/Terraria/TerrariaView.xaml new file mode 100644 index 000000000..f5cf0d7e4 --- /dev/null +++ b/Artemis/Artemis/Modules/Games/Terraria/TerrariaView.xaml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +