1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Targetting .NET 4.6

Added WoW module skeleton
Fixed rendering when a different DPI setting is selected in Windows
Added Process.NET in preperation of WoW support
This commit is contained in:
SpoinkyNL 2016-07-23 18:41:49 +02:00
parent f8c35df098
commit e5d15c6ada
25 changed files with 540 additions and 101 deletions

View File

@ -1,67 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings"
type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Artemis.Modules.Effects.Bubbles.Bubbles"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Effects.WindowsProfile.WindowsProfile"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.Overwatch.Overwatch"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.TheDivision.TheDivision"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.Dota2.Dota2"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Overlays.VolumeDisplay.VolumeDisplay"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.RocketLeague.RocketLeague"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.Offsets"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.Witcher3.Witcher3"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Effects.AudioVisualizer.AudioVisualization"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.CounterStrike.CounterStrike"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.CounterStrike"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.AudioVisualization"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.RocketLeague"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.TypeWave"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.General"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Artemis.Modules.Games.WoW.WoW" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Effects.Bubbles.Bubbles" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Effects.WindowsProfile.WindowsProfile" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.Overwatch.Overwatch" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.TheDivision.TheDivision" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.Dota2.Dota2" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Overlays.VolumeDisplay.VolumeDisplay" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.RocketLeague.RocketLeague" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.Offsets" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.Witcher3.Witcher3" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Effects.AudioVisualizer.AudioVisualization" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Modules.Games.CounterStrike.CounterStrike" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.CounterStrike" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.AudioVisualization" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.RocketLeague" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.TypeWave" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="Artemis.Settings.General" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<connectionStrings />
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<userSettings>
<Artemis.Modules.Games.WoW.WoW>
<setting name="Enabled" serializeAs="String">
<value>True</value>
</setting>
<setting name="LastProfile" serializeAs="String">
<value>Default</value>
</setting>
</Artemis.Modules.Games.WoW.WoW>
<Artemis.Modules.Effects.WindowsProfile.WindowsProfile>
<setting name="LastProfile" serializeAs="String">
<value>Demo (Duplicate to keep changes)</value>
@ -338,4 +311,4 @@
</assemblyBinding>
</runtime>
</configuration>
</configuration>

View File

@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Artemis</RootNamespace>
<AssemblyName>Artemis</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
@ -39,11 +39,12 @@
<ProductName>Artemis</ProductName>
<PublisherName>Artemis</PublisherName>
<ApplicationRevision>1</ApplicationRevision>
<ApplicationVersion>1.2.0.1</ApplicationVersion>
<ApplicationVersion>1.2.1.1</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
@ -199,6 +200,10 @@
<HintPath>..\packages\NLog.4.3.4\lib\net45\NLog.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Process.NET, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\Downloads\Chome Downloads\Process.NET-master\Process.NET-master\src\Process.NET\bin\Release\Process.NET.dll</HintPath>
</Reference>
<Reference Include="SpotifyAPI, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SpotifyAPI-NET.2.9.0\lib\SpotifyAPI.dll</HintPath>
<Private>True</Private>
@ -306,6 +311,16 @@
<Compile Include="Models\OverlaySettings.cs" />
<Compile Include="Modules\Effects\AudioVisualizer\AudioVisualization.cs" />
<Compile Include="Modules\Effects\Bubbles\Bubbles.cs" />
<Compile Include="Modules\Games\WorldofWarcraft\WoW.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>WoW.settings</DependentUpon>
</Compile>
<Compile Include="Modules\Games\WorldofWarcraft\WoWDataModel.cs" />
<Compile Include="Modules\Games\WorldofWarcraft\WoWModel.cs" />
<Compile Include="Modules\Games\WorldofWarcraft\WoWSettings.cs" />
<Compile Include="Modules\Games\WorldofWarcraft\WoWViewModel.cs" />
<Compile Include="Modules\Games\WorldofWarcraft\WoWAddresses.cs" />
<Compile Include="Profiles\Layers\Animations\NoneAnimation.cs" />
<Compile Include="Profiles\Layers\Models\EventPropertiesModel.cs" />
<Compile Include="Profiles\Layers\Models\KeyboardEventPropertiesModel.cs" />
@ -482,11 +497,11 @@
<Compile Include="Utilities\Logging.cs" />
<Compile Include="Utilities\DataReaders\PipeServer.cs" />
<Compile Include="Utilities\Memory\GamePointer.cs" />
<Compile Include="Utilities\Keyboard\Key.cs" />
<Compile Include="Utilities\Keyboard\KeyboardRectangle.cs" />
<Compile Include="Utilities\Memory\Memory.cs" />
<Compile Include="Utilities\Memory\MemoryHelpers.cs" />
<Compile Include="Utilities\Memory\Win32.cs" />
<Compile Include="Utilities\Keyboard\Key.cs" />
<Compile Include="Utilities\Keyboard\KeyboardRectangle.cs" />
<Compile Include="Utilities\ParentChild\ChildItemCollection.cs" />
<Compile Include="Utilities\ParentChild\IChildItem.cs" />
<Compile Include="Utilities\ShellLink.cs" />
@ -600,6 +615,10 @@
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<None Include="Modules\Games\WorldofWarcraft\WoW.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>WoW.Designer.cs</LastGenOutput>
</None>
<None Include="Resources\generic.png" />
<None Include="Resources\Keyboards\g810.png" />
<EmbeddedResource Include="Properties\Resources.resx">

