├── .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 |
--------------------------------------------------------------------------------