├── .gitignore ├── LordsMobile.sln ├── LordsMobile ├── App.config ├── Assets.cs ├── Bot.cs ├── Controller.cs ├── DB.cs ├── License-LGPL.txt ├── LordsMobile.csproj ├── LordsMobile.csproj.user ├── LordsMobile_TemporaryKey.pfx ├── MEmuManager.cs ├── MainForm.Designer.cs ├── MainForm.cs ├── MainForm.resx ├── Profile.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Scripts │ ├── Build.cs │ ├── Core.cs │ ├── Gather.cs │ └── Tutorial.cs ├── Settings.cs ├── State.cs ├── Statics.cs ├── Strings.cs ├── Vision.cs ├── WindowHandle.cs ├── assets │ ├── challenge │ │ ├── chapter.JPG │ │ └── normal.jpg │ ├── chest │ │ ├── 5x.JPG │ │ ├── collect.JPG │ │ └── window.jpg │ ├── dev │ │ ├── build.JPG │ │ ├── free.JPG │ │ ├── go.JPG │ │ ├── help.JPG │ │ ├── new.JPG │ │ ├── no_cr.JPG │ │ ├── no_res.jpg │ │ └── upgrade.JPG │ ├── etc │ │ ├── close.JPG │ │ ├── kingdom.JPG │ │ ├── leave.jpg │ │ ├── level_up.jpg │ │ ├── level_up_txt.jpg │ │ ├── live_support.jpg │ │ ├── oracle.jpg │ │ └── turf.JPG │ ├── guild │ │ └── open.JPG │ ├── hud │ │ ├── army.JPG │ │ ├── extra_supplies.jpg │ │ ├── gift.JPG │ │ ├── help.jpg │ │ └── prog_open.JPG │ ├── memu │ │ ├── lords.jpg │ │ └── lords2.jpg │ ├── quest │ │ ├── admin_comp.JPG │ │ ├── collect.JPG │ │ ├── guild_comp.JPG │ │ ├── has_completed.JPG │ │ ├── has_quests.JPG │ │ ├── start.JPG │ │ ├── turf_comp.JPG │ │ ├── vip_chest.JPG │ │ ├── vip_claim.JPG │ │ ├── vip_comp.JPG │ │ └── window.JPG │ ├── res │ │ ├── field.JPG │ │ ├── gather.JPG │ │ ├── gold.JPG │ │ ├── gold2.JPG │ │ ├── ore.JPG │ │ ├── ore2.JPG │ │ ├── rocks.JPG │ │ ├── txt_field.JPG │ │ ├── txt_gold.JPG │ │ ├── txt_ore.JPG │ │ ├── txt_rocks.JPG │ │ ├── txt_woods.JPG │ │ ├── woods.JPG │ │ └── woods2.JPG │ ├── turf │ │ ├── barracks.JPG │ │ ├── infirmary.JPG │ │ ├── shelter.JPG │ │ ├── statue.jpg │ │ └── statue2.jpg │ └── tutorial │ │ ├── confirm.jpg │ │ ├── create.jpg │ │ ├── guild.jpg │ │ ├── important.jpg │ │ ├── migrate.jpg │ │ ├── mp_full1.jpg │ │ ├── mp_full2.jpg │ │ ├── mp_full3.jpg │ │ ├── oath_keeper.jpg │ │ ├── skirmish1.jpg │ │ └── tap_go.jpg ├── mega_maggot_GS1_icon.ico ├── obj │ └── Debug │ │ ├── DesignTimeResolveAssemblyReferences.cache │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ ├── LordsMobile.MainForm.resources │ │ ├── LordsMobile.Properties.Resources.resources │ │ ├── LordsMobile.application │ │ ├── LordsMobile.csproj.CopyComplete │ │ ├── LordsMobile.csproj.CoreCompileInputs.cache │ │ ├── LordsMobile.csproj.FileListAbsolute.txt │ │ ├── LordsMobile.csproj.GenerateResource.cache │ │ ├── LordsMobile.csprojResolveAssemblyReference.cache │ │ ├── LordsMobile.exe │ │ ├── LordsMobile.exe.manifest │ │ ├── LordsMobile.pdb │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs ├── packages.config ├── tessdata │ ├── eng.cube.bigrams │ ├── eng.cube.fold │ ├── eng.cube.lm │ ├── eng.cube.nn │ ├── eng.cube.params │ ├── eng.cube.size │ ├── eng.cube.word-freq │ ├── eng.tesseract_cube.nn │ └── eng.traineddata ├── x64 │ ├── liblept172.dll │ └── libtesseract304.dll └── x86 │ ├── liblept172.dll │ └── libtesseract304.dll └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | packages/* 2 | LordsMobile/bin/* 3 | LordsMobile/publish/* 4 | .vs/* -------------------------------------------------------------------------------- /LordsMobile.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27428.2027 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LordsMobile", "LordsMobile\LordsMobile.csproj", "{47ABE40E-439C-42B6-8A9F-3998427CEE97}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {47ABE40E-439C-42B6-8A9F-3998427CEE97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {47ABE40E-439C-42B6-8A9F-3998427CEE97}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {47ABE40E-439C-42B6-8A9F-3998427CEE97}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {47ABE40E-439C-42B6-8A9F-3998427CEE97}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {6B0C83A0-4BA5-408E-AF72-00A4120591E7} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /LordsMobile/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /LordsMobile/Assets.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LordsMobile 8 | { 9 | class Assets 10 | { 11 | public class Challenge { 12 | public const string challenge = "challenge\\"; 13 | public const string Chapter = challenge + "chapter.jpg"; 14 | } 15 | 16 | public class MEmu 17 | { 18 | private const string memu = "assets\\memu\\"; 19 | public const string Lords = memu + "lords.jpg"; 20 | public const string Lords2 = memu + "lords2.jpg"; 21 | } 22 | 23 | public class Chest 24 | { 25 | private const string chest = "assets\\chest\\"; 26 | public const string x5 = chest + "5x.jpg"; 27 | public const string Collect = chest + "collect.jpg"; 28 | public const string Window = chest + "window.jpg"; 29 | } 30 | 31 | public class Development 32 | { 33 | private const string dev = "assets\\dev\\"; 34 | public const string Help = dev + "help.jpg"; 35 | public const string Free = dev + "free.jpg"; 36 | public const string Go = dev + "go.jpg"; 37 | public const string Build = dev + "build.jpg"; 38 | public const string Upgrade = dev + "upgrade.jpg"; 39 | public const string NoCR = dev + "no_cr.jpg"; 40 | public const string NoRes = dev + "no_res.jpg"; 41 | public const string New = dev + "new.jpg"; 42 | } 43 | 44 | public class Tutorial 45 | { 46 | private const string tutorial = "assets\\tutorial\\"; 47 | public const string Create = tutorial + "create.jpg"; 48 | public const string Important = tutorial + "important.jpg"; 49 | public const string OathKeeper = tutorial + "oath_keeper.jpg"; 50 | public const string Skirmish1 = tutorial + "skirmish1.jpg"; 51 | public const string Confirm = tutorial + "confirm.jpg"; 52 | public const string TapGo = tutorial + "tap_go.jpg"; 53 | public const string MpFull1 = tutorial + "mp_full1.jpg"; 54 | public const string MpFull2 = tutorial + "mp_full2.jpg"; 55 | public const string MpFull3 = tutorial + "mp_full3.jpg"; 56 | public const string Guild = tutorial + "guild.jpg"; 57 | public const string Migrate = tutorial + "migrate.jpg"; 58 | } 59 | 60 | public class Turf 61 | { 62 | private const string turf = "assets\\turf\\"; 63 | public const string Statue = turf + "statue.jpg"; 64 | public const string Statue2 = turf + "statue2.jpg"; 65 | public const string Infirmary = turf + "infirmary.jpg"; 66 | public const string Shelter = turf + "shelter.jpg"; 67 | public const string Barracks = turf + "barracks.jpg"; 68 | } 69 | 70 | public class Etc 71 | { 72 | private const string etc = "assets\\etc\\"; 73 | public const string Kingdom = etc + "kingdom.jpg"; 74 | public const string Turf = etc + "turf.jpg"; 75 | public const string Leave = etc + "leave.jpg"; 76 | public const string Oracle = etc + "oracle.jpg"; //0.55 77 | public const string LevelUp = etc + "level_up.jpg"; //0.85 78 | public const string LiveSupport = etc + "live_support.jpg"; 79 | public const string Close = etc + "close.jpg"; //0.8 80 | public const string LevelUpTxt = etc + "level_up_txt.jpg"; 81 | } 82 | 83 | public class Hud 84 | { 85 | private const string hud = "assets\\hud\\"; 86 | public const string Army = hud + "army.jpg"; 87 | public const string Help = hud + "help.jpg"; 88 | public const string ExtraSupplies = hud + "extra_supplies.jpg"; 89 | } 90 | 91 | public class Quest 92 | { 93 | private const string quest = "assets\\quest\\"; 94 | public const string HasCompleted = quest + "has_completed.jpg"; 95 | public const string HasQuests = quest + "has_quests.jpg"; 96 | public const string Collect = quest + "collect.jpg"; 97 | public const string Start = quest + "start.jpg"; 98 | public const string Admin = quest + "admin_comp.jpg"; 99 | public const string Turf = quest + "turf_comp.jpg"; 100 | public const string Guild = quest + "guild_comp.jpg"; 101 | public const string VIP = quest + "vip_comp.jpg"; 102 | public const string VIPClaim = quest + "vip_claim.jpg"; 103 | public const string VIPChest = quest + "vip_chest.jpg"; 104 | } 105 | 106 | public class Gather 107 | { 108 | private const string res = "assets\\res\\"; 109 | public const string GatherRes = res + "gather.jpg"; 110 | public static readonly String[] Field = new String[] 111 | { 112 | res + "txt_field.jpg", 113 | res + "field.jpg" 114 | }; 115 | public static readonly String[] Rocks = new String[] 116 | { 117 | res + "txt_rocks.jpg", 118 | res + "rocks.jpg" 119 | }; 120 | public static readonly String[] Ore = new String[] 121 | { 122 | res + "txt_ore.jpg", 123 | res + "ore.jpg", 124 | res + "ore2.jpg" 125 | }; 126 | public static readonly String[] Wood = new String[] 127 | { 128 | res + "txt_woods.jpg", 129 | res + "woods.jpg", 130 | res + "woods2.jpg" 131 | }; 132 | public static readonly String[] Gold = new String[] 133 | { 134 | res + "txt_gold.jpg", 135 | res + "gold.jpg", 136 | res + "gold2.jpg" 137 | }; 138 | } 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /LordsMobile/Bot.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Diagnostics; 7 | using System.Threading; 8 | using LordsMobile.Scripts; 9 | using System.Drawing; 10 | 11 | namespace LordsMobile 12 | { 13 | class Bot 14 | { 15 | private static bool running = false; 16 | public static State[] states; 17 | private static Random rnd = new Random(); 18 | private static Thread[] threads; 19 | 20 | public static void start() 21 | { 22 | states = new State[Settings.maxVMs]; 23 | threads = new Thread[Settings.maxVMs]; 24 | running = true; 25 | while (running) 26 | { 27 | int s = Array.IndexOf(states, null); 28 | if (s != -1) 29 | { 30 | int pId = MEmuManager.startVMs(); 31 | State st = new State(MEmuManager.getHandle(pId)); 32 | st.processIndex = pId; 33 | states[s] = st; 34 | threads[s] = new Thread(() => runBot(ref states[s])); 35 | threads[s].Start(); 36 | } 37 | Thread.Sleep(10000); 38 | } 39 | } 40 | 41 | private static void runBot(ref State s) 42 | { 43 | Tutorial t = new Tutorial(s); 44 | while(true && running) { 45 | while (s.v.matchTemplate(Assets.MEmu.Lords2, 0.8).X == -1 && s.state == "Loading" && running) 46 | { 47 | MEmuManager.resizeWindow(s.processIndex); 48 | Debug.WriteLine("Looking for Lords Mobile"); 49 | Thread.Sleep(2000); 50 | } 51 | if (s.c.vClick(s.v.matchTemplate(Assets.MEmu.Lords2, 0.8))) 52 | Thread.Sleep(1000); 53 | if (s.state == "Loading") 54 | { 55 | s.state = "Launching Lords Mobile"; 56 | while (!t.hasTutorial() && s.v.matchTemplate(Assets.Etc.Close, 0.8).X == -1 && s.v.matchTemplate(Assets.Etc.Oracle, 0.55).X == -1 && running) 57 | { 58 | Debug.WriteLine("Stuck Launching"); 59 | Debug.WriteLine(s.processIndex); 60 | MEmuManager.resizeWindow(s.processIndex); 61 | Thread.Sleep(1500); 62 | } 63 | Thread.Sleep(1000); 64 | if (t.hasTutorial()) 65 | t.doTutorial(); 66 | } 67 | Thread.Sleep(2000); 68 | s.clearScreen(); 69 | if (s.profile.getAccountNo() == "") 70 | { 71 | Debug.WriteLine("Getting profile."); 72 | s.state = "Getting Profile"; 73 | s.profile.getProfile(); 74 | s.clearScreen(); 75 | s.reset(); 76 | s.screen = 1; 77 | } 78 | Debug.WriteLine("Outside profile."); 79 | 80 | s.c.vClick(s.v.matchTemplate(Assets.Development.Free, 0.65)); 81 | s.c.vClick(s.v.matchTemplate(Assets.Development.Help, 0.6)); 82 | if (s.c.vClick(s.v.matchTemplate(Assets.Hud.Help, 0.65))) 83 | { 84 | s.c.vClick(new Point(491, 534)); 85 | s.clearScreen(); 86 | } 87 | 88 | if (s.v.matchTemplate(Assets.Chest.Collect, 0.65).X != -1) 89 | { 90 | s.c.vClick(Statics.Chest.CHEST); 91 | s.c.vClick(Statics.Chest.CLAIM); 92 | } 93 | 94 | if (s.c.vClick(s.v.matchTemplate(Assets.Hud.ExtraSupplies, 0.75))) 95 | { 96 | s.c.vClick(Statics.Hud.EXTRA_SUPPLIES_COLLECT); 97 | } 98 | 99 | if (DateTime.Now > s.lastShelterCheck.AddMinutes(5)) 100 | s.lastShelterCheck = Core.mainChecks(s, s.screen); 101 | 102 | 103 | /** 104 | * ~~~ Quest Checks ~~~ 105 | * 106 | */ 107 | if (s.c.vClick(s.v.matchTemplate(Assets.Quest.HasCompleted, 0.65)) || 108 | s.c.vClick(s.v.matchTemplate(Assets.Quest.HasQuests, 0.65))) 109 | { 110 | if (s.c.vClick(s.v.matchTemplate(Assets.Quest.Turf, 0.61))) 111 | { 112 | while (s.c.vClick(s.v.matchTemplate(Assets.Quest.Collect, 0.8))) 113 | { 114 | Debug.WriteLine("Turf"); 115 | if (s.v.matchTemplate(Assets.Etc.LevelUpTxt, 0.55).X != -1) 116 | s.c.vClick(Statics.CLOSE_LEVEL_UP); 117 | } 118 | } 119 | if (s.c.vClick(s.v.matchTemplate(Assets.Quest.Admin, 0.6))) 120 | { 121 | while (s.c.vClick(s.v.matchTemplate(Assets.Quest.Collect, 0.8))) 122 | { 123 | Debug.WriteLine("Admin"); 124 | if (s.v.matchTemplate(Assets.Etc.LevelUpTxt, 0.55).X != -1) 125 | s.c.vClick(Statics.CLOSE_LEVEL_UP); 126 | } 127 | s.c.vClick(s.v.matchTemplate(Assets.Quest.Start, 0.5)); 128 | } 129 | if (s.c.vClick(s.v.matchTemplate(Assets.Quest.Guild, 0.6))) 130 | { 131 | while (s.c.vClick(s.v.matchTemplate(Assets.Quest.Collect, 0.8))) 132 | { 133 | Debug.WriteLine("Guild"); 134 | if (s.v.matchTemplate(Assets.Etc.LevelUpTxt, 0.55).X != -1) 135 | s.c.vClick(Statics.CLOSE_LEVEL_UP); 136 | } 137 | s.c.vClick(s.v.matchTemplate(Assets.Quest.Start, 0.5)); 138 | } 139 | if (s.c.vClick(s.v.matchTemplate(Assets.Quest.VIP, 0.61))) 140 | { 141 | if (s.v.matchTemplate(Assets.Quest.VIPClaim, 0.7).X != -1) 142 | s.c.vClick(s.v.matchTemplate(Assets.Quest.VIPChest, 0.6)); 143 | } 144 | } 145 | 146 | 147 | 148 | s.clearScreen(); 149 | if (s.v.matchTemplate(Assets.Hud.Army, 0.6).X == -1) 150 | { 151 | Gather g = new Gather(s); 152 | s.lastResource = g.gather(rnd.Next(0, 5)); 153 | } 154 | 155 | while (s.v.matchTemplate(Assets.Development.NoCR, 0.55).X != -1) 156 | { 157 | s.goTo(); 158 | Build b = new Build(s); 159 | b.build(); 160 | s.screen = -1; 161 | 162 | s.c.vClick(s.v.matchTemplate(Assets.Development.Free, 0.65)); 163 | s.c.vClick(s.v.matchTemplate(Assets.Development.Help, 0.6)); 164 | } 165 | 166 | s.c.vClick(s.v.matchTemplate(Assets.Development.Free, 0.65)); 167 | s.c.vClick(s.v.matchTemplate(Assets.Development.Help, 0.6)); 168 | 169 | if (s.v.matchTemplate(Assets.Chest.Collect, 0.65).X != -1) 170 | { 171 | s.c.vClick(Statics.Chest.CHEST); 172 | s.c.vClick(Statics.Chest.CLAIM); 173 | } 174 | 175 | 176 | Debug.WriteLine("Start: " + s.start.ToString() + ", End: " + s.start.AddMinutes(Settings.duration).ToString() + ", Done? " + s.hasTimeElapsed()); 177 | Debug.WriteLine("Waiting for time to pass."); 178 | Thread.Sleep(1000); 179 | } 180 | } 181 | 182 | public static void stop() 183 | { 184 | foreach (Thread t in threads) 185 | { 186 | t.Abort(); 187 | } 188 | Debug.WriteLine("Stopping!"); 189 | running = false; 190 | } 191 | } 192 | } 193 | -------------------------------------------------------------------------------- /LordsMobile/Controller.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Drawing; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using WindowsInput; 11 | using WindowsInput.Native; 12 | using System.Runtime.InteropServices; 13 | 14 | namespace LordsMobile 15 | { 16 | class Controller 17 | { 18 | [DllImport("user32.dll", CharSet = CharSet.Unicode)] 19 | static extern short VkKeyScan(char ch); 20 | private IntPtr hwnd; 21 | 22 | public Controller(IntPtr hwnd) 23 | { 24 | this.hwnd = hwnd; 25 | } 26 | 27 | 28 | //this allows virtual mouse event creation and win32 api calls 29 | //[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 30 | 31 | //creating virtual mouse events here 32 | //public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); 33 | 34 | [DllImport("user32.dll", CharSet = CharSet.Auto)] 35 | public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, IntPtr lParam); 36 | 37 | [DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)] 38 | static extern bool PostMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam); 39 | 40 | [DllImport("user32.dll")] 41 | static extern bool SetForegroundWindow(IntPtr hWnd); 42 | 43 | private const uint WM_KEYDOWN = 0x0100; 44 | private const uint WM_KEYUP = 0x0101; 45 | private const uint WM_SETTEXT = 0x000C; 46 | private const uint WM_CHAR = 0x102; 47 | private const uint WM_MOUSEMOVE = 0x0200; 48 | private const uint WM_LBUTTONDOWN = 0x0201; 49 | private const uint WM_LBUTTONUP = 0x0202; 50 | 51 | public static IntPtr MakeLParam(int wLow, int wHigh) 52 | { 53 | return (IntPtr)((wHigh << 16) | (wLow & 0xffff)); 54 | } 55 | 56 | public bool vClick(Point p) 57 | { 58 | int x = p.X, y = p.Y; 59 | if (x == -1 || y == -1) 60 | return false; 61 | SendMessage(this.hwnd, WM_LBUTTONDOWN, 0x0001, MakeLParam(x, y)); 62 | SendMessage(this.hwnd, WM_LBUTTONUP, 0x0000, MakeLParam(x, y)); 63 | Thread.Sleep(1500); 64 | return true; 65 | } 66 | 67 | 68 | public void vDrag(Point p1, Point p2, bool turf = true) 69 | { 70 | int dx = (p2.X - p1.X) / 40; 71 | int dy = (p2.Y - p1.Y) / 40; 72 | int x = 0, y = 0; 73 | SendMessage(this.hwnd, WM_LBUTTONDOWN, 0x0001, MakeLParam(p1.X, p1.Y)); 74 | for (int i = 1; i < 41; i++) 75 | { 76 | x = p1.X + (i * dx); 77 | y = p1.Y + (i * dy); 78 | SendMessage(this.hwnd, WM_MOUSEMOVE, 0x0001, MakeLParam(x, y)); 79 | Thread.Sleep(50); 80 | } 81 | Thread.Sleep(375); 82 | SendMessage(this.hwnd, WM_LBUTTONUP, 0x0000, MakeLParam(x, y)); 83 | } 84 | 85 | public void vMoveUp(bool turf = true) 86 | { 87 | int y = turf ? 175 : 225; 88 | vDrag(Statics.GAME_MID, new Point(Statics.GAME_MID.X, Statics.GAME_MID.Y + y)); 89 | } 90 | 91 | public void vMoveDown(bool turf = true) 92 | { 93 | int y = turf ? 175 : 225; 94 | vDrag(Statics.GAME_MID, new Point(Statics.GAME_MID.X, Statics.GAME_MID.Y - y)); 95 | } 96 | 97 | public void vMoveLeft(bool turf = true) 98 | { 99 | int x = turf ? 200 : 350; 100 | vDrag(Statics.GAME_MID, new Point(Statics.GAME_MID.X + x, Statics.GAME_MID.Y)); 101 | } 102 | 103 | public void vMoveRight(bool turf = true) 104 | { 105 | int x = turf ? 200 : 350; 106 | vDrag(Statics.GAME_MID, new Point(Statics.GAME_MID.X - x, Statics.GAME_MID.Y)); 107 | } 108 | 109 | public void vDragMouse(Point p1, Point p2) 110 | { 111 | vDrag(p1, p2); 112 | } 113 | 114 | public void vPressEsc() 115 | { 116 | IntPtr rv = SendMessage(this.hwnd, WM_KEYDOWN, (int)VirtualKeyCode.ESCAPE, (IntPtr)0x00010001); 117 | //IntPtr rv = SendMessage(hdl, WM_CHAR, (int)VirtualKeyCode.VK_L, (IntPtr)0); 118 | rv = SendMessage(this.hwnd, WM_KEYUP, (int)VirtualKeyCode.ESCAPE, (IntPtr)0); 119 | Debug.WriteLine(rv); 120 | Thread.Sleep(100); 121 | } 122 | 123 | public void vType(string toType) 124 | { 125 | char[] chars = toType.ToCharArray(); 126 | VirtualKeyCode vk; 127 | for (int i = 0; i < chars.Length; i++) 128 | { 129 | vk = (WindowsInput.Native.VirtualKeyCode)VkKeyScan(chars[i]); 130 | Debug.WriteLine(vk); 131 | SendMessage(this.hwnd, WM_KEYDOWN, (int)vk, IntPtr.Zero); 132 | SendMessage(this.hwnd, WM_KEYUP, (int)vk, IntPtr.Zero); 133 | Thread.Sleep(350); 134 | } 135 | } 136 | 137 | public void clickNumpad(int num) 138 | { 139 | switch (num) 140 | { 141 | case 1: vClick(Statics.NumPad.ONE); break; 142 | case 2: vClick(Statics.NumPad.TWO); break; 143 | case 3: vClick(Statics.NumPad.THREE); break; 144 | case 4: vClick(Statics.NumPad.FOUR); break; 145 | case 5: vClick(Statics.NumPad.FIVE); break; 146 | case 6: vClick(Statics.NumPad.SIX); break; 147 | case 7: vClick(Statics.NumPad.SEVEN); break; 148 | case 8: vClick(Statics.NumPad.EIGHT); break; 149 | case 9: vClick(Statics.NumPad.NINE); break; 150 | case 0: vClick(Statics.NumPad.ZERO); break; 151 | case -1: vClick(Statics.NumPad.CONFIRM); break; 152 | } 153 | } 154 | } 155 | } 156 | -------------------------------------------------------------------------------- /LordsMobile/DB.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Data.SQLite; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace LordsMobile 9 | { 10 | class DB 11 | { 12 | public static SQLiteConnection conn; 13 | 14 | public DB() 15 | { 16 | if (!System.IO.File.Exists("MaggotBot.sqlite")) 17 | { 18 | SQLiteConnection.CreateFile("MaggotBot.sqlite"); 19 | conn = new SQLiteConnection("Data Source=MaggotBot.sqlite"); 20 | conn.Open(); 21 | new SQLiteCommand("CREATE TABLE accounts (account VARCHAR(15) UNIQUE NOT NULL)", conn).ExecuteNonQuery(); 22 | new SQLiteCommand("CREATE TABLE talents (talent VARCHAR(40), level INT, account REFERENCES accounts(account))", conn).ExecuteNonQuery(); 23 | new SQLiteCommand("CREATE TABLE buildings (building VARCHAR(40), tile INT, level INT, account REFERENCES accounts(account))", conn).ExecuteNonQuery(); 24 | } else 25 | { 26 | conn = new SQLiteConnection("Data Source=MaggotBot.sqlite"); 27 | conn.Open(); 28 | } 29 | } 30 | 31 | public static SQLiteDataReader read(string query) 32 | { 33 | SQLiteCommand command = new SQLiteCommand(query, conn); 34 | return command.ExecuteReader(); 35 | } 36 | 37 | public static void insert(string query) 38 | { 39 | try 40 | { 41 | SQLiteCommand command = new SQLiteCommand(query, conn); 42 | command.ExecuteNonQuery(); 43 | } catch (Exception ex) 44 | { 45 | 46 | } 47 | } 48 | 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /LordsMobile/License-LGPL.txt: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 2.1, February 1999 3 | 4 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. 5 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | [This is the first released version of the Lesser GPL. It also counts 10 | as the successor of the GNU Library Public License, version 2, hence 11 | the version number 2.1.] 12 | 13 | Preamble 14 | 15 | The licenses for most software are designed to take away your 16 | freedom to share and change it. By contrast, the GNU General Public 17 | Licenses are intended to guarantee your freedom to share and change 18 | free software--to make sure the software is free for all its users. 19 | 20 | This license, the Lesser General Public License, applies to some 21 | specially designated software packages--typically libraries--of the 22 | Free Software Foundation and other authors who decide to use it. You 23 | can use it too, but we suggest you first think carefully about whether 24 | this license or the ordinary General Public License is the better 25 | strategy to use in any particular case, based on the explanations below. 26 | 27 | When we speak of free software, we are referring to freedom of use, 28 | not price. Our General Public Licenses are designed to make sure that 29 | you have the freedom to distribute copies of free software (and charge 30 | for this service if you wish); that you receive source code or can get 31 | it if you want it; that you can change the software and use pieces of 32 | it in new free programs; and that you are informed that you can do 33 | these things. 34 | 35 | To protect your rights, we need to make restrictions that forbid 36 | distributors to deny you these rights or to ask you to surrender these 37 | rights. These restrictions translate to certain responsibilities for 38 | you if you distribute copies of the library or if you modify it. 39 | 40 | For example, if you distribute copies of the library, whether gratis 41 | or for a fee, you must give the recipients all the rights that we gave 42 | you. You must make sure that they, too, receive or can get the source 43 | code. If you link other code with the library, you must provide 44 | complete object files to the recipients, so that they can relink them 45 | with the library after making changes to the library and recompiling 46 | it. And you must show them these terms so they know their rights. 47 | 48 | We protect your rights with a two-step method: (1) we copyright the 49 | library, and (2) we offer you this license, which gives you legal 50 | permission to copy, distribute and/or modify the library. 51 | 52 | To protect each distributor, we want to make it very clear that 53 | there is no warranty for the free library. Also, if the library is 54 | modified by someone else and passed on, the recipients should know 55 | that what they have is not the original version, so that the original 56 | author's reputation will not be affected by problems that might be 57 | introduced by others. 58 | 59 | Finally, software patents pose a constant threat to the existence of 60 | any free program. We wish to make sure that a company cannot 61 | effectively restrict the users of a free program by obtaining a 62 | restrictive license from a patent holder. Therefore, we insist that 63 | any patent license obtained for a version of the library must be 64 | consistent with the full freedom of use specified in this license. 65 | 66 | Most GNU software, including some libraries, is covered by the 67 | ordinary GNU General Public License. This license, the GNU Lesser 68 | General Public License, applies to certain designated libraries, and 69 | is quite different from the ordinary General Public License. We use 70 | this license for certain libraries in order to permit linking those 71 | libraries into non-free programs. 72 | 73 | When a program is linked with a library, whether statically or using 74 | a shared library, the combination of the two is legally speaking a 75 | combined work, a derivative of the original library. The ordinary 76 | General Public License therefore permits such linking only if the 77 | entire combination fits its criteria of freedom. The Lesser General 78 | Public License permits more lax criteria for linking other code with 79 | the library. 80 | 81 | We call this license the "Lesser" General Public License because it 82 | does Less to protect the user's freedom than the ordinary General 83 | Public License. It also provides other free software developers Less 84 | of an advantage over competing non-free programs. These disadvantages 85 | are the reason we use the ordinary General Public License for many 86 | libraries. However, the Lesser license provides advantages in certain 87 | special circumstances. 88 | 89 | For example, on rare occasions, there may be a special need to 90 | encourage the widest possible use of a certain library, so that it becomes 91 | a de-facto standard. To achieve this, non-free programs must be 92 | allowed to use the library. A more frequent case is that a free 93 | library does the same job as widely used non-free libraries. In this 94 | case, there is little to gain by limiting the free library to free 95 | software only, so we use the Lesser General Public License. 96 | 97 | In other cases, permission to use a particular library in non-free 98 | programs enables a greater number of people to use a large body of 99 | free software. For example, permission to use the GNU C Library in 100 | non-free programs enables many more people to use the whole GNU 101 | operating system, as well as its variant, the GNU/Linux operating 102 | system. 103 | 104 | Although the Lesser General Public License is Less protective of the 105 | users' freedom, it does ensure that the user of a program that is 106 | linked with the Library has the freedom and the wherewithal to run 107 | that program using a modified version of the Library. 108 | 109 | The precise terms and conditions for copying, distribution and 110 | modification follow. Pay close attention to the difference between a 111 | "work based on the library" and a "work that uses the library". The 112 | former contains code derived from the library, whereas the latter must 113 | be combined with the library in order to run. 114 | 115 | GNU LESSER GENERAL PUBLIC LICENSE 116 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 117 | 118 | 0. This License Agreement applies to any software library or other 119 | program which contains a notice placed by the copyright holder or 120 | other authorized party saying it may be distributed under the terms of 121 | this Lesser General Public License (also called "this License"). 122 | Each licensee is addressed as "you". 123 | 124 | A "library" means a collection of software functions and/or data 125 | prepared so as to be conveniently linked with application programs 126 | (which use some of those functions and data) to form executables. 127 | 128 | The "Library", below, refers to any such software library or work 129 | which has been distributed under these terms. A "work based on the 130 | Library" means either the Library or any derivative work under 131 | copyright law: that is to say, a work containing the Library or a 132 | portion of it, either verbatim or with modifications and/or translated 133 | straightforwardly into another language. (Hereinafter, translation is 134 | included without limitation in the term "modification".) 135 | 136 | "Source code" for a work means the preferred form of the work for 137 | making modifications to it. For a library, complete source code means 138 | all the source code for all modules it contains, plus any associated 139 | interface definition files, plus the scripts used to control compilation 140 | and installation of the library. 141 | 142 | Activities other than copying, distribution and modification are not 143 | covered by this License; they are outside its scope. The act of 144 | running a program using the Library is not restricted, and output from 145 | such a program is covered only if its contents constitute a work based 146 | on the Library (independent of the use of the Library in a tool for 147 | writing it). Whether that is true depends on what the Library does 148 | and what the program that uses the Library does. 149 | 150 | 1. You may copy and distribute verbatim copies of the Library's 151 | complete source code as you receive it, in any medium, provided that 152 | you conspicuously and appropriately publish on each copy an 153 | appropriate copyright notice and disclaimer of warranty; keep intact 154 | all the notices that refer to this License and to the absence of any 155 | warranty; and distribute a copy of this License along with the 156 | Library. 157 | 158 | You may charge a fee for the physical act of transferring a copy, 159 | and you may at your option offer warranty protection in exchange for a 160 | fee. 161 | 162 | 2. You may modify your copy or copies of the Library or any portion 163 | of it, thus forming a work based on the Library, and copy and 164 | distribute such modifications or work under the terms of Section 1 165 | above, provided that you also meet all of these conditions: 166 | 167 | a) The modified work must itself be a software library. 168 | 169 | b) You must cause the files modified to carry prominent notices 170 | stating that you changed the files and the date of any change. 171 | 172 | c) You must cause the whole of the work to be licensed at no 173 | charge to all third parties under the terms of this License. 174 | 175 | d) If a facility in the modified Library refers to a function or a 176 | table of data to be supplied by an application program that uses 177 | the facility, other than as an argument passed when the facility 178 | is invoked, then you must make a good faith effort to ensure that, 179 | in the event an application does not supply such function or 180 | table, the facility still operates, and performs whatever part of 181 | its purpose remains meaningful. 182 | 183 | (For example, a function in a library to compute square roots has 184 | a purpose that is entirely well-defined independent of the 185 | application. Therefore, Subsection 2d requires that any 186 | application-supplied function or table used by this function must 187 | be optional: if the application does not supply it, the square 188 | root function must still compute square roots.) 189 | 190 | These requirements apply to the modified work as a whole. If 191 | identifiable sections of that work are not derived from the Library, 192 | and can be reasonably considered independent and separate works in 193 | themselves, then this License, and its terms, do not apply to those 194 | sections when you distribute them as separate works. But when you 195 | distribute the same sections as part of a whole which is a work based 196 | on the Library, the distribution of the whole must be on the terms of 197 | this License, whose permissions for other licensees extend to the 198 | entire whole, and thus to each and every part regardless of who wrote 199 | it. 200 | 201 | Thus, it is not the intent of this section to claim rights or contest 202 | your rights to work written entirely by you; rather, the intent is to 203 | exercise the right to control the distribution of derivative or 204 | collective works based on the Library. 205 | 206 | In addition, mere aggregation of another work not based on the Library 207 | with the Library (or with a work based on the Library) on a volume of 208 | a storage or distribution medium does not bring the other work under 209 | the scope of this License. 210 | 211 | 3. You may opt to apply the terms of the ordinary GNU General Public 212 | License instead of this License to a given copy of the Library. To do 213 | this, you must alter all the notices that refer to this License, so 214 | that they refer to the ordinary GNU General Public License, version 2, 215 | instead of to this License. (If a newer version than version 2 of the 216 | ordinary GNU General Public License has appeared, then you can specify 217 | that version instead if you wish.) Do not make any other change in 218 | these notices. 219 | 220 | Once this change is made in a given copy, it is irreversible for 221 | that copy, so the ordinary GNU General Public License applies to all 222 | subsequent copies and derivative works made from that copy. 223 | 224 | This option is useful when you wish to copy part of the code of 225 | the Library into a program that is not a library. 226 | 227 | 4. You may copy and distribute the Library (or a portion or 228 | derivative of it, under Section 2) in object code or executable form 229 | under the terms of Sections 1 and 2 above provided that you accompany 230 | it with the complete corresponding machine-readable source code, which 231 | must be distributed under the terms of Sections 1 and 2 above on a 232 | medium customarily used for software interchange. 233 | 234 | If distribution of object code is made by offering access to copy 235 | from a designated place, then offering equivalent access to copy the 236 | source code from the same place satisfies the requirement to 237 | distribute the source code, even though third parties are not 238 | compelled to copy the source along with the object code. 239 | 240 | 5. A program that contains no derivative of any portion of the 241 | Library, but is designed to work with the Library by being compiled or 242 | linked with it, is called a "work that uses the Library". Such a 243 | work, in isolation, is not a derivative work of the Library, and 244 | therefore falls outside the scope of this License. 245 | 246 | However, linking a "work that uses the Library" with the Library 247 | creates an executable that is a derivative of the Library (because it 248 | contains portions of the Library), rather than a "work that uses the 249 | library". The executable is therefore covered by this License. 250 | Section 6 states terms for distribution of such executables. 251 | 252 | When a "work that uses the Library" uses material from a header file 253 | that is part of the Library, the object code for the work may be a 254 | derivative work of the Library even though the source code is not. 255 | Whether this is true is especially significant if the work can be 256 | linked without the Library, or if the work is itself a library. The 257 | threshold for this to be true is not precisely defined by law. 258 | 259 | If such an object file uses only numerical parameters, data 260 | structure layouts and accessors, and small macros and small inline 261 | functions (ten lines or less in length), then the use of the object 262 | file is unrestricted, regardless of whether it is legally a derivative 263 | work. (Executables containing this object code plus portions of the 264 | Library will still fall under Section 6.) 265 | 266 | Otherwise, if the work is a derivative of the Library, you may 267 | distribute the object code for the work under the terms of Section 6. 268 | Any executables containing that work also fall under Section 6, 269 | whether or not they are linked directly with the Library itself. 270 | 271 | 6. As an exception to the Sections above, you may also combine or 272 | link a "work that uses the Library" with the Library to produce a 273 | work containing portions of the Library, and distribute that work 274 | under terms of your choice, provided that the terms permit 275 | modification of the work for the customer's own use and reverse 276 | engineering for debugging such modifications. 277 | 278 | You must give prominent notice with each copy of the work that the 279 | Library is used in it and that the Library and its use are covered by 280 | this License. You must supply a copy of this License. If the work 281 | during execution displays copyright notices, you must include the 282 | copyright notice for the Library among them, as well as a reference 283 | directing the user to the copy of this License. Also, you must do one 284 | of these things: 285 | 286 | a) Accompany the work with the complete corresponding 287 | machine-readable source code for the Library including whatever 288 | changes were used in the work (which must be distributed under 289 | Sections 1 and 2 above); and, if the work is an executable linked 290 | with the Library, with the complete machine-readable "work that 291 | uses the Library", as object code and/or source code, so that the 292 | user can modify the Library and then relink to produce a modified 293 | executable containing the modified Library. (It is understood 294 | that the user who changes the contents of definitions files in the 295 | Library will not necessarily be able to recompile the application 296 | to use the modified definitions.) 297 | 298 | b) Use a suitable shared library mechanism for linking with the 299 | Library. A suitable mechanism is one that (1) uses at run time a 300 | copy of the library already present on the user's computer system, 301 | rather than copying library functions into the executable, and (2) 302 | will operate properly with a modified version of the library, if 303 | the user installs one, as long as the modified version is 304 | interface-compatible with the version that the work was made with. 305 | 306 | c) Accompany the work with a written offer, valid for at 307 | least three years, to give the same user the materials 308 | specified in Subsection 6a, above, for a charge no more 309 | than the cost of performing this distribution. 310 | 311 | d) If distribution of the work is made by offering access to copy 312 | from a designated place, offer equivalent access to copy the above 313 | specified materials from the same place. 314 | 315 | e) Verify that the user has already received a copy of these 316 | materials or that you have already sent this user a copy. 317 | 318 | For an executable, the required form of the "work that uses the 319 | Library" must include any data and utility programs needed for 320 | reproducing the executable from it. However, as a special exception, 321 | the materials to be distributed need not include anything that is 322 | normally distributed (in either source or binary form) with the major 323 | components (compiler, kernel, and so on) of the operating system on 324 | which the executable runs, unless that component itself accompanies 325 | the executable. 326 | 327 | It may happen that this requirement contradicts the license 328 | restrictions of other proprietary libraries that do not normally 329 | accompany the operating system. Such a contradiction means you cannot 330 | use both them and the Library together in an executable that you 331 | distribute. 332 | 333 | 7. You may place library facilities that are a work based on the 334 | Library side-by-side in a single library together with other library 335 | facilities not covered by this License, and distribute such a combined 336 | library, provided that the separate distribution of the work based on 337 | the Library and of the other library facilities is otherwise 338 | permitted, and provided that you do these two things: 339 | 340 | a) Accompany the combined library with a copy of the same work 341 | based on the Library, uncombined with any other library 342 | facilities. This must be distributed under the terms of the 343 | Sections above. 344 | 345 | b) Give prominent notice with the combined library of the fact 346 | that part of it is a work based on the Library, and explaining 347 | where to find the accompanying uncombined form of the same work. 348 | 349 | 8. You may not copy, modify, sublicense, link with, or distribute 350 | the Library except as expressly provided under this License. Any 351 | attempt otherwise to copy, modify, sublicense, link with, or 352 | distribute the Library is void, and will automatically terminate your 353 | rights under this License. However, parties who have received copies, 354 | or rights, from you under this License will not have their licenses 355 | terminated so long as such parties remain in full compliance. 356 | 357 | 9. You are not required to accept this License, since you have not 358 | signed it. However, nothing else grants you permission to modify or 359 | distribute the Library or its derivative works. These actions are 360 | prohibited by law if you do not accept this License. Therefore, by 361 | modifying or distributing the Library (or any work based on the 362 | Library), you indicate your acceptance of this License to do so, and 363 | all its terms and conditions for copying, distributing or modifying 364 | the Library or works based on it. 365 | 366 | 10. Each time you redistribute the Library (or any work based on the 367 | Library), the recipient automatically receives a license from the 368 | original licensor to copy, distribute, link with or modify the Library 369 | subject to these terms and conditions. You may not impose any further 370 | restrictions on the recipients' exercise of the rights granted herein. 371 | You are not responsible for enforcing compliance by third parties with 372 | this License. 373 | 374 | 11. If, as a consequence of a court judgment or allegation of patent 375 | infringement or for any other reason (not limited to patent issues), 376 | conditions are imposed on you (whether by court order, agreement or 377 | otherwise) that contradict the conditions of this License, they do not 378 | excuse you from the conditions of this License. If you cannot 379 | distribute so as to satisfy simultaneously your obligations under this 380 | License and any other pertinent obligations, then as a consequence you 381 | may not distribute the Library at all. For example, if a patent 382 | license would not permit royalty-free redistribution of the Library by 383 | all those who receive copies directly or indirectly through you, then 384 | the only way you could satisfy both it and this License would be to 385 | refrain entirely from distribution of the Library. 386 | 387 | If any portion of this section is held invalid or unenforceable under any 388 | particular circumstance, the balance of the section is intended to apply, 389 | and the section as a whole is intended to apply in other circumstances. 390 | 391 | It is not the purpose of this section to induce you to infringe any 392 | patents or other property right claims or to contest validity of any 393 | such claims; this section has the sole purpose of protecting the 394 | integrity of the free software distribution system which is 395 | implemented by public license practices. Many people have made 396 | generous contributions to the wide range of software distributed 397 | through that system in reliance on consistent application of that 398 | system; it is up to the author/donor to decide if he or she is willing 399 | to distribute software through any other system and a licensee cannot 400 | impose that choice. 401 | 402 | This section is intended to make thoroughly clear what is believed to 403 | be a consequence of the rest of this License. 404 | 405 | 12. If the distribution and/or use of the Library is restricted in 406 | certain countries either by patents or by copyrighted interfaces, the 407 | original copyright holder who places the Library under this License may add 408 | an explicit geographical distribution limitation excluding those countries, 409 | so that distribution is permitted only in or among countries not thus 410 | excluded. In such case, this License incorporates the limitation as if 411 | written in the body of this License. 412 | 413 | 13. The Free Software Foundation may publish revised and/or new 414 | versions of the Lesser General Public License from time to time. 415 | Such new versions will be similar in spirit to the present version, 416 | but may differ in detail to address new problems or concerns. 417 | 418 | Each version is given a distinguishing version number. If the Library 419 | specifies a version number of this License which applies to it and 420 | "any later version", you have the option of following the terms and 421 | conditions either of that version or of any later version published by 422 | the Free Software Foundation. If the Library does not specify a 423 | license version number, you may choose any version ever published by 424 | the Free Software Foundation. 425 | 426 | 14. If you wish to incorporate parts of the Library into other free 427 | programs whose distribution conditions are incompatible with these, 428 | write to the author to ask for permission. For software which is 429 | copyrighted by the Free Software Foundation, write to the Free 430 | Software Foundation; we sometimes make exceptions for this. Our 431 | decision will be guided by the two goals of preserving the free status 432 | of all derivatives of our free software and of promoting the sharing 433 | and reuse of software generally. 434 | 435 | NO WARRANTY 436 | 437 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 438 | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 439 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR 440 | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY 441 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE 442 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 443 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE 444 | LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME 445 | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 446 | 447 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 448 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY 449 | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU 450 | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR 451 | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE 452 | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING 453 | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 454 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF 455 | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 456 | DAMAGES. 457 | 458 | END OF TERMS AND CONDITIONS 459 | 460 | How to Apply These Terms to Your New Libraries 461 | 462 | If you develop a new library, and you want it to be of the greatest 463 | possible use to the public, we recommend making it free software that 464 | everyone can redistribute and change. You can do so by permitting 465 | redistribution under these terms (or, alternatively, under the terms of the 466 | ordinary General Public License). 467 | 468 | To apply these terms, attach the following notices to the library. It is 469 | safest to attach them to the start of each source file to most effectively 470 | convey the exclusion of warranty; and each file should have at least the 471 | "copyright" line and a pointer to where the full notice is found. 472 | 473 | 474 | Copyright (C) 475 | 476 | This library is free software; you can redistribute it and/or 477 | modify it under the terms of the GNU Lesser General Public 478 | License as published by the Free Software Foundation; either 479 | version 2.1 of the License, or (at your option) any later version. 480 | 481 | This library is distributed in the hope that it will be useful, 482 | but WITHOUT ANY WARRANTY; without even the implied warranty of 483 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 484 | Lesser General Public License for more details. 485 | 486 | You should have received a copy of the GNU Lesser General Public 487 | License along with this library; if not, write to the Free Software 488 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 489 | 490 | Also add information on how to contact you by electronic and paper mail. 491 | 492 | You should also get your employer (if you work as a programmer) or your 493 | school, if any, to sign a "copyright disclaimer" for the library, if 494 | necessary. Here is a sample; alter the names: 495 | 496 | Yoyodyne, Inc., hereby disclaims all copyright interest in the 497 | library `Frob' (a library for tweaking knobs) written by James Random Hacker. 498 | 499 | , 1 April 1990 500 | Ty Coon, President of Vice 501 | 502 | That's all there is to it! 503 | 504 | 505 | 506 | 507 | -------------------------------------------------------------------------------- /LordsMobile/LordsMobile.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {47ABE40E-439C-42B6-8A9F-3998427CEE97} 8 | WinExe 9 | LordsMobile 10 | LordsMobile 11 | v4.6.1 12 | 512 13 | true 14 | 15 | 16 | false 17 | publish\ 18 | true 19 | Disk 20 | false 21 | Foreground 22 | 7 23 | Days 24 | false 25 | false 26 | true 27 | 1 28 | 0.01.0.%2a 29 | false 30 | true 31 | true 32 | 33 | 34 | AnyCPU 35 | true 36 | full 37 | false 38 | bin\Debug\ 39 | DEBUG;TRACE 40 | prompt 41 | 4 42 | 43 | 44 | AnyCPU 45 | pdbonly 46 | true 47 | bin\Release\ 48 | TRACE 49 | prompt 50 | 4 51 | 52 | 53 | mega_maggot_GS1_icon.ico 54 | 55 | 56 | DAD9BBA123CC4C0024A2C29C3F49385208CCC0F6 57 | 58 | 59 | LordsMobile_TemporaryKey.pfx 60 | 61 | 62 | true 63 | 64 | 65 | true 66 | 67 | 68 | 69 | ..\packages\EMGU.CV.3.4.3.3016\lib\net35\Emgu.CV.UI.dll 70 | 71 | 72 | ..\packages\EMGU.CV.3.4.3.3016\lib\net35\Emgu.CV.World.dll 73 | 74 | 75 | ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll 76 | 77 | 78 | ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll 79 | 80 | 81 | ..\packages\SimWinMouse.1.0.0\lib\net20\SimWinMouse.dll 82 | 83 | 84 | 85 | 86 | 87 | ..\packages\System.Data.SQLite.Core.1.0.109.2\lib\net46\System.Data.SQLite.dll 88 | 89 | 90 | ..\packages\System.Data.SQLite.EF6.1.0.109.0\lib\net46\System.Data.SQLite.EF6.dll 91 | 92 | 93 | ..\packages\System.Data.SQLite.Linq.1.0.109.0\lib\net46\System.Data.SQLite.Linq.dll 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | ..\packages\Tesseract.3.0.2.0\lib\net451\Tesseract.dll 106 | 107 | 108 | ..\packages\InputSimulatorPlus.1.0.7\lib\net20\WindowsInput.dll 109 | 110 | 111 | ..\packages\ZedGraph.5.1.7\lib\net35-Client\ZedGraph.dll 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | Form 122 | 123 | 124 | MainForm.cs 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | MainForm.cs 141 | 142 | 143 | ResXFileCodeGenerator 144 | Resources.Designer.cs 145 | Designer 146 | 147 | 148 | True 149 | Resources.resx 150 | 151 | 152 | 153 | 154 | SettingsSingleFileGenerator 155 | Settings.Designer.cs 156 | 157 | 158 | True 159 | Settings.settings 160 | True 161 | 162 | 163 | Always 164 | 165 | 166 | Always 167 | 168 | 169 | Always 170 | 171 | 172 | Always 173 | 174 | 175 | Always 176 | 177 | 178 | Always 179 | 180 | 181 | Always 182 | 183 | 184 | Always 185 | 186 | 187 | Always 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | PreserveNewest 196 | 197 | 198 | PreserveNewest 199 | 200 | 201 | PreserveNewest 202 | 203 | 204 | PreserveNewest 205 | 206 | 207 | PreserveNewest 208 | 209 | 210 | PreserveNewest 211 | 212 | 213 | PreserveNewest 214 | 215 | 216 | PreserveNewest 217 | 218 | 219 | PreserveNewest 220 | 221 | 222 | PreserveNewest 223 | 224 | 225 | PreserveNewest 226 | 227 | 228 | PreserveNewest 229 | 230 | 231 | PreserveNewest 232 | 233 | 234 | PreserveNewest 235 | 236 | 237 | PreserveNewest 238 | 239 | 240 | PreserveNewest 241 | 242 | 243 | PreserveNewest 244 | 245 | 246 | PreserveNewest 247 | 248 | 249 | PreserveNewest 250 | 251 | 252 | PreserveNewest 253 | 254 | 255 | PreserveNewest 256 | 257 | 258 | PreserveNewest 259 | 260 | 261 | PreserveNewest 262 | 263 | 264 | PreserveNewest 265 | 266 | 267 | PreserveNewest 268 | 269 | 270 | PreserveNewest 271 | 272 | 273 | PreserveNewest 274 | 275 | 276 | PreserveNewest 277 | 278 | 279 | PreserveNewest 280 | 281 | 282 | PreserveNewest 283 | 284 | 285 | PreserveNewest 286 | 287 | 288 | PreserveNewest 289 | 290 | 291 | PreserveNewest 292 | 293 | 294 | PreserveNewest 295 | 296 | 297 | PreserveNewest 298 | 299 | 300 | PreserveNewest 301 | 302 | 303 | PreserveNewest 304 | 305 | 306 | PreserveNewest 307 | 308 | 309 | PreserveNewest 310 | 311 | 312 | PreserveNewest 313 | 314 | 315 | PreserveNewest 316 | 317 | 318 | PreserveNewest 319 | 320 | 321 | PreserveNewest 322 | 323 | 324 | PreserveNewest 325 | 326 | 327 | PreserveNewest 328 | 329 | 330 | PreserveNewest 331 | 332 | 333 | PreserveNewest 334 | 335 | 336 | PreserveNewest 337 | 338 | 339 | PreserveNewest 340 | 341 | 342 | PreserveNewest 343 | 344 | 345 | PreserveNewest 346 | 347 | 348 | PreserveNewest 349 | 350 | 351 | PreserveNewest 352 | 353 | 354 | PreserveNewest 355 | 356 | 357 | PreserveNewest 358 | 359 | 360 | PreserveNewest 361 | 362 | 363 | PreserveNewest 364 | 365 | 366 | PreserveNewest 367 | 368 | 369 | PreserveNewest 370 | 371 | 372 | PreserveNewest 373 | 374 | 375 | PreserveNewest 376 | 377 | 378 | PreserveNewest 379 | 380 | 381 | PreserveNewest 382 | 383 | 384 | PreserveNewest 385 | 386 | 387 | PreserveNewest 388 | 389 | 390 | PreserveNewest 391 | 392 | 393 | PreserveNewest 394 | 395 | 396 | PreserveNewest 397 | 398 | 399 | PreserveNewest 400 | 401 | 402 | PreserveNewest 403 | 404 | 405 | 406 | 407 | Always 408 | 409 | 410 | Always 411 | 412 | 413 | Always 414 | 415 | 416 | Always 417 | 418 | 419 | 420 | 421 | False 422 | Microsoft .NET Framework 4.6.1 %28x86 and x64%29 423 | true 424 | 425 | 426 | False 427 | .NET Framework 3.5 SP1 428 | false 429 | 430 | 431 | 432 | 433 | 434 | 435 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. 436 | 437 | 438 | 439 | 440 | 441 | -------------------------------------------------------------------------------- /LordsMobile/LordsMobile.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | publish\ 5 | 6 | 7 | 8 | 9 | 10 | en-US 11 | false 12 | 13 | 14 | false 15 | 16 | -------------------------------------------------------------------------------- /LordsMobile/LordsMobile_TemporaryKey.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/LordsMobile_TemporaryKey.pfx -------------------------------------------------------------------------------- /LordsMobile/MEmuManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.IO; 7 | using System.Diagnostics; 8 | using System.Threading; 9 | 10 | namespace LordsMobile 11 | { 12 | class MEmuManager 13 | { 14 | public static string[] instances; 15 | public static Process[] processes; 16 | private static String installPath = "C:\\Program Files (x86)\\Nox\\bin"; 17 | private static List> vms = new List>(); 18 | private static List allowedVMs = new List(); 19 | private static int runningVMs = 0; 20 | private static int lastVM = 0; 21 | 22 | const int SW_RESTORE = 9; 23 | [System.Runtime.InteropServices.DllImport("User32.dll")] 24 | private static extern bool SetForegroundWindow(IntPtr handle); 25 | [System.Runtime.InteropServices.DllImport("User32.dll")] 26 | private static extern bool ShowWindow(IntPtr handle, int nCmdShow); 27 | [System.Runtime.InteropServices.DllImport("User32.dll")] 28 | private static extern bool IsIconic(IntPtr handle); 29 | [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)] 30 | internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); 31 | 32 | public MEmuManager() 33 | { 34 | } 35 | 36 | public static int getRunningAmount() 37 | { 38 | return runningVMs; 39 | } 40 | 41 | public static void getVMs() 42 | { 43 | string[] dirs; 44 | try 45 | { 46 | dirs = Directory.GetDirectories("C:\\Program Files (x86)\\Nox\\bin\\BignoxVMS"); 47 | } catch(Exception ex) 48 | { 49 | dirs = Directory.GetDirectories("D:\\Program Files\\Nox\\bin\\BignoxVMS"); 50 | MEmuManager.installPath = "D:\\Program Files\\Nox\\bin"; 51 | } 52 | foreach (String dir in dirs) 53 | { 54 | string d = dir.Split('\\')[dir.Split('\\').Length - 1]; 55 | MEmuManager.vms.Add(new List() { d == "nox" ? "Nox_0" : d }); 56 | } 57 | } 58 | 59 | public static IntPtr getHandle(int vm) 60 | { 61 | return processes[vm].MainWindowHandle; 62 | } 63 | 64 | private static int startVM(string vm) 65 | { 66 | int vmInd = Array.IndexOf(MEmuManager.instances, null); 67 | string noxNum = vm.Split('_')[1]; 68 | 69 | Process proc = new Process 70 | { 71 | StartInfo = new ProcessStartInfo 72 | { 73 | FileName = installPath + "\\nox.exe", 74 | Arguments = "-clone:" + vm + " \"-title:MaggotBot" + noxNum + "\"", 75 | UseShellExecute = false, 76 | RedirectStandardOutput = true, 77 | CreateNoWindow = true 78 | } 79 | }; 80 | proc.Start(); 81 | do 82 | { 83 | System.Threading.Thread.Sleep(1000); 84 | Process[] p = Process.GetProcesses(); 85 | foreach (Process pr in p) 86 | { 87 | if (pr.MainWindowTitle == "MaggotBot" + noxNum) 88 | processes[vmInd] = pr; 89 | } 90 | } while (processes[vmInd] == null); 91 | Thread.Sleep(500); 92 | Debug.WriteLine("Process Found: " + processes[vmInd].MainWindowTitle); 93 | resizeWindow(vmInd); 94 | Thread.Sleep(500); 95 | instances[vmInd] = vm; 96 | 97 | return vmInd; 98 | } 99 | 100 | public static void resizeWindow(int vmInd) 101 | { 102 | MoveWindow(processes[vmInd].MainWindowHandle, 0, 0, Statics.GAME_WIDTH, Statics.GAME_HEIGHT, true); 103 | } 104 | 105 | public static int startVMs() 106 | { 107 | int p = 0; 108 | int vmsLeft = Settings.maxVMs - MEmuManager.runningVMs; 109 | if (MEmuManager.runningVMs < Settings.maxVMs && MEmuManager.runningVMs < MEmuManager.allowedVMs.Count) 110 | { 111 | if (MEmuManager.lastVM < MEmuManager.allowedVMs.Count) 112 | { 113 | p = MEmuManager.startVM(MEmuManager.allowedVMs[MEmuManager.lastVM]); 114 | MEmuManager.lastVM++; 115 | MEmuManager.runningVMs++; 116 | } 117 | else 118 | { 119 | MEmuManager.lastVM = 0; 120 | p = MEmuManager.startVM(MEmuManager.allowedVMs[MEmuManager.lastVM]); 121 | MEmuManager.lastVM++; 122 | MEmuManager.runningVMs++; 123 | } 124 | } 125 | return p; 126 | } 127 | 128 | public static List> getMEmuIDs() 129 | { 130 | return MEmuManager.vms; 131 | } 132 | 133 | public static void setAllowedVMs(string vm) 134 | { 135 | MEmuManager.allowedVMs.Add(vm); 136 | } 137 | 138 | public static List getAllowedVMs() 139 | { 140 | return MEmuManager.allowedVMs; 141 | } 142 | 143 | public static void setMaxInstances(int numInstances) 144 | { 145 | MEmuManager.instances = new string[numInstances]; 146 | MEmuManager.processes = new Process[numInstances]; 147 | for (int i = 0; i < MEmuManager.instances.Length; i++) 148 | { 149 | MEmuManager.instances[i] = null; 150 | MEmuManager.processes[i] = null; 151 | } 152 | Settings.maxVMs = numInstances; 153 | } 154 | 155 | public static void killVM(int vm) 156 | { 157 | Process proc = new Process 158 | { 159 | StartInfo = new ProcessStartInfo 160 | { 161 | FileName = installPath + "\\nox.exe", 162 | Arguments = "-clone:" + MEmuManager.instances[vm], 163 | UseShellExecute = false, 164 | RedirectStandardOutput = true, 165 | CreateNoWindow = true 166 | } 167 | }; 168 | MEmuManager.instances[vm] = null; 169 | MEmuManager.processes[vm] = null; 170 | proc.Start(); 171 | MEmuManager.runningVMs--; 172 | } 173 | 174 | public static void killAll() 175 | { 176 | for (int vm = 0; vm < processes.Length; vm++) 177 | { 178 | MEmuManager.killVM(vm); 179 | } 180 | } 181 | 182 | public static void bringToFront(int vm) 183 | { 184 | Process process = MEmuManager.processes[vm]; 185 | IntPtr handle = process.MainWindowHandle; 186 | if (IsIconic(handle)) 187 | { 188 | ShowWindow(handle, SW_RESTORE); 189 | } 190 | SetForegroundWindow(handle); 191 | } 192 | } 193 | } 194 | -------------------------------------------------------------------------------- /LordsMobile/MainForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.Diagnostics; 11 | using System.Runtime.InteropServices; 12 | using System.Threading; 13 | using WindowsInput.Native; 14 | using WindowsInput; 15 | using LordsMobile.Scripts; 16 | using Emgu.CV; 17 | using Emgu.CV.Structure; 18 | 19 | namespace LordsMobile 20 | { 21 | public partial class MainForm : Form 22 | { 23 | Thread theBot; 24 | [DllImport("user32.dll")] 25 | public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc); 26 | [DllImport("user32.dll")] 27 | public static extern bool UnregisterHotKey(IntPtr hWnd, int id); 28 | const int MYACTION_HOTKEY_ID = 1; 29 | 30 | [DllImport("user32.dll", EntryPoint = "FindWindowEx")] 31 | public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 32 | 33 | 34 | public MainForm() 35 | { 36 | RegisterHotKey(this.Handle, MYACTION_HOTKEY_ID, 6, (int)Keys.F12); 37 | new DB(); 38 | MEmuManager.getVMs(); 39 | InitializeComponent(); 40 | lstMEmuProfiles.View = View.Details; 41 | lstMEmuProfiles.CheckBoxes = true; 42 | foreach (List vm in MEmuManager.getMEmuIDs()) 43 | { 44 | ListViewItem item = new ListViewItem(new[] { "", vm[0] }); 45 | item.Checked = true; 46 | this.lstMEmuProfiles.Items.Add(item); 47 | this.lstProfiles.Items.Add(vm[0]); 48 | } 49 | ttpInstances.SetToolTip(this.lblNoInstances, Strings.noOfInstancesToolTip); 50 | ttpInstances.SetToolTip(this.txtNoInstances, Strings.noOfInstancesToolTip); 51 | ttpInstances.SetToolTip(this.lblTimeOnAccount, Strings.amtOfTimeToolTip); 52 | ttpInstances.SetToolTip(this.txtTimeOnAccount, Strings.amtOfTimeToolTip); 53 | } 54 | 55 | private void lstProfiles_SelectedIndexChanged(object sender, EventArgs e) 56 | { 57 | Debug.WriteLine(lstProfiles.SelectedIndex); 58 | } 59 | 60 | private void btnStart_Click(object sender, EventArgs e) 61 | { 62 | foreach (ListViewItem item in lstMEmuProfiles.Items) 63 | { 64 | if (item.Checked) 65 | MEmuManager.setAllowedVMs(item.SubItems[1].Text); 66 | } 67 | MEmuManager.setMaxInstances(int.Parse(txtNoInstances.Text)); 68 | Settings.duration = int.Parse(this.txtTimeOnAccount.Text); 69 | Settings.hiveCoordK = this.txtKCoord.Text; 70 | Settings.hiveCoordX = this.txtXCoord.Text; 71 | Settings.hiveCoordY = this.txtYCoord.Text; 72 | Settings.namePrefix = this.txtAccountName.Text; 73 | Settings.guildName = this.txtGuildName.Text; 74 | Settings.maxVMs = int.Parse(this.txtNoInstances.Text); 75 | if (Settings.maxVMs > MEmuManager.getAllowedVMs().Count) 76 | Settings.maxVMs = MEmuManager.getAllowedVMs().Count; 77 | Settings.maxArchers = int.Parse(this.txtArchers.Text); 78 | Settings.maxGrunts = int.Parse(this.txtGrunts.Text); 79 | Settings.maxCataphracts = int.Parse(this.txtCataphracts.Text); 80 | Settings.maxBallistas = int.Parse(this.txtBallistas.Text); 81 | theBot = new Thread(Bot.start); 82 | theBot.Start(); 83 | } 84 | 85 | private void button1_Click(object sender, EventArgs e) 86 | { 87 | Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); 88 | Graphics gr = Graphics.FromImage(bmp); 89 | gr.CopyFromScreen(0, 0, 0, 0, bmp.Size); 90 | 91 | Image imageCV = new Image(bmp); 92 | Imageframe = imageCV.Convert(); 93 | frame = frame.ThresholdBinary(new Gray(150), new Gray(255.0)); 94 | imageCV.Dispose(); 95 | gr.Dispose(); 96 | Image tmp = Emgu.CV.CvInvoke.Imread(Assets.Etc.Close).ToImage(); 97 | using (Image imgMatch = frame.MatchTemplate(tmp, Emgu.CV.CvEnum.TemplateMatchingType.CcoeffNormed)) 98 | { 99 | double[] minValues, maxValues; 100 | Point[] minLocations, maxLocations; 101 | imgMatch.MinMax(out minValues, out maxValues, out minLocations, out maxLocations); 102 | imgMatch.Dispose(); 103 | if (maxValues[0] >= 0.65) 104 | { 105 | Rectangle match = new Rectangle(maxLocations[0], tmp.Size); 106 | frame.Draw(match, new Gray(255), 25); 107 | frame.Save("C:\\temp\\" + DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString() + ".jpg"); 108 | } 109 | else 110 | frame.Save("C:\\temp\\" + DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString() + ".jpg"); 111 | } 112 | tmp.Dispose(); 113 | } 114 | 115 | [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)] 116 | internal static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint); 117 | 118 | 119 | private void button2_Click(object sender, EventArgs e) 120 | { 121 | Process[] p = Process.GetProcesses(); 122 | Process theP = null; 123 | foreach (Process pr in p) 124 | { 125 | if (pr.MainWindowTitle == "MaggotBot0") 126 | { 127 | theP = pr; 128 | break; 129 | } 130 | } 131 | Debug.WriteLine(theP.MainWindowTitle); 132 | MoveWindow(theP.MainWindowHandle, 0, 0, Statics.GAME_WIDTH, Statics.GAME_HEIGHT, true); 133 | 134 | //Controller.vClick(theP.MainWindowHandle, Vision.testMatch(Assets.Tutorial.TapGo, 0.45)); 135 | //Vision.testMatch(Assets.Tutorial.TapGo, 0.45); 136 | 137 | 138 | //Controller.vClick(theP.MainWindowHandle, Vision.matchTemplate(theP.MainWindowHandle, Assets.MEmu.Lords2, 0.6)); 139 | 140 | //while (!Tutorial.hasTutorial() && Vision.matchTemplate(hdl, Assets.Etc.Close, 0.8).X == -1 && Vision.matchTemplate(hdl, Assets.Etc.Oracle, 0.55).X == -1) 141 | //{ 142 | // Thread.Sleep(1500); 143 | //} 144 | //Debug.WriteLine("found"); 145 | //Thread.Sleep(1500); 146 | //Thread t; 147 | //t = new Thread(() => Tutorial.doTutorial(theP.MainWindowHandle, new Vision())); 148 | //t.Start(); 149 | 150 | //Controller.vPressEsc(theP.MainWindowHandle); 151 | } 152 | 153 | private void button3_Click(object sender, EventArgs e) 154 | { 155 | //Controller.moveUp(); 156 | //Controller.moveRight(); 157 | } 158 | 159 | private void button6_Click(object sender, EventArgs e) 160 | { 161 | //Controller.moveRight(checkBox1.Checked); 162 | } 163 | 164 | private void button7_Click(object sender, EventArgs e) 165 | { 166 | //Controller.moveDown(checkBox1.Checked); 167 | } 168 | 169 | private void button5_Click(object sender, EventArgs e) 170 | { 171 | //Controller.moveLeft(checkBox1.Checked); 172 | } 173 | 174 | private void button4_Click(object sender, EventArgs e) 175 | { 176 | //Controller.moveUp(checkBox1.Checked); 177 | } 178 | 179 | protected override void WndProc(ref Message m) 180 | { 181 | if (m.Msg == 0x0312 && m.WParam.ToInt32() == MYACTION_HOTKEY_ID) 182 | { 183 | //Bot.stop(); 184 | //theBot.Join(); 185 | Bot.stop(); 186 | theBot.Abort(); 187 | //MEmuManager.killAll(); 188 | //MEmuManager.instances = null; 189 | //MEmuManager.processes = null; 190 | } 191 | base.WndProc(ref m); 192 | } 193 | 194 | private void button3_Click_1(object sender, EventArgs e) 195 | { 196 | Random rnd = new Random(); 197 | Settings.duration = int.Parse(this.txtTimeOnAccount.Text); 198 | Settings.hiveCoordK = this.txtKCoord.Text; 199 | Settings.hiveCoordX = this.txtXCoord.Text; 200 | Settings.hiveCoordY = this.txtYCoord.Text; 201 | Settings.namePrefix = this.txtAccountName.Text; 202 | Settings.guildName = this.txtGuildName.Text; 203 | Settings.maxArchers = int.Parse(this.txtArchers.Text); 204 | Settings.maxGrunts = int.Parse(this.txtGrunts.Text); 205 | Settings.maxCataphracts = int.Parse(this.txtCataphracts.Text); 206 | Settings.maxBallistas = int.Parse(this.txtBallistas.Text); 207 | 208 | } 209 | } 210 | } 211 | -------------------------------------------------------------------------------- /LordsMobile/Profile.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading; 6 | using System.Threading.Tasks; 7 | 8 | namespace LordsMobile 9 | { 10 | class Profile 11 | { 12 | private string accountNo = ""; 13 | private List buildings = new List(); 14 | private State s; 15 | 16 | public Profile(State s) 17 | { 18 | this.s = s; 19 | } 20 | 21 | public string getAccountNo() 22 | { 23 | return this.accountNo; 24 | } 25 | 26 | public void getProfile() 27 | { 28 | Thread.Sleep(1000); 29 | s.c.vClick(Statics.Hud.SETTINGS); 30 | s.c.vClick(Statics.Settings.Account.POINT); 31 | this.accountNo = s.v.readText(Statics.Settings.Account.ROI); 32 | Thread.Sleep(500); 33 | getAccount(); 34 | } 35 | 36 | private void getAccount() 37 | { 38 | if (DB.read("SELECT account FROM accounts WHERE account = '" + this.accountNo + "'").HasRows) 39 | return; 40 | else 41 | addAccount(); 42 | } 43 | 44 | private void addAccount() 45 | { 46 | DB.insert("INSERT INTO accounts (account) VALUES (" + this.accountNo + ")"); 47 | } 48 | 49 | class Building 50 | { 51 | public string Tile; 52 | public int Level; 53 | public string Type; 54 | public Building(string bldg, string tile, int level) 55 | { 56 | this.Type = bldg; 57 | this.Tile = tile; 58 | this.Level = level; 59 | } 60 | } 61 | 62 | class Talent 63 | { 64 | public string Type; 65 | public int Level; 66 | public Talent(string tlnt, int level) 67 | { 68 | this.Type = tlnt; 69 | this.Level = level; 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /LordsMobile/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace LordsMobile 8 | { 9 | static class Program 10 | { 11 | [STAThread] 12 | static void Main() 13 | { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | MainForm f = new MainForm(); 17 | Application.Run(f); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /LordsMobile/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("LordsMobile")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("LordsMobile")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("47abe40e-439c-42b6-8a9f-3998427cee97")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /LordsMobile/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace LordsMobile.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LordsMobile.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /LordsMobile/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /LordsMobile/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace LordsMobile.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /LordsMobile/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /LordsMobile/Scripts/Build.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading; 7 | using System.Threading.Tasks; 8 | 9 | namespace LordsMobile.Scripts 10 | { 11 | class Build 12 | { 13 | private State state; 14 | public Build(State s) 15 | { 16 | this.state = s; 17 | } 18 | 19 | public DateTime build() 20 | { 21 | Thread.Sleep(1000); 22 | state.reset(); 23 | 24 | state.c.vClick(Statics.Screen1.CASTLE); 25 | 26 | while(true) 27 | { 28 | if (state.c.vClick(state.v.matchTemplate(Assets.Development.Upgrade, 0.7))) 29 | Thread.Sleep(500); 30 | 31 | for (int i = 0; i < 3; i++) 32 | { 33 | if (state.c.vClick(state.v.matchTemplate(Assets.Development.Go, 0.7))) 34 | { 35 | Thread.Sleep(1500); 36 | state.c.vClick(new Point(Statics.GAME_MID.X, Statics.GAME_MID.Y + 55)); 37 | break; 38 | } 39 | Thread.Sleep(500); 40 | } 41 | Point isNew = state.v.matchTemplate(Assets.Development.New, 0.7); 42 | if (isNew.X != -1) 43 | { 44 | state.c.vClick(new Point(isNew.X + 162, isNew.Y)); 45 | } 46 | if (state.v.matchTemplate(Assets.Development.NoRes, 0.8).X != -1) 47 | return DateTime.Now; 48 | 49 | if (state.v.matchTemplate(Assets.Development.Upgrade, 0.7).X == -1) 50 | break; 51 | } 52 | state.c.vClick(Statics.Building.BUILD); 53 | return DateTime.Now.Subtract(DateTime.Now.AddMinutes(5) - DateTime.Now); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /LordsMobile/Scripts/Core.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Drawing; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace LordsMobile.Scripts 10 | { 11 | class Core 12 | { 13 | public static DateTime mainChecks(State s, int curScreen = -1) 14 | { 15 | s.reset(); 16 | Action[] to = new Action[] { () => s.c.vMoveUp(), () => s.c.vMoveRight() }; 17 | Action[] from = new Action[] { () => s.c.vMoveLeft(), () => s.c.vMoveDown() }; 18 | foreach (Action a in to) 19 | { 20 | a(); 21 | } 22 | 23 | if (s.v.matchTemplate(Assets.Turf.Infirmary, 0.75).X != -1) 24 | { 25 | s.c.vClick(Statics.Screen3.INFIRMARY); 26 | s.c.vClick(new Point(496, 543)); 27 | s.clearScreen(); 28 | } 29 | 30 | if (s.v.matchTemplate(Assets.Turf.Shelter, 0.65).X != -1) 31 | { 32 | s.c.vClick(Statics.Screen3.SHELTER); 33 | s.c.vClick(new Point(604, 407)); 34 | s.c.vClick(new Point(492, 458)); 35 | s.c.vClick(new Point(731, 355)); 36 | s.c.vClick(new Point(553, 271)); 37 | s.c.vClick(new Point(726, 466)); 38 | s.clearScreen(); 39 | } 40 | 41 | if (s.v.matchTemplate(Assets.Turf.Barracks, 0.7).X != -1) 42 | { 43 | s.c.vClick(Statics.Screen3.BARRACKS); 44 | bool train = false; 45 | try 46 | { 47 | if (int.Parse(s.v.readText(Statics.Barracks.GRUNT_AMT, true)) < Settings.maxGrunts) 48 | { 49 | s.c.vClick(Statics.Barracks.GRUNT); 50 | train = true; 51 | } 52 | else if (int.Parse(s.v.readText(Statics.Barracks.ARCHER_AMT, true)) < Settings.maxArchers) 53 | { 54 | s.c.vClick(Statics.Barracks.ARCHER); 55 | train = true; 56 | } 57 | else if (int.Parse(s.v.readText(Statics.Barracks.CATAPHRACT_AMT, true)) < Settings.maxCataphracts) 58 | { 59 | s.c.vClick(Statics.Barracks.CATAPHRACT); 60 | train = true; 61 | } 62 | else if (int.Parse(s.v.readText(Statics.Barracks.BALLISTA_AMT, true)) < Settings.maxBallistas) 63 | { 64 | s.c.vClick(Statics.Barracks.BALLISTA); 65 | train = true; 66 | } 67 | } catch(Exception ex) 68 | { 69 | Debug.WriteLine(ex.ToString()); 70 | } 71 | 72 | if (train) 73 | { 74 | s.c.vClick(Statics.Barracks.TRAIN); 75 | } 76 | s.clearScreen(); 77 | } 78 | 79 | foreach (Action a in from) 80 | { 81 | a(); 82 | } 83 | return DateTime.Now; 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /LordsMobile/Scripts/Gather.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LordsMobile.Scripts 8 | { 9 | class Gather 10 | { 11 | private Action[] moves; 12 | private State state; 13 | 14 | public Gather(State state) 15 | { 16 | this.state = state; 17 | moves = new Action[] 18 | { 19 | () => state.c.vMoveLeft(false), 20 | () => state.c.vMoveUp(false), 21 | () => state.c.vMoveRight(false), 22 | () => state.c.vMoveRight(false), 23 | () => state.c.vMoveDown(false), 24 | () => state.c.vMoveDown(false), 25 | () => state.c.vMoveLeft(false), 26 | () => state.c.vMoveLeft(false), 27 | () => state.c.vMoveLeft(false), 28 | () => state.c.vMoveUp(false), 29 | () => state.c.vMoveUp(false), 30 | () => state.c.vMoveUp(false), 31 | () => state.c.vMoveRight(false), 32 | () => state.c.vMoveRight(false), 33 | () => state.c.vMoveRight(false), 34 | () => state.c.vMoveRight(false) 35 | }; 36 | } 37 | 38 | public int gather(int resource) 39 | { 40 | 41 | String[] assets = new String[0]; 42 | bool gathering = false; 43 | switch(resource) 44 | { 45 | case 0: 46 | assets = Assets.Gather.Field; 47 | break; 48 | case 1: 49 | assets = Assets.Gather.Rocks; 50 | break; 51 | case 2: 52 | assets = Assets.Gather.Ore; 53 | break; 54 | case 3: 55 | assets = Assets.Gather.Wood; 56 | break; 57 | case 4: 58 | assets = Assets.Gather.Gold; 59 | break; 60 | } 61 | 62 | state.clearScreen(); 63 | state.goTo(false); 64 | foreach (Action a in moves) 65 | { 66 | for (int i = 1; i < assets.Length; i++) 67 | { 68 | if (state.c.vClick(state.v.matchTemplate(assets[i], 0.25, true))) 69 | { 70 | if (state.v.matchTemplate(assets[0], 0.7).X != -1 && state.v.matchTemplate(Assets.Gather.GatherRes, 0.7).X != -1) 71 | { 72 | gathering = true; 73 | break; 74 | } 75 | state.clearScreen(); 76 | } 77 | } 78 | if (gathering) 79 | break; 80 | 81 | a(); 82 | } 83 | state.c.vClick(Statics.Gather.GATHER); 84 | state.c.vClick(Statics.Gather.ASSEMBLE); 85 | state.c.vClick(Statics.Gather.START); 86 | state.goTo(); 87 | 88 | return ++resource % 5; 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /LordsMobile/Scripts/Tutorial.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Drawing; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading; 8 | using System.Threading.Tasks; 9 | 10 | namespace LordsMobile.Scripts 11 | { 12 | class Tutorial 13 | { 14 | State s; 15 | 16 | public Tutorial(State s) 17 | { 18 | this.s = s; 19 | } 20 | public void doTutorial() 21 | { 22 | if (!hasTutorial()) 23 | return; 24 | 25 | //Bot.states[Bot.currentVM].state = "Doing tutorial"; 26 | 27 | if (!stage1()) 28 | return; 29 | 30 | if (!stage2()) 31 | return; 32 | 33 | if (!stage3()) 34 | return; 35 | 36 | if (!stage4()) 37 | return; 38 | 39 | if (!stage5()) 40 | return; 41 | 42 | if (!stage6()) 43 | return; 44 | 45 | if (!stage7()) 46 | return; 47 | } 48 | 49 | public bool hasTutorial() 50 | { 51 | while (s.v.matchTemplate(Assets.Tutorial.Important, 0.45).X == -1 && s.v.matchTemplate(Assets.Etc.Close, 0.55).X == -1) { 52 | Thread.Sleep(500); 53 | } 54 | return s.v.matchTemplate(Assets.Tutorial.Important, 0.45).X != -1; 55 | } 56 | 57 | public bool stage1() 58 | { 59 | while (s.v.matchTemplate(Assets.Tutorial.Important, 0.65).X == -1 && s.v.matchTemplate(Assets.Tutorial.OathKeeper, 0.65).X == -1) 60 | { 61 | s.c.vClick(new Point(12, 275)); 62 | Thread.Sleep(350); 63 | } 64 | if (s.v.matchTemplate(Assets.Tutorial.Important, 0.65).X != -1) 65 | s.c.vClick(Statics.Tutorial.AGREE); 66 | return true; 67 | } 68 | 69 | public bool stage2() 70 | { 71 | while (s.v.matchTemplate(Assets.Tutorial.TapGo, 0.45).X == -1) 72 | { 73 | s.c.vClick(Statics.GAME_MID); 74 | Thread.Sleep(350); 75 | } 76 | Thread.Sleep(500); 77 | return true; 78 | } 79 | 80 | public bool stage3() 81 | { 82 | s.c.vClick(Statics.Tutorial.BUILD_BARRACKS); 83 | Thread.Sleep(2000); 84 | s.c.vClick(Statics.Tutorial.BUILD_BARRACKS2); 85 | Thread.Sleep(2000); 86 | s.c.vClick(Statics.Tutorial.BUILD_BARRACKS3); 87 | Thread.Sleep(2000); 88 | s.c.vClick(Statics.Building.BUILD); 89 | Thread.Sleep(2000); 90 | s.c.vClick(Statics.Tutorial.FREE_SPEED); 91 | Thread.Sleep(2000); 92 | s.c.vClick(Statics.Tutorial.BUILD_BARRACKS5); 93 | Thread.Sleep(2000); 94 | s.c.vClick(Statics.GAME_MID); 95 | Thread.Sleep(2000); 96 | return true; 97 | } 98 | 99 | public bool stage4() 100 | { 101 | Debug.WriteLine("Stage 4"); 102 | s.c.vClick(new Point(414, 472)); 103 | Thread.Sleep(2000); 104 | s.c.vClick(new Point(414, 472)); 105 | Thread.Sleep(2000); 106 | s.c.vClick(Statics.Tutorial.BUILD_CASTLE); 107 | Thread.Sleep(3000); 108 | s.c.vClick(Statics.Tutorial.BUILD_CASTLE2); 109 | Thread.Sleep(3500); 110 | s.c.vClick(Statics.Building.BUILD); 111 | Thread.Sleep(3000); 112 | s.c.vClick(Statics.Building.BUILD); 113 | Thread.Sleep(3000); 114 | s.c.vClick(Statics.Tutorial.FREE_SPEED); 115 | Thread.Sleep(3000); 116 | s.c.vClick(Statics.Tutorial.BUILD_CASTLE3); 117 | Thread.Sleep(3000); 118 | s.c.vClick(Statics.Tutorial.BUILD_CASTLE4); 119 | Thread.Sleep(3000); 120 | s.c.vClick(Statics.GAME_MID); 121 | Thread.Sleep(2000); 122 | s.c.vClick(Statics.GAME_MID); 123 | Thread.Sleep(3000); 124 | s.c.vClick(Statics.Tutorial.CLOSE_VIP); 125 | Thread.Sleep(3000); 126 | s.c.vClick(Statics.GAME_MID); 127 | Thread.Sleep(3000); 128 | return true; 129 | 130 | //Debug.WriteLine("Stage 4"); 131 | //s.c.vClick(Statics.Tutorial.BUILD_CASTLE); 132 | //Thread.Sleep(3000); 133 | //s.c.vClick(Statics.Tutorial.BUILD_CASTLE2); 134 | //Thread.Sleep(3000); 135 | //s.c.vClick(Statics.Building.BUILD); 136 | //Thread.Sleep(3000); 137 | //s.c.vClick(Statics.Building.BUILD); 138 | //Thread.Sleep(3000); 139 | //s.c.vClick(Statics.Tutorial.FREE_SPEED); 140 | //Thread.Sleep(3000); 141 | //s.c.vClick(Statics.Tutorial.BUILD_CASTLE3); 142 | //Thread.Sleep(3000); 143 | //s.c.vClick(Statics.Tutorial.BUILD_CASTLE4); 144 | //Thread.Sleep(3000); 145 | //s.c.vClick(Statics.GAME_MID); 146 | //Thread.Sleep(2000); 147 | //s.c.vClick(Statics.GAME_MID); 148 | //Thread.Sleep(3000); 149 | //s.c.vClick(Statics.Tutorial.CLOSE_VIP); 150 | //Thread.Sleep(3000); 151 | //s.c.vClick(Statics.GAME_MID); 152 | //Thread.Sleep(3000); 153 | //return true; 154 | } 155 | 156 | public bool stage5() 157 | { 158 | s.c.vClick(Statics.Tutorial.GO_TRAIN_BALLISTA); 159 | Thread.Sleep(2000); 160 | s.c.vClick(Statics.Tutorial.BUILD_BARRACKS2); 161 | Thread.Sleep(3500); 162 | s.c.vClick(Statics.GAME_MID); 163 | Thread.Sleep(50); 164 | s.c.vClick(Statics.GAME_MID); 165 | Thread.Sleep(2000); 166 | s.c.vClick(Statics.Barracks.BALLISTA); 167 | Thread.Sleep(2000); 168 | s.c.vClick(Statics.Barracks.TRAIN); 169 | Thread.Sleep(2000); 170 | s.c.vClick(Statics.GAME_MID); 171 | Thread.Sleep(2000); 172 | s.c.vClick(Statics.CLOSE_MAIN); 173 | Thread.Sleep(2000); 174 | while (s.v.matchTemplate(Assets.Tutorial.Skirmish1, 0.65).X == -1) 175 | { 176 | Thread.Sleep(500); 177 | } 178 | return true; 179 | } 180 | 181 | public bool stage6() 182 | { 183 | s.c.vClick(Statics.Tutorial.GO_SKIRMISH1); 184 | while (s.v.matchTemplate(Assets.Tutorial.Confirm, 0.8).X == -1) 185 | { 186 | Thread.Sleep(500); 187 | } 188 | s.c.vClick(s.v.matchTemplate(Assets.Tutorial.Confirm, 0.8)); 189 | Thread.Sleep(1000); 190 | s.c.vClick(Statics.GAME_MID); 191 | Thread.Sleep(1000); 192 | s.c.vClick(Statics.Tutorial.CASTLE_SKIRMISH1); 193 | Thread.Sleep(2000); 194 | s.c.vClick(Statics.Tutorial.SCOUT_SKIRMISH1); 195 | Thread.Sleep(1000); 196 | s.c.vClick(Statics.Tutorial.BATTLETIPS_SKIRMISH1); 197 | Thread.Sleep(1000); 198 | s.c.vClick(Statics.CLOSE_MAIN); 199 | Thread.Sleep(1000); 200 | s.c.vClick(new Point(564, 410)); 201 | Thread.Sleep(1000); 202 | s.c.vClick(new Point(375, 157)); 203 | Thread.Sleep(1000); 204 | s.c.vClick(new Point(375, 376)); 205 | Thread.Sleep(1000); 206 | s.c.vClick(new Point(718, 464)); 207 | Thread.Sleep(3000); 208 | s.c.vClick(Statics.GAME_MID); 209 | while (s.v.matchTemplate(Assets.Etc.Leave, 0.65).X == -1) 210 | { 211 | s.c.vClick(Statics.GAME_MID); 212 | Thread.Sleep(500); 213 | } 214 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Leave, 0.65)); 215 | Thread.Sleep(1000); 216 | while (s.v.matchTemplate(Assets.Tutorial.Confirm, 0.65).X == -1) 217 | { 218 | Thread.Sleep(500); 219 | } 220 | s.c.vClick(s.v.matchTemplate(Assets.Tutorial.Confirm, 0.65)); 221 | Thread.Sleep(2000); 222 | s.c.vClick(new Point(784, 175)); 223 | s.c.vClick(new Point(653, 68)); 224 | s.c.vClick(new Point(653, 68)); 225 | s.c.vMoveLeft(); 226 | s.c.vMoveUp(); 227 | Thread.Sleep(1500); 228 | s.c.vClick(new Point(166, 232)); 229 | Thread.Sleep(1000); 230 | while (s.v.matchTemplate(Assets.Tutorial.Confirm, 0.65).X == -1) 231 | { 232 | Thread.Sleep(500); 233 | } 234 | s.c.vClick(s.v.matchTemplate(Assets.Tutorial.Confirm, 0.65)); 235 | 236 | //Skirmish 2 237 | s.c.vClick(new Point(596, 339)); 238 | s.c.vClick(new Point(567, 409)); 239 | s.c.vClick(new Point(729, 464)); 240 | Thread.Sleep(3000); 241 | while (s.v.matchTemplate(Assets.Etc.Leave, 0.65).X == -1) 242 | { 243 | s.c.vClick(Statics.GAME_MID); 244 | Thread.Sleep(500); 245 | } 246 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Leave, 0.65)); 247 | Thread.Sleep(3000); 248 | s.c.vClick(new Point(596, 339)); 249 | s.c.vClick(new Point(567, 409)); 250 | s.c.vClick(new Point(729, 464)); 251 | Thread.Sleep(3000); 252 | while (s.v.matchTemplate(Assets.Etc.Leave, 0.65).X == -1) 253 | { 254 | s.c.vClick(Statics.GAME_MID); 255 | Thread.Sleep(500); 256 | } 257 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Leave, 0.65)); 258 | Thread.Sleep(1000); 259 | while (s.v.matchTemplate(Assets.Tutorial.Confirm, 0.65).X == -1) 260 | { 261 | Thread.Sleep(250); 262 | } 263 | s.c.vClick(s.v.matchTemplate(Assets.Tutorial.Confirm, 0.65)); 264 | Thread.Sleep(1000); 265 | s.c.vClick(new Point(787, 112)); 266 | Thread.Sleep(1000); 267 | s.c.vClick(Statics.GAME_MID); 268 | Thread.Sleep(1000); 269 | s.c.vClick(new Point(144, 106)); 270 | Thread.Sleep(1500); 271 | s.c.vClick(new Point(489, 259)); 272 | while (s.v.matchTemplate(Assets.Tutorial.Confirm, 0.65).X == -1) 273 | { 274 | Thread.Sleep(250); 275 | } 276 | s.c.vClick(s.v.matchTemplate(Assets.Tutorial.Confirm, 0.65)); 277 | 278 | //Statue Quest 279 | Thread.Sleep(3500); 280 | s.c.vClick(Statics.GAME_MID); 281 | Thread.Sleep(1500); 282 | s.c.vClick(new Point(443, 218)); 283 | Thread.Sleep(1500); 284 | s.c.vClick(new Point(861, 479)); 285 | Thread.Sleep(1500); 286 | s.c.vClick(new Point(200, 382)); 287 | Thread.Sleep(1500); 288 | s.c.vClick(new Point(283, 383)); 289 | Thread.Sleep(1500); 290 | s.c.vClick(new Point(751, 437)); 291 | Thread.Sleep(2500); 292 | s.c.vClick(Statics.GAME_MID); 293 | 294 | while (s.v.matchTemplate(Assets.Tutorial.MpFull1, 0.65).X == -1) 295 | { 296 | s.c.vClick(Statics.GAME_MID); 297 | Thread.Sleep(500); 298 | } 299 | s.c.vClick(new Point(397, 496)); 300 | Thread.Sleep(1000); 301 | 302 | while (s.v.matchTemplate(Assets.Tutorial.MpFull2, 0.65).X == -1) 303 | { 304 | s.c.vClick(Statics.GAME_MID); 305 | Thread.Sleep(500); 306 | } 307 | s.c.vDragMouse(new Point(495, 486), new Point(622, 225)); 308 | Thread.Sleep(1000); 309 | 310 | while (s.v.matchTemplate(Assets.Tutorial.MpFull3, 0.65).X == -1) 311 | { 312 | Thread.Sleep(500); 313 | } 314 | s.c.vDragMouse(new Point(398, 497), new Point(679, 196)); 315 | Thread.Sleep(1000); 316 | 317 | while (s.v.matchTemplate(Assets.Etc.Leave, 0.65).X == -1) 318 | { 319 | s.c.vClick(Statics.GAME_MID); 320 | Thread.Sleep(500); 321 | } 322 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Leave, 0.65)); 323 | Thread.Sleep(15000); 324 | s.c.vClick(Statics.GAME_MID); 325 | Thread.Sleep(1000); 326 | s.c.vClick(new Point(866, 540)); 327 | Thread.Sleep(1000); 328 | s.c.vClick(new Point(217, 186)); 329 | Thread.Sleep(1000); 330 | s.c.vClick(new Point(559, 192)); 331 | Thread.Sleep(1000); 332 | s.c.vClick(new Point(637, 387)); 333 | Thread.Sleep(1000); 334 | s.c.vClick(Statics.GAME_MID); 335 | Thread.Sleep(1000); 336 | s.c.vClick(new Point(628, 265)); 337 | Thread.Sleep(1000); 338 | s.c.vClick(new Point(637, 371)); 339 | Thread.Sleep(1000); 340 | s.c.vClick(new Point(746, 374)); 341 | Thread.Sleep(1000); 342 | s.c.vClick(Statics.GAME_MID); 343 | Thread.Sleep(1000); 344 | s.c.vClick(Statics.CLOSE_MAIN); 345 | Thread.Sleep(1000); 346 | s.c.vClick(Statics.CLOSE_MAIN); 347 | Thread.Sleep(1000); 348 | s.c.vClick(new Point(652, 66)); 349 | Thread.Sleep(1000); 350 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 351 | Thread.Sleep(1000); 352 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 353 | Thread.Sleep(4000); 354 | s.c.vClick(new Point(242, 340)); 355 | Thread.Sleep(1000); 356 | s.c.vClick(new Point(482, 153)); 357 | Thread.Sleep(1000); 358 | s.c.vClick(new Point(741, 521)); 359 | Thread.Sleep(1000); 360 | s.c.vClick(new Point(302, 167)); 361 | Thread.Sleep(1000); 362 | 363 | //Disable Turf quests 364 | s.c.vClick(new Point(698, 540)); 365 | Thread.Sleep(1000); 366 | s.c.vClick(new Point(487, 311)); 367 | Thread.Sleep(1000); 368 | s.c.vClick(new Point(734, 193)); 369 | Thread.Sleep(1000); 370 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 371 | Thread.Sleep(500); 372 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 373 | Thread.Sleep(1500); 374 | 375 | //First research 376 | s.c.vClick(new Point(252, 317)); 377 | Thread.Sleep(1000); 378 | s.c.vClick(Statics.GAME_MID); 379 | Thread.Sleep(1000); 380 | s.c.vClick(new Point(561, 281)); 381 | Thread.Sleep(1000); 382 | s.c.vClick(new Point(490, 207)); 383 | Thread.Sleep(1000); 384 | s.c.vClick(new Point(488, 489)); 385 | Thread.Sleep(1000); 386 | s.c.vClick(new Point(737, 519)); 387 | Thread.Sleep(1000); 388 | s.c.vClick(Statics.GAME_MID); 389 | Thread.Sleep(1000); 390 | s.c.vClick(new Point(303, 212)); 391 | Thread.Sleep(1000); 392 | 393 | //Upgrade castle 394 | s.c.vClick(Statics.Screen1.WALL); 395 | Thread.Sleep(1000); 396 | s.c.vClick(Statics.Building.BUILD); 397 | Thread.Sleep(1000); 398 | s.c.vClick(Statics.Building.BUILD); 399 | Thread.Sleep(2500); 400 | s.c.vClick(new Point(306, 212)); 401 | Thread.Sleep(2500); 402 | s.c.vClick(Statics.Screen1.CASTLE); 403 | Thread.Sleep(2500); 404 | s.c.vClick(Statics.Building.BUILD); 405 | Thread.Sleep(2500); 406 | s.c.vClick(Statics.Building.BUILD); 407 | Thread.Sleep(2500); 408 | s.c.vClick(Statics.GAME_MID); 409 | Thread.Sleep(2500); 410 | s.c.vClick(new Point(297, 212)); 411 | Thread.Sleep(2500); 412 | s.c.vClick(Statics.GAME_MID); 413 | Thread.Sleep(2500); 414 | s.c.vClick(new Point(692, 209)); 415 | Thread.Sleep(2500); 416 | s.c.vClick(new Point(560, 331)); 417 | Thread.Sleep(2500); 418 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 419 | 420 | //Build first 4 resources 421 | s.c.vClick(Statics.Screen1.TILE_1); 422 | Thread.Sleep(1000); 423 | s.c.vClick(Statics.Building.LUMBER_MILL); 424 | Thread.Sleep(1000); 425 | s.c.vClick(Statics.Building.BUILD); 426 | Thread.Sleep(1000); 427 | s.c.vClick(new Point(300, 213)); 428 | Thread.Sleep(1000); 429 | s.c.vClick(Statics.Screen1.TILE_2); 430 | Thread.Sleep(1000); 431 | s.c.vClick(Statics.Building.QUARRY); 432 | Thread.Sleep(1000); 433 | s.c.vClick(Statics.Building.BUILD); 434 | Thread.Sleep(1000); 435 | s.c.vClick(new Point(300, 213)); 436 | Thread.Sleep(1000); 437 | s.c.vClick(Statics.Screen1.TILE_3); 438 | Thread.Sleep(1000); 439 | s.c.vClick(Statics.Building.MINES); 440 | Thread.Sleep(1000); 441 | s.c.vClick(Statics.Building.BUILD); 442 | Thread.Sleep(1000); 443 | s.c.vClick(new Point(300, 213)); 444 | Thread.Sleep(1000); 445 | s.c.vClick(Statics.Screen1.TILE_4); 446 | Thread.Sleep(1000); 447 | s.c.vClick(Statics.Building.FARM); 448 | Thread.Sleep(1000); 449 | s.c.vClick(Statics.Building.BUILD); 450 | Thread.Sleep(1000); 451 | s.c.vClick(new Point(300, 213)); 452 | Thread.Sleep(1000); 453 | //s.c.vClick(Statics.GAME_MID); 454 | //Thread.Sleep(2000); 455 | 456 | //Skirmish 3 457 | s.c.vMoveUp(); 458 | Thread.Sleep(2000); 459 | s.c.vMoveRight(); 460 | Thread.Sleep(2000); 461 | s.c.vMoveRight(); 462 | Thread.Sleep(2000); 463 | s.c.vMoveRight(); 464 | Thread.Sleep(2000); 465 | s.c.vClick(new Point(832, 300)); 466 | Thread.Sleep(6500); 467 | s.c.vClick(new Point(600, 434)); 468 | Thread.Sleep(1500); 469 | 470 | for (int i = 0; i < 3; i++) 471 | { 472 | s.c.vClick(new Point(535, 308)); 473 | Thread.Sleep(1000); 474 | s.c.vClick(new Point(561, 407)); 475 | Thread.Sleep(1000); 476 | s.c.vClick(new Point(724, 465)); 477 | while (s.v.matchTemplate(Assets.Etc.Leave, 0.65).X == -1) 478 | { 479 | s.c.vClick(Statics.GAME_MID); 480 | Thread.Sleep(500); 481 | } 482 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Leave, 0.65)); 483 | Thread.Sleep(10000); 484 | } 485 | s.c.vClick(new Point(595, 437)); 486 | Thread.Sleep(1000); 487 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 488 | Thread.Sleep(1500); 489 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 490 | Thread.Sleep(3000); 491 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 492 | Thread.Sleep(3000); 493 | 494 | ////Skirmish 4 495 | //s.c.vClick(new Point(195, 561)); 496 | //Thread.Sleep(7500); 497 | //s.c.vClick(new Point(598, 440)); 498 | //Thread.Sleep(2000); 499 | //s.c.vClick(new Point(561, 292)); //Castle 500 | //Thread.Sleep(2000); 501 | //s.c.vClick(new Point(557, 410)); //Attack 502 | //Thread.Sleep(2000); 503 | ////s.c.vClick(new Point(723, 360)); //Auto-Assemble 504 | ////Thread.Sleep(2000); 505 | //s.c.vClick(new Point(719, 472)); //Attack 506 | //Thread.Sleep(2000); 507 | //s.c.vClick(new Point(564, 285)); //Attack Anyway 508 | //Thread.Sleep(3500); 509 | //while (s.v.matchTemplate(Assets.Etc.Leave, 0.65).X == -1) 510 | //{ 511 | // s.c.vClick(Statics.GAME_MID); 512 | // Thread.Sleep(500); 513 | //} 514 | //s.c.vClick(s.v.matchTemplate(Assets.Etc.Leave, 0.65)); 515 | //Thread.Sleep(7000); 516 | 517 | 518 | 519 | 520 | 521 | 522 | return true; 523 | } 524 | 525 | public bool stage7() 526 | { 527 | //Create name 528 | Random rnd = new Random(); 529 | int pow = 13 - Settings.namePrefix.Length > 7 ? 7 : 13 - Settings.namePrefix.Length; 530 | int nameNum = rnd.Next(1, int.Parse(Math.Pow(10, pow).ToString()) - 1); 531 | string name = Settings.namePrefix + nameNum.ToString(); 532 | s.c.vClick(new Point(511, 56)); 533 | Thread.Sleep(1000); 534 | s.c.vClick(Statics.GAME_MID); 535 | Thread.Sleep(1000); 536 | s.c.vClick(new Point(432, 281)); 537 | Thread.Sleep(800); 538 | s.c.vType(name); 539 | Thread.Sleep(1000); 540 | s.c.vClick(new Point(490, 389)); 541 | Thread.Sleep(1500); 542 | s.c.vClick(new Point(490, 389)); 543 | Thread.Sleep(1500); 544 | 545 | //Join guild 546 | s.c.vClick(Statics.Hud.GUILD); 547 | Thread.Sleep(1000); 548 | s.c.vClick(new Point(606, 396)); 549 | Thread.Sleep(1000); 550 | s.c.vClick(new Point(283, 164)); 551 | Thread.Sleep(1000); 552 | s.c.vType(Settings.guildName); 553 | Thread.Sleep(1500); 554 | s.c.vClick(Statics.GAME_MID); 555 | Thread.Sleep(1500); 556 | s.c.vClick(new Point(575, 154)); 557 | Thread.Sleep(1000); 558 | s.c.vClick(new Point(746, 273)); 559 | Thread.Sleep(1500); 560 | s.c.vClick(new Point(476, 535)); 561 | Thread.Sleep(1000); 562 | s.c.vClick(new Point(750, 154)); 563 | Thread.Sleep(2000); 564 | Point guildLoc = s.v.matchTemplate(Assets.Tutorial.Guild, 0.65); 565 | s.c.vClick(new Point(guildLoc.X + 510, guildLoc.Y)); 566 | Thread.Sleep(1000); 567 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 568 | Thread.Sleep(500); 569 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 570 | Thread.Sleep(1500); 571 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Kingdom, 0.75)); 572 | Thread.Sleep(2500); 573 | s.c.vClick(Statics.GAME_MID); 574 | Thread.Sleep(1000); 575 | s.c.vClick(Statics.GAME_MID); 576 | Thread.Sleep(1000); 577 | s.c.vClick(Statics.GAME_MID); 578 | Thread.Sleep(1000); 579 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Turf, 0.75)); 580 | Thread.Sleep(2500); 581 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Kingdom, 0.75)); 582 | Thread.Sleep(2500); 583 | 584 | //Relocate 585 | while (true) 586 | { 587 | s.c.vClick(new Point(468, 103)); 588 | s.c.vClick(new Point(394, 228)); 589 | for (int i = 0; i < Settings.hiveCoordK.Length; i++) 590 | { 591 | s.c.clickNumpad(int.Parse(Settings.hiveCoordK[i].ToString())); 592 | } 593 | s.c.clickNumpad(-1); 594 | Thread.Sleep(1500); 595 | s.c.vClick(new Point(496, 231)); 596 | Settings.hiveCoordX = (int.Parse(Settings.hiveCoordX) + (rnd.Next(0, 20) * (rnd.Next(0, 2) * 2 - 1))).ToString(); 597 | for (int i = 0; i < Settings.hiveCoordX.Length; i++) 598 | { 599 | s.c.clickNumpad(int.Parse(Settings.hiveCoordX[i].ToString())); 600 | } 601 | s.c.clickNumpad(-1); 602 | Thread.Sleep(1500); 603 | s.c.vClick(new Point(596, 231)); 604 | Settings.hiveCoordY = (int.Parse(Settings.hiveCoordY) + (rnd.Next(0, 20) * (rnd.Next(0, 2) * 2 - 1))).ToString(); 605 | for (int i = 0; i < Settings.hiveCoordY.Length; i++) 606 | { 607 | s.c.clickNumpad(int.Parse(Settings.hiveCoordY[i].ToString())); 608 | } 609 | s.c.clickNumpad(-1); 610 | Thread.Sleep(1500); 611 | s.c.vClick(new Point(494, 318)); 612 | 613 | Thread.Sleep(4000); 614 | s.c.vClick(new Point(491, 307)); 615 | Thread.Sleep(1000); 616 | if (s.c.vClick(s.v.matchTemplate(Assets.Tutorial.Migrate, 0.8))) 617 | { 618 | Thread.Sleep(1000); 619 | s.c.vClick(new Point(486, 437)); 620 | Thread.Sleep(1000); 621 | s.c.vClick(new Point(564, 296)); 622 | Thread.Sleep(2000); 623 | break; 624 | } 625 | else 626 | { 627 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 628 | Thread.Sleep(1000); 629 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 630 | Thread.Sleep(1000); 631 | s.c.vClick(s.v.matchTemplate(Assets.Etc.Close, 0.55)); 632 | Thread.Sleep(1000); 633 | } 634 | } 635 | 636 | return true; 637 | } 638 | } 639 | } 640 | -------------------------------------------------------------------------------- /LordsMobile/Settings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LordsMobile 8 | { 9 | class Settings 10 | { 11 | public static string namePrefix = ""; 12 | public static string guildName = ""; 13 | public static int duration = 0; 14 | public static string hiveCoordK = ""; 15 | public static string hiveCoordX = ""; 16 | public static string hiveCoordY = ""; 17 | public static int maxVMs = 0; 18 | public static int maxGrunts = 0; 19 | public static int maxArchers = 0; 20 | public static int maxCataphracts = 0; 21 | public static int maxBallistas = 0; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /LordsMobile/State.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading; 7 | using System.Threading.Tasks; 8 | 9 | namespace LordsMobile 10 | { 11 | class State 12 | { 13 | public string state; 14 | public int account; 15 | public DateTime start; 16 | public int processIndex; 17 | public Profile profile; 18 | public int screen = -1; 19 | public DateTime lastShelterCheck; 20 | public int lastResource = 0; 21 | public IntPtr hwnd; 22 | public Vision v; 23 | public Controller c; 24 | 25 | public State(IntPtr hwnd) 26 | { 27 | this.hwnd = hwnd; 28 | this.start = DateTime.Now; 29 | this.profile = new Profile(this); 30 | this.v = new Vision(this.hwnd); 31 | this.c = new Controller(this.hwnd); 32 | this.state = "Loading"; 33 | } 34 | 35 | public bool hasTimeElapsed() 36 | { 37 | return DateTime.Now > start.AddMinutes(Settings.duration); 38 | } 39 | 40 | public void clearScreen() 41 | { 42 | Debug.WriteLine("Stuck in clear"); 43 | if (v.matchTemplate(Assets.Etc.Oracle, 0.55).X != -1) 44 | { 45 | Debug.WriteLine("In oracle"); 46 | Thread.Sleep(500); 47 | this.c.vClick(Statics.GAME_MID); 48 | clearScreen(); 49 | } 50 | 51 | if (v.matchTemplate(Assets.Etc.Close, 0.65).X != -1) 52 | { 53 | Debug.WriteLine(v.matchTemplate(Assets.Etc.Close, 0.65)); 54 | this.c.vClick(v.matchTemplate(Assets.Etc.Close, 0.65)); 55 | Debug.WriteLine("Stuck in close"); 56 | Thread.Sleep(500); 57 | clearScreen(); 58 | } 59 | } 60 | 61 | public void reset() 62 | { 63 | Thread.Sleep(1000); 64 | clearScreen(); 65 | goTo(); 66 | Action[] actions = new Action[] 67 | { 68 | () => this.c.vMoveDown(false), 69 | () => this.c.vMoveDown(false), 70 | () => this.c.vMoveDown(false), 71 | () => this.c.vMoveLeft(false), 72 | () => this.c.vMoveLeft(false), 73 | () => this.c.vMoveLeft(false), 74 | () => this.c.vMoveLeft(false), 75 | () => this.c.vMoveLeft(false), 76 | () => this.c.vMoveLeft(false), 77 | () => this.c.vMoveLeft(false), 78 | () => this.c.vMoveRight(false), 79 | () => this.c.vMoveRight(false), 80 | () => this.c.vMoveRight(false) 81 | }; 82 | 83 | if (!this.c.vClick(v.matchTemplate(Assets.Turf.Statue, 0.5)) && 84 | !this.c.vClick(v.matchTemplate(Assets.Turf.Statue2, 0.5))) 85 | { 86 | foreach (Action a in actions) 87 | { 88 | a(); 89 | if (this.c.vClick(v.matchTemplate(Assets.Turf.Statue, 0.5)) || 90 | this.c.vClick(v.matchTemplate(Assets.Turf.Statue2, 0.5))) 91 | { 92 | break; 93 | } 94 | clearScreen(); 95 | } 96 | } 97 | Thread.Sleep(4500); 98 | clearScreen(); 99 | Thread.Sleep(4500); 100 | } 101 | 102 | public void goTo(bool turf = true) 103 | { 104 | Thread.Sleep(1000); 105 | if (turf == true) 106 | { 107 | if (this.c.vClick(v.matchTemplate(Assets.Etc.Turf, 0.7))) 108 | Thread.Sleep(4000); 109 | } 110 | else 111 | { 112 | if (this.c.vClick(v.matchTemplate(Assets.Etc.Kingdom, 0.7))) 113 | Thread.Sleep(4000); 114 | } 115 | } 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /LordsMobile/Statics.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Drawing; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace LordsMobile 9 | { 10 | class Statics 11 | { 12 | //public const int GAME_WIDTH = 1015; 13 | //public const int GAME_HEIGHT = 582; 14 | public const int GAME_WIDTH = 981; 15 | public const int GAME_HEIGHT = 582; 16 | public static readonly Point GAME_MID = new Point(490, 291); 17 | public static readonly Point CLOSE_MAIN = new Point(940, 66); 18 | public static readonly Point CLOSE_LEVEL_UP = new Point(655, 65); 19 | 20 | public enum MOVEMENTS: int 21 | { 22 | Left=0, Up=1, Right=2, Down=3 23 | } 24 | 25 | public class Screen1 26 | { 27 | public static readonly Point CASTLE = new Point(805, 101); 28 | public static readonly Point BARRACKS = new Point(774, 179); 29 | public static readonly Point WALL = new Point(660, 180); 30 | public static readonly Point WATCHTOWER = new Point(515, 165); 31 | public static readonly Point SHIP = new Point(324, 433); 32 | public static readonly Point TILE_1 = new Point(709, 285); 33 | public static readonly Point TILE_2 = new Point(827, 281); 34 | public static readonly Point TILE_3 = new Point(592, 406); 35 | public static readonly Point TILE_4 = new Point(722, 390); 36 | } 37 | 38 | public class Screen3 39 | { 40 | public static readonly Point BARRACKS = new Point(626, 339); 41 | public static readonly Point SHELTER = new Point(544, 158); 42 | public static readonly Point INFIRMARY = new Point(777, 317); 43 | public static readonly Point VAULT = new Point(509, 244); 44 | } 45 | 46 | public class Hud 47 | { 48 | public static readonly Point GUILD = new Point(456, 538); 49 | public static readonly Point SETTINGS = new Point(700, 541); 50 | public static readonly Point EXTRA_SUPPLIES_COLLECT = new Point(490, 424); 51 | } 52 | 53 | public class NumPad 54 | { 55 | public static readonly Point ONE = new Point(662, 259); 56 | public static readonly Point TWO = new Point(730, 259); 57 | public static readonly Point THREE = new Point(794, 259); 58 | public static readonly Point FOUR = new Point(662, 306); 59 | public static readonly Point FIVE = new Point(730, 306); 60 | public static readonly Point SIX = new Point(794, 306); 61 | public static readonly Point SEVEN = new Point(662, 354); 62 | public static readonly Point EIGHT = new Point(730, 354); 63 | public static readonly Point NINE = new Point(794, 354); 64 | public static readonly Point ZERO = new Point(662, 406); 65 | public static readonly Point CONFIRM = new Point(777, 406); 66 | } 67 | 68 | public class Chest 69 | { 70 | public static readonly Point CHEST = new Point(873, 424); 71 | public static readonly Point CLAIM = new Point(488, 401); 72 | } 73 | 74 | public class Gather 75 | { 76 | public static readonly Point GATHER = new Point(490, 309); 77 | public static readonly Point ASSEMBLE = new Point(721, 358); 78 | public static readonly Point START = new Point(730, 465); 79 | } 80 | 81 | public class Tutorial 82 | { 83 | public static readonly Point AGREE = new Point(620, 370); 84 | public static readonly Point BUILD_BARRACKS = new Point(414, 476); 85 | public static readonly Point BUILD_BARRACKS2 = new Point(511, 371); 86 | public static readonly Point BUILD_BARRACKS3 = new Point(483, 134); 87 | public static readonly Point FREE_SPEED = new Point(301, 168); 88 | public static readonly Point BUILD_BARRACKS5 = new Point(413, 472); 89 | public static readonly Point BUILD_CASTLE = new Point(411, 476); 90 | public static readonly Point BUILD_CASTLE2 = new Point(514, 313); 91 | public static readonly Point BUILD_CASTLE3 = new Point(651, 69); 92 | public static readonly Point BUILD_CASTLE4 = new Point(414, 478); 93 | public static readonly Point CLOSE_VIP = new Point(652, 143); 94 | public static readonly Point GO_TRAIN_BALLISTA = new Point(415, 475); 95 | public static readonly Point BARRACKS = new Point(550, 424); 96 | public static readonly Point GO_SKIRMISH1 = new Point(412, 474); 97 | public static readonly Point CASTLE_SKIRMISH1 = new Point(447, 302); 98 | public static readonly Point SCOUT_SKIRMISH1 = new Point(415, 411); 99 | public static readonly Point BATTLETIPS_SKIRMISH1 = new Point(479, 221); 100 | public static readonly Point HEROES_SKIRMISH1 = new Point(384, 155); 101 | public static readonly Point TROOPS_SKIRMISH1 = new Point(370, 390); 102 | } 103 | 104 | public class Building 105 | { 106 | public static readonly Point LUMBER_MILL = new Point(485, 139); 107 | public static readonly Point QUARRY = new Point(482, 259); 108 | public static readonly Point MINES = new Point(474, 372); 109 | public static readonly Point FARM = new Point(493, 473); 110 | public static readonly Point BUILD = new Point(736, 513); 111 | } 112 | 113 | public class Barracks 114 | { 115 | public static readonly Point BALLISTA = new Point(727, 294); 116 | public static readonly Rectangle BALLISTA_AMT = new Rectangle(700, 365, 60, 18); 117 | public static readonly Point GRUNT = new Point(241, 294); 118 | public static readonly Rectangle GRUNT_AMT = new Rectangle(215, 365, 60, 18); 119 | public static readonly Point ARCHER = new Point(404, 294); 120 | public static readonly Rectangle ARCHER_AMT = new Rectangle(380, 365, 60, 18); 121 | public static readonly Point CATAPHRACT = new Point(568, 294); 122 | public static readonly Rectangle CATAPHRACT_AMT = new Rectangle(540, 365, 60, 18); 123 | public static readonly Point TRAIN = new Point(666, 537); 124 | } 125 | 126 | public class Settings 127 | { 128 | public class Account 129 | { 130 | public static readonly Rectangle ROI = new Rectangle(380, 255, 135, 25); 131 | public static readonly Point POINT = new Point(290, 198); 132 | } 133 | } 134 | 135 | public class Avoid 136 | { 137 | public static readonly Point[] Hud = new Point[] 138 | { 139 | 140 | }; 141 | 142 | public static readonly Point[] TurfKingdom = new Point[] 143 | { 144 | new Point(0, 495), 145 | new Point(125, Statics.GAME_HEIGHT) 146 | }; 147 | } 148 | 149 | public class Talents 150 | { 151 | public static readonly Rectangle ROI = new Rectangle(465, 280, 55, 20); 152 | public class Row1 153 | { 154 | public static int SCREEN = 1; 155 | public static readonly Point FOOD_PRODUCTION_I = new Point(571, 269); 156 | } 157 | 158 | public class Row2 159 | { 160 | public static int SCREEN = 2; 161 | public static readonly Point STONE_PRODUCTION_I = new Point(571, 274); 162 | public static readonly Point CONSTRUCTION_SPEED_I = new Point(736, 274); 163 | } 164 | 165 | public class Row3 166 | { 167 | public static int SCREEN = 3; 168 | public static readonly Point TIMBER_PRODUCTION_I = new Point(574, 291); 169 | public static readonly Point RESEARCH_I = new Point(737, 291); 170 | } 171 | 172 | public class Row4 173 | { 174 | public static int SCREEN = 4; 175 | public static readonly Point ORE_PRODUCTION_I = new Point(575, 299); 176 | public static readonly Point GOLD_PRODUCTION_I = new Point(738, 303); 177 | } 178 | 179 | public class Row5 180 | { 181 | public static int SCREEN = 5; 182 | public static readonly Point FOOD_PRODUCTION_I = new Point(577, 312); 183 | public static readonly Point MAX_LOAD_I = new Point(739, 315); 184 | } 185 | 186 | public class Row6 187 | { 188 | public static int SCREEN = 6; 189 | public static readonly Point STONE_PRODUCTION_I = new Point(573, 324); 190 | public static readonly Point GATHERING_I = new Point(739, 326); 191 | } 192 | } 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /LordsMobile/Strings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace LordsMobile 8 | { 9 | class Strings 10 | { 11 | public static string noOfInstancesToolTip = "Sets the number of MEmu instances to run. Recommended 2-4."; 12 | public static string amtOfTimeToolTip = "Amount of time to spend on each account in minutes."; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /LordsMobile/Vision.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Drawing; 7 | using Emgu.CV; 8 | using Emgu.CV.Structure; 9 | using Tesseract; 10 | using System.Diagnostics; 11 | using System.Runtime.InteropServices; 12 | using System.Drawing.Imaging; 13 | 14 | namespace LordsMobile 15 | { 16 | class Vision 17 | { 18 | private Image frame; 19 | private Image scr; 20 | private TesseractEngine tess = new TesseractEngine("./tessdata", "eng", EngineMode.Default); 21 | private IntPtr hwnd; 22 | 23 | 24 | 25 | [DllImport("user32.dll")] 26 | public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); 27 | [DllImport("user32.dll")] 28 | public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags); 29 | 30 | public Bitmap PrintWindow() 31 | { 32 | RECT rc; 33 | GetWindowRect(hwnd, out rc); 34 | 35 | Bitmap bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppRgb); 36 | Graphics gfxBmp = Graphics.FromImage(bmp); 37 | IntPtr hdcBitmap = gfxBmp.GetHdc(); 38 | 39 | PrintWindow(hwnd, hdcBitmap, 0); 40 | 41 | gfxBmp.ReleaseHdc(hdcBitmap); 42 | gfxBmp.Dispose(); 43 | 44 | return bmp; 45 | } 46 | 47 | public Vision(IntPtr hwnd) 48 | { 49 | this.hwnd = hwnd; 50 | } 51 | 52 | 53 | 54 | 55 | private void captureScreen() 56 | { 57 | if (frame != null) 58 | frame.Dispose(); 59 | 60 | if (scr != null) 61 | scr.Dispose(); 62 | 63 | Bitmap printscreen = PrintWindow(); 64 | Image imageCV = new Image(printscreen); 65 | scr = imageCV; 66 | frame = imageCV.Convert(); 67 | frame = frame.ThresholdBinary(new Gray(150), new Gray(255.0)); 68 | imageCV.Dispose(); 69 | printscreen.Dispose(); 70 | } 71 | 72 | public Point matchTemplate(string template = null, double threshold = 0.35, bool max = false) 73 | { 74 | captureScreen(); 75 | Image tmp = Emgu.CV.CvInvoke.Imread(template).ToImage(); 76 | using (Image imgMatch = frame.MatchTemplate(tmp, Emgu.CV.CvEnum.TemplateMatchingType.CcoeffNormed)) 77 | { 78 | double[] minValues, maxValues; 79 | Point[] minLocations, maxLocations; 80 | imgMatch.MinMax(out minValues, out maxValues, out minLocations, out maxLocations); 81 | 82 | imgMatch.Dispose(); 83 | int hX = tmp.Width / 2, hY = tmp.Height / 2; 84 | tmp.Dispose(); 85 | if (max) 86 | return new Point(maxLocations[0].X + hX, maxLocations[0].Y + hY); 87 | if (maxValues[0] >= threshold) 88 | { 89 | return new Point(maxLocations[0].X + hX, maxLocations[0].Y + hY); 90 | } 91 | } 92 | if (tmp != null) 93 | tmp.Dispose(); 94 | return new Point(-1, -1); 95 | } 96 | 97 | public string readText(Rectangle r, bool asInt = false) 98 | { 99 | captureScreen(); 100 | frame.ROI = r; 101 | 102 | Page p = tess.Process(frame.Bitmap, PageSegMode.Auto); 103 | string res = p.GetText(); 104 | p.Dispose(); 105 | if (asInt) 106 | { 107 | return new String(res.Where(Char.IsDigit).ToArray()); 108 | } 109 | return res; 110 | } 111 | 112 | public void saveScreen() 113 | { 114 | captureScreen(); 115 | frame.Save("C:\\temp\\" + DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString() + ".jpg"); 116 | } 117 | 118 | //public Point testMatch(string template, double threshold = 0.35) 119 | //{ 120 | // captureScreen(); 121 | // Image tmp = Emgu.CV.CvInvoke.Imread(template).ToImage(); 122 | // using (Image imgMatch = frame.MatchTemplate(tmp, Emgu.CV.CvEnum.TemplateMatchingType.CcoeffNormed)) 123 | // { 124 | // double[] minValues, maxValues; 125 | // Point[] minLocations, maxLocations; 126 | // imgMatch.MinMax(out minValues, out maxValues, out minLocations, out maxLocations); 127 | // imgMatch.Dispose(); 128 | // if (maxValues[0] >= threshold) 129 | // { 130 | // Rectangle match = new Rectangle(maxLocations[0], tmp.Size); 131 | // frame.Draw(match, new Gray(255), 25); 132 | // frame.Save("C:\\temp\\" + DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString() + ".jpg"); 133 | // return new Point(maxLocations[0].X + tmp.Width / 2, maxLocations[0].Y + tmp.Height / 2); 134 | // } else 135 | // frame.Save("C:\\temp\\" + DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString() + ".jpg"); 136 | // } 137 | // tmp.Dispose(); 138 | // return new Point(-1, -1); 139 | //} 140 | } 141 | } 142 | 143 | 144 | [StructLayout(LayoutKind.Sequential)] 145 | public struct RECT 146 | { 147 | private int _Left; 148 | private int _Top; 149 | private int _Right; 150 | private int _Bottom; 151 | 152 | public RECT(RECT Rectangle) : this(Rectangle.Left, Rectangle.Top, Rectangle.Right, Rectangle.Bottom) 153 | { 154 | } 155 | public RECT(int Left, int Top, int Right, int Bottom) 156 | { 157 | _Left = Left; 158 | _Top = Top; 159 | _Right = Right; 160 | _Bottom = Bottom; 161 | } 162 | 163 | public int X 164 | { 165 | get { return _Left; } 166 | set { _Left = value; } 167 | } 168 | public int Y 169 | { 170 | get { return _Top; } 171 | set { _Top = value; } 172 | } 173 | public int Left 174 | { 175 | get { return _Left; } 176 | set { _Left = value; } 177 | } 178 | public int Top 179 | { 180 | get { return _Top; } 181 | set { _Top = value; } 182 | } 183 | public int Right 184 | { 185 | get { return _Right; } 186 | set { _Right = value; } 187 | } 188 | public int Bottom 189 | { 190 | get { return _Bottom; } 191 | set { _Bottom = value; } 192 | } 193 | public int Height 194 | { 195 | get { return _Bottom - _Top; } 196 | set { _Bottom = value + _Top; } 197 | } 198 | public int Width 199 | { 200 | get { return _Right - _Left; } 201 | set { _Right = value + _Left; } 202 | } 203 | public Point Location 204 | { 205 | get { return new Point(Left, Top); } 206 | set 207 | { 208 | _Left = value.X; 209 | _Top = value.Y; 210 | } 211 | } 212 | public Size Size 213 | { 214 | get { return new Size(Width, Height); } 215 | set 216 | { 217 | _Right = value.Width + _Left; 218 | _Bottom = value.Height + _Top; 219 | } 220 | } 221 | 222 | public static implicit operator Rectangle(RECT Rectangle) 223 | { 224 | return new Rectangle(Rectangle.Left, Rectangle.Top, Rectangle.Width, Rectangle.Height); 225 | } 226 | public static implicit operator RECT(Rectangle Rectangle) 227 | { 228 | return new RECT(Rectangle.Left, Rectangle.Top, Rectangle.Right, Rectangle.Bottom); 229 | } 230 | public static bool operator ==(RECT Rectangle1, RECT Rectangle2) 231 | { 232 | return Rectangle1.Equals(Rectangle2); 233 | } 234 | public static bool operator !=(RECT Rectangle1, RECT Rectangle2) 235 | { 236 | return !Rectangle1.Equals(Rectangle2); 237 | } 238 | 239 | public override string ToString() 240 | { 241 | return "{Left: " + _Left + "; " + "Top: " + _Top + "; Right: " + _Right + "; Bottom: " + _Bottom + "}"; 242 | } 243 | 244 | public override int GetHashCode() 245 | { 246 | return ToString().GetHashCode(); 247 | } 248 | 249 | public bool Equals(RECT Rectangle) 250 | { 251 | return Rectangle.Left == _Left && Rectangle.Top == _Top && Rectangle.Right == _Right && Rectangle.Bottom == _Bottom; 252 | } 253 | 254 | public override bool Equals(object Object) 255 | { 256 | if (Object is RECT) 257 | { 258 | return Equals((RECT)Object); 259 | } 260 | else if (Object is Rectangle) 261 | { 262 | return Equals(new RECT((Rectangle)Object)); 263 | } 264 | 265 | return false; 266 | } 267 | } 268 | -------------------------------------------------------------------------------- /LordsMobile/WindowHandle.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace LordsMobile 9 | { 10 | public class WindowHandle 11 | { 12 | private delegate bool EnumWindowProc(IntPtr hwnd, IntPtr lParam); 13 | 14 | [DllImport("user32")] 15 | [return: MarshalAs(UnmanagedType.Bool)] 16 | private static extern bool EnumChildWindows(IntPtr window, EnumWindowProc callback, IntPtr lParam); 17 | 18 | private IntPtr _MainHandle; 19 | 20 | public WindowHandle(IntPtr handle) 21 | { 22 | this._MainHandle = handle; 23 | } 24 | 25 | public List GetAllChildHandles() 26 | { 27 | List childHandles = new List(); 28 | 29 | GCHandle gcChildhandlesList = GCHandle.Alloc(childHandles); 30 | IntPtr pointerChildHandlesList = GCHandle.ToIntPtr(gcChildhandlesList); 31 | 32 | try 33 | { 34 | EnumWindowProc childProc = new EnumWindowProc(EnumWindow); 35 | EnumChildWindows(this._MainHandle, childProc, pointerChildHandlesList); 36 | } 37 | finally 38 | { 39 | gcChildhandlesList.Free(); 40 | } 41 | 42 | return childHandles; 43 | } 44 | 45 | private bool EnumWindow(IntPtr hWnd, IntPtr lParam) 46 | { 47 | GCHandle gcChildhandlesList = GCHandle.FromIntPtr(lParam); 48 | 49 | if (gcChildhandlesList == null || gcChildhandlesList.Target == null) 50 | { 51 | return false; 52 | } 53 | 54 | List childHandles = gcChildhandlesList.Target as List; 55 | childHandles.Add(hWnd); 56 | 57 | return true; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /LordsMobile/assets/challenge/chapter.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/challenge/chapter.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/challenge/normal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/challenge/normal.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/chest/5x.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/chest/5x.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/chest/collect.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/chest/collect.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/chest/window.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/chest/window.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/dev/build.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/dev/build.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/dev/free.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/dev/free.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/dev/go.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/dev/go.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/dev/help.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/dev/help.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/dev/new.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/dev/new.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/dev/no_cr.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/dev/no_cr.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/dev/no_res.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/dev/no_res.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/dev/upgrade.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/dev/upgrade.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/etc/close.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/etc/close.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/etc/kingdom.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/etc/kingdom.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/etc/leave.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/etc/leave.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/etc/level_up.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/etc/level_up.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/etc/level_up_txt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/etc/level_up_txt.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/etc/live_support.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/etc/live_support.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/etc/oracle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/etc/oracle.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/etc/turf.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/etc/turf.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/guild/open.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/guild/open.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/hud/army.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/hud/army.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/hud/extra_supplies.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/hud/extra_supplies.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/hud/gift.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/hud/gift.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/hud/help.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/hud/help.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/hud/prog_open.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/hud/prog_open.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/memu/lords.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/memu/lords.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/memu/lords2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/memu/lords2.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/quest/admin_comp.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/admin_comp.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/collect.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/collect.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/guild_comp.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/guild_comp.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/has_completed.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/has_completed.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/has_quests.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/has_quests.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/start.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/start.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/turf_comp.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/turf_comp.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/vip_chest.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/vip_chest.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/vip_claim.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/vip_claim.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/vip_comp.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/vip_comp.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/quest/window.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/quest/window.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/field.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/field.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/gather.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/gather.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/gold.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/gold.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/gold2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/gold2.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/ore.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/ore.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/ore2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/ore2.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/rocks.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/rocks.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/txt_field.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/txt_field.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/txt_gold.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/txt_gold.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/txt_ore.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/txt_ore.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/txt_rocks.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/txt_rocks.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/txt_woods.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/txt_woods.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/woods.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/woods.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/res/woods2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/res/woods2.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/turf/barracks.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/turf/barracks.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/turf/infirmary.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/turf/infirmary.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/turf/shelter.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/turf/shelter.JPG -------------------------------------------------------------------------------- /LordsMobile/assets/turf/statue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/turf/statue.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/turf/statue2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/turf/statue2.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/confirm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/confirm.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/create.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/create.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/guild.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/guild.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/important.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/important.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/migrate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/migrate.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/mp_full1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/mp_full1.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/mp_full2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/mp_full2.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/mp_full3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/mp_full3.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/oath_keeper.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/oath_keeper.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/skirmish1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/skirmish1.jpg -------------------------------------------------------------------------------- /LordsMobile/assets/tutorial/tap_go.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/assets/tutorial/tap_go.jpg -------------------------------------------------------------------------------- /LordsMobile/mega_maggot_GS1_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/mega_maggot_GS1_icon.ico -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.MainForm.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/LordsMobile.MainForm.resources -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/LordsMobile.Properties.Resources.resources -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.application: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | vJuKdw2pdskJI9cYwSNstfwhtQhk4748U0m1zpfKcWA= 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/LordsMobile.csproj.CopyComplete -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 58b000265125ac0ce0c211c032027fae51c9770e 2 | -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.Properties.Resources.resources 2 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.csproj.GenerateResource.cache 3 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.csproj.CoreCompileInputs.cache 4 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\LordsMobile.exe.config 5 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\LordsMobile.exe 6 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\LordsMobile.pdb 7 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.exe 8 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.pdb 9 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.MainForm.resources 10 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x64\concrt140.dll 11 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x64\cvextern.dll 12 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x64\msvcp140.dll 13 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x64\opencv_ffmpeg343_64.dll 14 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x64\vcruntime140.dll 15 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x86\concrt140.dll 16 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x86\cvextern.dll 17 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x86\msvcp140.dll 18 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x86\opencv_ffmpeg343.dll 19 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x86\vcruntime140.dll 20 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\Emgu.CV.UI.dll 21 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\Emgu.CV.World.dll 22 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\SimWinMouse.dll 23 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\ZedGraph.dll 24 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\Emgu.CV.UI.xml 25 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\Emgu.CV.World.xml 26 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\ZedGraph.xml 27 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\de\ZedGraph.resources.dll 28 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\es\ZedGraph.resources.dll 29 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\fr\ZedGraph.resources.dll 30 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\hu\ZedGraph.resources.dll 31 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\it\ZedGraph.resources.dll 32 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\ja\ZedGraph.resources.dll 33 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\pt\ZedGraph.resources.dll 34 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\ru\ZedGraph.resources.dll 35 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\sk\ZedGraph.resources.dll 36 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\sv\ZedGraph.resources.dll 37 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tr\ZedGraph.resources.dll 38 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\zh-cn\ZedGraph.resources.dll 39 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\zh-tw\ZedGraph.resources.dll 40 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.csproj.CopyComplete 41 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\challenge\chapter.JPG 42 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\challenge\normal.jpg 43 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\chest\5x.JPG 44 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\chest\collect.JPG 45 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\chest\window.jpg 46 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\dev\build.JPG 47 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\dev\free.JPG 48 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\dev\go.JPG 49 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\dev\help.JPG 50 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\dev\new.JPG 51 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\dev\no_cr.JPG 52 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\dev\no_res.jpg 53 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\dev\upgrade.JPG 54 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\etc\close.JPG 55 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\etc\kingdom.JPG 56 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\etc\turf.JPG 57 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\guild\open.JPG 58 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\hud\army.JPG 59 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\hud\gift.JPG 60 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\hud\prog_open.JPG 61 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\admin_comp.JPG 62 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\collect.JPG 63 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\guild_comp.JPG 64 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\has_completed.JPG 65 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\has_quests.JPG 66 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\start.JPG 67 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\turf_comp.JPG 68 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\vip_chest.JPG 69 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\vip_claim.JPG 70 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\vip_comp.JPG 71 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\quest\window.JPG 72 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\field.JPG 73 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\gather.JPG 74 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\gold.JPG 75 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\gold2.JPG 76 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\ore.JPG 77 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\ore2.JPG 78 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\rocks.JPG 79 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\txt_field.JPG 80 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\txt_gold.JPG 81 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\txt_ore.JPG 82 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\txt_rocks.JPG 83 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\txt_woods.JPG 84 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\woods.JPG 85 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\res\woods2.JPG 86 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\turf\barracks.JPG 87 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\turf\infirmary.JPG 88 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\turf\shelter.JPG 89 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\turf\statue.JPG 90 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\memu\lords.jpg 91 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\WindowsInput.dll 92 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\WindowsInput.xml 93 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\WindowsInput.pdb 94 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\create.jpg 95 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\important.jpg 96 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\oath_keeper.jpg 97 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\skirmish1.jpg 98 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\tap_go.jpg 99 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\confirm.jpg 100 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\etc\leave.jpg 101 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\mp_full1.jpg 102 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\mp_full2.jpg 103 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\mp_full3.jpg 104 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.csprojResolveAssemblyReference.cache 105 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\guild.jpg 106 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\tutorial\migrate.jpg 107 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\etc\oracle.jpg 108 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\etc\level_up.jpg 109 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x64\liblept172.dll 110 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x64\libtesseract304.dll 111 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x86\liblept172.dll 112 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\x86\libtesseract304.dll 113 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.cube.bigrams 114 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.cube.fold 115 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.cube.lm 116 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.cube.nn 117 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.cube.params 118 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.cube.size 119 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.cube.word-freq 120 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.tesseract_cube.nn 121 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\tessdata\eng.traineddata 122 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\Tesseract.dll 123 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\Tesseract.xml 124 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\EntityFramework.dll 125 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\EntityFramework.SqlServer.dll 126 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\System.Data.SQLite.dll 127 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\System.Data.SQLite.EF6.dll 128 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\System.Data.SQLite.Linq.dll 129 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\EntityFramework.xml 130 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\EntityFramework.SqlServer.xml 131 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\System.Data.SQLite.xml 132 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\System.Data.SQLite.dll.config 133 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\etc\live_support.jpg 134 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\turf\statue2.jpg 135 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\LordsMobile.exe.manifest 136 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\LordsMobile.application 137 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.exe.manifest 138 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\obj\Debug\LordsMobile.application 139 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\hud\extra_supplies.jpg 140 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\hud\help.jpg 141 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\memu\lords2.jpg 142 | C:\Users\Jesse\source\repos\LordsMobile\LordsMobile\bin\Debug\assets\etc\level_up_txt.jpg 143 | -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/LordsMobile.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/LordsMobile.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/LordsMobile.exe -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/LordsMobile.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/LordsMobile.pdb -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /LordsMobile/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /LordsMobile/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /LordsMobile/tessdata/eng.cube.fold: -------------------------------------------------------------------------------- 1 | 0oO 2 | lI1 3 | cC 4 | kK 5 | pP 6 | sS 7 | uU 8 | vV 9 | wW 10 | xX 11 | yY 12 | zZ 13 | -------------------------------------------------------------------------------- /LordsMobile/tessdata/eng.cube.lm: -------------------------------------------------------------------------------- 1 | LeadPunc="({[`' 2 | TrailPunc=}:;-]!?`,.)"' 3 | NumLeadPunc=#({[@$ 4 | NumTrailPunc=}):;].,% 5 | Operators=*+-/.:,()[] 6 | Digits=0123456789 7 | Alphas=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 8 | -------------------------------------------------------------------------------- /LordsMobile/tessdata/eng.cube.nn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/tessdata/eng.cube.nn -------------------------------------------------------------------------------- /LordsMobile/tessdata/eng.cube.params: -------------------------------------------------------------------------------- 1 | RecoWgt=1.0 2 | SizeWgt=0.2435 3 | OODWgt=0.0214 4 | NumWgt=0.036 5 | CharBigramsWgt=0.1567 6 | MaxSegPerChar=8 7 | BeamWidth=10 8 | ConvGridSize=48 9 | WordUnigramsWgt=0.01 10 | MaxWordAspectRatio=20.0000 11 | MinSpaceHeightRatio=0.5000 12 | MaxSpaceHeightRatio=0.6000 13 | HistWindWid=2 14 | MinConCompSize=0 15 | -------------------------------------------------------------------------------- /LordsMobile/tessdata/eng.tesseract_cube.nn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/tessdata/eng.tesseract_cube.nn -------------------------------------------------------------------------------- /LordsMobile/tessdata/eng.traineddata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/tessdata/eng.traineddata -------------------------------------------------------------------------------- /LordsMobile/x64/liblept172.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/x64/liblept172.dll -------------------------------------------------------------------------------- /LordsMobile/x64/libtesseract304.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/x64/libtesseract304.dll -------------------------------------------------------------------------------- /LordsMobile/x86/liblept172.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/x86/liblept172.dll -------------------------------------------------------------------------------- /LordsMobile/x86/libtesseract304.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/effekt/LordsMobileCSharp/158bdaeb1b184dfef1345d94aacdab9f24efbee6/LordsMobile/x86/libtesseract304.dll -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Proof-of-concept bot written for Lords Mobile. Could complete the tutorial, first few stages, auto-gather, auto-shelter, auto-help, auto-train, auto-build, auto-quest, etc. across multiple instances at the same time. 2 | 3 | The project is now defunct and serves no other purpose apart from demonstrating my knowledge of working with processes, the win32api, threading, OpenCV, Tesseract, etc. 4 | 5 | Skills Highlighted: 6 | - OpenCV 7 | - Tesseract 8 | - Threading 9 | - Process Interaction 10 | - win32api (simulated mouse and keyboard input) 11 | - Knowledge of process message stack and sending messages to a process 12 | --------------------------------------------------------------------------------