View File

@ -168,9 +168,16 @@ namespace Artemis.Managers
public RenderFrame(KeyboardProvider keyboard)
{
KeyboardBitmap = keyboard.KeyboardBitmap(4);
KeyboardBitmap.SetResolution(96, 96);
MouseBitmap = new Bitmap(40, 40);
MouseBitmap.SetResolution(96, 96);
HeadsetBitmap = new Bitmap(40, 40);
HeadsetBitmap.SetResolution(96, 96);
GenericBitmap = new Bitmap(40, 40);
GenericBitmap.SetResolution(96, 96);
using (var g = Graphics.FromImage(KeyboardBitmap))
g.Clear(Color.Black);

View File

@ -116,7 +116,7 @@ namespace Artemis.Managers
if (!ProgramEnabled)
return;
var runningProcesses = Process.GetProcesses();
var runningProcesses = System.Diagnostics.Process.GetProcesses();
// If the currently active effect is a disabled game, get rid of it.
if (EffectManager.ActiveEffect != null)

View File

@ -8,7 +8,7 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Settings {
namespace Artemis.Modules.Effects.TypeWave {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

View File

@ -19,24 +19,24 @@ namespace Artemis.Modules.Effects.TypeWave
public sealed override void Load()
{
IsRandomColors = Settings.TypeWave.Default.IsRandomColors;
WaveColor = Settings.TypeWave.Default.WaveColor;
IsShiftColors = Settings.TypeWave.Default.IsShiftColors;
ShiftColorSpeed = Settings.TypeWave.Default.ShiftColorSpeed;
TimeToLive = Settings.TypeWave.Default.TimeToLive;
SpreadSpeed = Settings.TypeWave.Default.SpreadSpeed;
IsRandomColors = TypeWave.Default.IsRandomColors;
WaveColor = TypeWave.Default.WaveColor;
IsShiftColors = TypeWave.Default.IsShiftColors;
ShiftColorSpeed = TypeWave.Default.ShiftColorSpeed;
TimeToLive = TypeWave.Default.TimeToLive;
SpreadSpeed = TypeWave.Default.SpreadSpeed;
}
public sealed override void Save()
{
Settings.TypeWave.Default.IsRandomColors = IsRandomColors;
Settings.TypeWave.Default.WaveColor = WaveColor;
Settings.TypeWave.Default.IsShiftColors = IsShiftColors;
Settings.TypeWave.Default.ShiftColorSpeed = ShiftColorSpeed;
Settings.TypeWave.Default.TimeToLive = TimeToLive;
Settings.TypeWave.Default.SpreadSpeed = SpreadSpeed;
TypeWave.Default.IsRandomColors = IsRandomColors;
TypeWave.Default.WaveColor = WaveColor;
TypeWave.Default.IsShiftColors = IsShiftColors;
TypeWave.Default.ShiftColorSpeed = ShiftColorSpeed;
TypeWave.Default.TimeToLive = TimeToLive;
TypeWave.Default.SpreadSpeed = SpreadSpeed;
Settings.TypeWave.Default.Save();
TypeWave.Default.Save();
}
public sealed override void ToDefault()

View File

@ -81,15 +81,6 @@ namespace Artemis.Modules.Games.RocketLeague
boostInt = 0;
((RocketLeagueDataModel) DataModel).Boost = boostInt;
if (DateTime.Now.AddSeconds(-2) <= LastTrace)
return;
MainManager.Logger.Trace("Offsets as JSON: \r\n{0}",
JsonConvert.SerializeObject(_pointer.GameAddresses, Formatting.Indented));
MainManager.Logger.Trace("RL specific offsets: {0}", offsets);
MainManager.Logger.Trace("Boost address: {0}", boostAddress);
MainManager.Logger.Trace("Boost int: {0}", boostInt);
}
public override List<LayerModel> GetRenderLayers(bool keyboardOnly)

View File

@ -80,7 +80,7 @@ namespace Artemis.Modules.Games.Witcher3
archive.ExtractToDirectory(folder + @"witcher3-mod", true);
Process.Start(new ProcessStartInfo("https://github.com/SpoinkyNL/Artemis/wiki/The-Witcher-3"));
System.Diagnostics.Process.Start(new ProcessStartInfo("https://github.com/SpoinkyNL/Artemis/wiki/The-Witcher-3"));
return;
}
}

View File

@ -0,0 +1,50 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Artemis.Modules.Games.WorldofWarcraft {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class WoW : global::System.Configuration.ApplicationSettingsBase {
private static WoW defaultInstance = ((WoW)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new WoW())));
public static WoW Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool Enabled {
get {
return ((bool)(this["Enabled"]));
}
set {
this["Enabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Default")]
public string LastProfile {
get {
return ((string)(this["LastProfile"]));
}
set {
this["LastProfile"] = value;
}
}
}
}

View File

@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="Artemis.Modules.Games.WoW" GeneratedClassName="WoW">
<Profiles />
<Settings>
<Setting Name="Enabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="LastProfile" Type="System.String" Scope="User">
<Value Profile="(Default)">Default</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -0,0 +1,256 @@
namespace Artemis.Modules.Games.WorldofWarcraft
{
public static class WoWAddresses
{
public enum ActivateSettings
{
Activate_Offset = 0x34,
AutoDismount_Activate_Pointer = 0xe56850,
AutoInteract_Activate_Pointer = 0xe56848,
AutoLoot_Activate_Pointer = 0xe56868,
AutoSelfCast_Activate_Pointer = 0xe56874
}
public enum Battleground
{
MaxBattlegroundId = 0xec3fdc,
PvpExitWindow = 0xec4198,
StatPvp = 0xc3c03c
}
public enum Chat
{
chatBufferPos = 0xeb1bf0,
chatBufferStart = 0xe58190,
msgFormatedChat = 0x65,
NextMessage = 0x17e8
}
public enum ClickToMove
{
CTM = 0xddf8f0,
CTM_PUSH = 0xddf8ac,
CTM_X = 0xddf918,
CTM_Y = 0xddf91c,
CTM_Z = 0xddf920
}
public enum CorpsePlayer
{
X = 0xe57894,
Y = 0xe57898,
Z = 0xe5789c
}
public enum DBC
{
FactionTemplate = 0,
ItemClass = 0xd173c0,
ItemSubClass = 0,
Lock = 0,
Map = 0xd291a0,
QuestPOIPoint = 0xd1e950,
ResearchSite = 0xd1d2d0,
SpellCategories = 0,
Unknown = 0xf35428
}
public enum EventsListener
{
BaseEvents = 0xcb2474,
EventOffsetCount = 0x48,
EventOffsetName = 0x18,
EventsCount = 0xcb2470
}
public enum Fishing
{
BobberHasMoved = 0xf8
}
public enum FunctionWow
{
CGUnit_C__InitializeTrackingState = 0x30623b,
CGUnit_C__Interact = 0x524ff,
CGWorldFrame__Intersect = 0x5e46ab,
ClntObjMgrGetActivePlayerObj = 0x816d7,
FrameScript__GetLocalizedText = 0x300b48,
FrameScript_ExecuteBuffer = 0xa6772,
IsOutdoors = 0,
Spell_C_HandleTerrainClick = 0x2b76ff,
strlen = 0x74fcb0,
UnitCanAttack = 0,
WowClientDB2__GetRowPointer = 0x20c775
}
public enum GameInfo
{
AreaId = 0xc32c2c,
buildWoWVersionString = 0xd002a8,
gameState = 0xe56a49,
GetTime = 0xcb2150,
isLoading = 0xca59b0,
LastHardwareAction = 0xd0e090,
MapTextureId = 0xc3bd28,
SubAreaId = 0xc32c24,
subZoneMap = 0xe56a68,
TextBoxActivated = 0xbbe9ac,
zoneMap = 0xe56a64
}
public enum GameObject
{
CachedCastBarCaption = 12,
CachedData0 = 20,
CachedIconName = 8,
CachedName = 180,
CachedQuestItem1 = 0x9c,
CachedSize = 0x98,
DBCacheRow = 620,
GAMEOBJECT_FIELD_X = 0x138,
GAMEOBJECT_FIELD_Y = 0x13c,
GAMEOBJECT_FIELD_Z = 320,
PackedRotationQuaternion = 0x150,
TransformationMatrice = 0x278
}
public enum Hooking
{
DX_DEVICE = 0xcc523c,
DX_DEVICE_IDX = 0x2508,
ENDSCENE_IDX = 0xa8
}
public enum Login
{
realmName = 0xf35e16
}
public enum MovementFlagsOffsets
{
Offset1 = 0x124,
Offset2 = 0x40
}
public enum ObjectManager
{
continentId = 0x108,
firstObject = 0xd8,
localGuid = 0xf8,
nextObject = 0x44,
objectGUID = 0x30,
objectTYPE = 0x10
}
public class ObjectManagerClass
{
public static uint clientConnection;
public static uint sCurMgr;
}
public enum Party
{
NumOfPlayers = 200,
NumOfPlayersSuBGroup = 0xcc,
PartyOffset = 0xeb5458,
PlayerGuid = 0x10
}
public enum PetBattle
{
IsInBattle = 0xba8a10
}
public enum Player
{
LocalPlayerSpellsOnCooldown = 0xd372b8,
petGUID = 0xec7158,
playerName = 0xf35e20,
RetrieveCorpseWindow = 0xe576f4,
RuneStartCooldown = 0xf18aa8,
SkillMaxValue = 0x400,
SkillValue = 0x200
}
public enum PlayerNameStore
{
PlayerNameNextOffset = 20,
PlayerNameStorePtr = 0xd0b4e0,
PlayerNameStringOffset = 0x11
}
public enum PowerIndex
{
Multiplicator = 0x10,
PowerIndexArrays = 0xddf914
}
public enum Quests
{
QuestGiverStatus = 0xf4
}
public enum SpellBook
{
FirstTalentBookPtr = 0xeb52ec,
KnownAllSpells = 0xeb5130,
MountBookMountsPtr = 0xeb5194,
MountBookNumMounts = 0xeb5190,
NextTalentBookPtr = 0xeb52e4,
SpellBookNumSpells = 0xeb5134,
SpellBookSpellsPtr = 0xeb5138,
SpellDBCMaxIndex = 0x30d40,
TalentBookOverrideSpellId = 0x1c,
TalentBookSpellId = 20
}
public enum UnitBaseGetUnitAura
{
AuraSize = 0x58,
AuraStructCasterLevel = 0x3a,
AuraStructCount = 0x39,
AuraStructCreatorGuid = 0x20,
AuraStructDuration = 60,
AuraStructFlag = 0x34,
AuraStructMask = 0x35,
AuraStructSpellEndTime = 0x40,
AuraStructSpellId = 0x30,
AuraStructUnk1 = 0x3b,
AuraStructUnk2 = 0x44,
AuraTable1 = 0x1150,
AuraTable2 = 0x580
}
public enum UnitField
{
CachedIsBoss = 0x60,
CachedModelId1 = 0x6c,
CachedName = 0x80,
CachedQuestItem1 = 60,
CachedSubName = 0,
CachedTypeFlag = 0x24,
CachedUnitClassification = 0x2c,
CanInterrupt = 0xfc4,
CanInterruptOffset = 0xe02ea0,
CanInterruptOffset2 = 0xe02ea4,
CanInterruptOffset3 = 0xe02ea8,
CastingSpellEndTime = 0x108c,
CastingSpellID = 0x1064,
CastingSpellStartTime = 0x1088,
ChannelSpellEndTime = 0x1098,
ChannelSpellID = 0x1090,
ChannelSpellStartTime = 0x1094,
DBCacheRow = 0xc80,
TransportGUID = 0xae8,
UNIT_FIELD_R = 0xb08,
UNIT_FIELD_X = 0xaf8,
UNIT_FIELD_Y = 0xafc,
UNIT_FIELD_Z = 0xb00
}
public enum VMT
{
CGUnit_C__GetFacing = 0x35
}
}
}

View File

@ -0,0 +1,17 @@
using Artemis.Models.Interfaces;
namespace Artemis.Modules.Games.WorldofWarcraft
{
public class WoWDataModel : IDataModel
{
public Player Player { get; set; } = new Player();
}
public class Player
{
public string Name { get; set; }
public int Health { get; set; }
public int MaxHealth { get; set; }
}
}

View File

@ -0,0 +1,57 @@
using System.Collections.Generic;
using Artemis.Managers;
using Artemis.Models;
using Artemis.Profiles.Layers.Models;
using Artemis.Utilities;
using Artemis.Utilities.Memory;
namespace Artemis.Modules.Games.WorldofWarcraft
{
public class WoWModel : GameModel
{
private Memory _memory;
public WoWModel(MainManager mainManager, WoWSettings settings)
: base(mainManager, settings, new WoWDataModel())
{
Name = "WoW";
ProcessName = "Wow-64";
Scale = 4;
Enabled = Settings.Enabled;
Initialized = false;
}
public int Scale { get; set; }
public override void Dispose()
{
Initialized = false;
}
public override void Enable()
{
var tempProcess = MemoryHelpers.GetProcessIfRunning(ProcessName);
if (tempProcess == null)
return;
_memory = new Memory(tempProcess);
Initialized = true;
}
public override void Update()
{
if (Profile == null || DataModel == null || _memory == null)
return;
// _memory.ReadMemory();
}
public override List<LayerModel> GetRenderLayers(bool keyboardOnly)
{
return Profile.GetRenderLayers(DataModel, keyboardOnly);
}
}
}

View File

@ -0,0 +1,31 @@
using Artemis.Models;
namespace Artemis.Modules.Games.WorldofWarcraft
{
public class WoWSettings : GameSettings
{
public WoWSettings()
{
Load();
}
public sealed override void Load()
{
Enabled = WoW.Default.Enabled;
LastProfile = WoW.Default.LastProfile;
}
public sealed override void Save()
{
WoW.Default.Enabled = Enabled;
WoW.Default.LastProfile = LastProfile;
WoW.Default.Save();
}
public sealed override void ToDefault()
{
Enabled = true;
}
}
}

View File

@ -0,0 +1,17 @@
using Artemis.InjectionFactories;
using Artemis.Managers;
using Artemis.ViewModels.Abstract;
using Caliburn.Micro;
namespace Artemis.Modules.Games.WorldofWarcraft
{
public sealed class WoWViewModel : GameViewModel
{
public WoWViewModel(MainManager main, IEventAggregator events, IProfileEditorVmFactory pFactory)
: base(main, new WoWModel(main, new WoWSettings()), events, pFactory)
{
DisplayName = "World of Warcraft";
MainManager.EffectManager.EffectModels.Add(GameModel);
}
}
}

View File

@ -63,8 +63,8 @@ namespace Artemis.Profiles
// Remove the clip
c.Pop();
}
using (var bmp = ImageUtilities.DrawinVisualToBitmap(visual, keyboardRect))
using (var bmp = ImageUtilities.DrawingVisualToBitmap(visual, keyboardRect))
keyboard.DrawImage(bmp, new PointF(0, 0));
}
@ -143,7 +143,7 @@ namespace Artemis.Profiles
c.Pop();
}
using (var bmp = ImageUtilities.DrawinVisualToBitmap(visual, rect))
using (var bmp = ImageUtilities.DrawingVisualToBitmap(visual, rect))
g.DrawImage(bmp, new PointF(0, 0));
}

View File

@ -26,7 +26,7 @@ namespace Artemis.Utilities
// Start the new process
try
{
Process.Start(processInfo);
System.Diagnostics.Process.Start(processInfo);
}
catch (Exception)
{

View File

@ -54,12 +54,12 @@ namespace Artemis.Utilities
}
}
public static Bitmap DrawinVisualToBitmap(DrawingVisual visual, Rect rect)
public static Bitmap DrawingVisualToBitmap(DrawingVisual visual, Rect rect)
{
var bmp = new RenderTargetBitmap((int) rect.Width, (int) rect.Height, 96, 96, PixelFormats.Pbgra32);
bmp.Render(visual);
var encoder = new PngBitmapEncoder();
var encoder = new BmpBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
Bitmap bitmap;
@ -68,6 +68,7 @@ namespace Artemis.Utilities
encoder.Save(stream);
bitmap = new Bitmap(stream);
}
return bitmap;
}

View File

@ -17,7 +17,7 @@ namespace Artemis.Utilities.Memory
/// Initializes a new instance of the Memory
/// </summary>
/// <param name="process">Remote process</param>
public Memory(Process process)
public Memory(System.Diagnostics.Process process)
{
if (process == null)
throw new ArgumentNullException("process");
@ -35,7 +35,7 @@ namespace Artemis.Utilities.Memory
/// <summary>
/// Gets the process to which this memory is attached to
/// </summary>
public Process Process { get; private set; }
public System.Diagnostics.Process Process { get; private set; }
#endregion

View File

@ -1,6 +1,6 @@
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Process.NET.Memory;
namespace Artemis.Utilities.Memory
{
@ -10,9 +10,9 @@ namespace Artemis.Utilities.Memory
public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer,
int dwSize, ref int lpNumberOfBytesRead);
public static Process GetProcessIfRunning(string processName)
public static System.Diagnostics.Process GetProcessIfRunning(string processName)
{
var processes = Process.GetProcessesByName(processName);
var processes = System.Diagnostics.Process.GetProcessesByName(processName);
return processes.Length >= 1 ? processes[0] : null;
}
@ -37,5 +37,14 @@ namespace Artemis.Utilities.Memory
}
return address;
}
public static T ReadMultilevelPointer<T>(this IMemory memory, IntPtr address, params int[] offsets) where T : struct
{
for (var i = 0; i < offsets.Length - 1; i++)
{
address = memory.Read<IntPtr>(address + offsets[i]);
}
return memory.Read<T>(address + offsets[offsets.Length - 1]);
}
}
}

View File

@ -39,7 +39,7 @@ namespace Artemis.Utilities
"Note: You can disable update notifications in the settings menu");
if (viewUpdate.Value)
Process.Start(new ProcessStartInfo(newRelease["html_url"].Value<string>()));
System.Diagnostics.Process.Start(new ProcessStartInfo(newRelease["html_url"].Value<string>()));
return null;
}

View File

@ -208,7 +208,7 @@ namespace Artemis.ViewModels.Flyouts
public void NavigateTo(string url)
{
Process.Start(new ProcessStartInfo(url));
System.Diagnostics.Process.Start(new ProcessStartInfo(url));
}
protected override void HandleOpen()

View File

@ -12,7 +12,7 @@ namespace Artemis.ViewModels
public void NavigateTo(string url)
{
Process.Start(new ProcessStartInfo(url));
System.Diagnostics.Process.Start(new ProcessStartInfo(url));
}
}
}

View File

@ -16,7 +16,7 @@ namespace Artemis.Views
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Process.Start("https://github.com/SpoinkyNL/Artemis/wiki/Frequently-Asked-Questions-(FAQ)");
System.Diagnostics.Process.Start("https://github.com/SpoinkyNL/Artemis/wiki/Frequently-Asked-Questions-(FAQ)");
}
}
}

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Caliburn.Micro" version="3.0.1" targetFramework="net452" />
<package id="Caliburn.Micro.Core" version="3.0.1" targetFramework="net452" />