XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SeaOfRadiationEditor

【WinForm】SeaOfRadiationEditor游戏修改器

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/SeaOfRadiationEditor

初步完善二代编辑器

3d06fd7
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

7 个文件 +144 -41
Modified SeaOfRadiationEditor.sln +7 -20
@@ -1,12 +1,13 @@
1 1 Microsoft Visual Studio Solution File, Format Version 12.00
2 # Visual Studio Version 17
3 VisualStudioVersion = 17.10.34814.14
2 # Visual Studio Version 18
3 VisualStudioVersion = 18.4.11612.150 stable
4 4 MinimumVisualStudioVersion = 10.0.40219.1
5 5 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SeaOfRadiationEditor", "SeaOfRadiationEditor\SeaOfRadiationEditor.csproj", "{49E255F9-BBA4-40F1-BAEE-8895377CFD02}"
6 6 EndProject
7 7 Global
8 GlobalSection(ExtensibilityGlobals) = postSolution
9 SolutionGuid = {323E9E46-3ADA-4FC5-8CD2-95C40584C8CD}
8 GlobalSection(SolutionConfigurationPlatforms) = preSolution
9 Debug|Any CPU = Debug|Any CPU
10 Release|Any CPU = Release|Any CPU
10 11 EndGlobalSection
11 12 GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 13 {49E255F9-BBA4-40F1-BAEE-8895377CFD02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -14,24 +15,10 @@ Global
14 15 {49E255F9-BBA4-40F1-BAEE-8895377CFD02}.Release|Any CPU.ActiveCfg = Release|Any CPU
15 16 {49E255F9-BBA4-40F1-BAEE-8895377CFD02}.Release|Any CPU.Build.0 = Release|Any CPU
16 17 EndGlobalSection
17 GlobalSection(SolutionConfigurationPlatforms) = preSolution
18 Debug|Any CPU = Debug|Any CPU
19 Release|Any CPU = Release|Any CPU
20 EndGlobalSection
21 18 GlobalSection(SolutionProperties) = preSolution
22 19 HideSolutionNode = FALSE
23 20 EndGlobalSection
24 EndGlobal
25 1-B890-0B63165E6BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26 {A11B32F3-12A7-4551-B890-0B63165E6BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
27 {A11B32F3-12A7-4551-B890-0B63165E6BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
28 {A11B32F3-12A7-4551-B890-0B63165E6BD0}.Release|Any CPU.Build.0 = Release|Any CPU
29 EndGlobalSection
30 GlobalSection(SolutionConfigurationPlatforms) = preSolution
31 Debug|Any CPU = Debug|Any CPU
32 Release|Any CPU = Release|Any CPU
33 EndGlobalSection
34 GlobalSection(SolutionProperties) = preSolution
35 HideSolutionNode = FALSE
21 GlobalSection(ExtensibilityGlobals) = postSolution
22 SolutionGuid = {323E9E46-3ADA-4FC5-8CD2-95C40584C8CD}
36 23 EndGlobalSection
37 24 EndGlobal
Modified SeaOfRadiationEditor/MainForm.Designer.cs +65 -7
@@ -37,13 +37,17 @@
37 37 checkBox2 = new CheckBox();
38 38 textBox3 = new TextBox();
39 39 checkBox3 = new CheckBox();
40 checkBox4 = new CheckBox();
41 textBox4 = new TextBox();
42 checkBox5 = new CheckBox();
43 textBox5 = new TextBox();
40 44 SuspendLayout();
41 45 //
42 46 // textBox1
43 47 //
44 48 textBox1.BackColor = Color.FromArgb(64, 64, 64);
45 49 textBox1.ForeColor = Color.White;
46 textBox1.Location = new Point(312, 105);
50 textBox1.Location = new Point(312, 81);
47 51 textBox1.Name = "textBox1";
48 52 textBox1.Size = new Size(227, 30);
49 53 textBox1.TabIndex = 0;
@@ -75,7 +79,7 @@
75 79 checkBox1.AutoSize = true;
76 80 checkBox1.Font = new Font("Microsoft YaHei UI", 12F);
77 81 checkBox1.ForeColor = Color.White;
78 checkBox1.Location = new Point(130, 105);
82 checkBox1.Location = new Point(130, 81);
79 83 checkBox1.Name = "checkBox1";
80 84 checkBox1.Size = new Size(136, 35);
81 85 checkBox1.TabIndex = 10;
@@ -87,7 +91,7 @@
87 91 //
88 92 textBox2.BackColor = Color.FromArgb(64, 64, 64);
89 93 textBox2.ForeColor = Color.White;
90 textBox2.Location = new Point(312, 185);
94 textBox2.Location = new Point(312, 161);
91 95 textBox2.Name = "textBox2";
92 96 textBox2.Size = new Size(227, 30);
93 97 textBox2.TabIndex = 11;
@@ -98,7 +102,7 @@
98 102 checkBox2.AutoSize = true;
99 103 checkBox2.Font = new Font("Microsoft YaHei UI", 12F);
100 104 checkBox2.ForeColor = Color.White;
101 checkBox2.Location = new Point(130, 181);
105 checkBox2.Location = new Point(130, 157);
102 106 checkBox2.Name = "checkBox2";
103 107 checkBox2.Size = new Size(112, 35);
104 108 checkBox2.TabIndex = 12;
@@ -110,7 +114,7 @@
110 114 //
111 115 textBox3.BackColor = Color.FromArgb(64, 64, 64);
112 116 textBox3.ForeColor = Color.White;
113 textBox3.Location = new Point(312, 273);
117 textBox3.Location = new Point(312, 295);
114 118 textBox3.Name = "textBox3";
115 119 textBox3.Size = new Size(227, 30);
116 120 textBox3.TabIndex = 13;
@@ -121,7 +125,7 @@
121 125 checkBox3.AutoSize = true;
122 126 checkBox3.Font = new Font("Microsoft YaHei UI", 12F);
123 127 checkBox3.ForeColor = Color.White;
124 checkBox3.Location = new Point(130, 269);
128 checkBox3.Location = new Point(130, 291);
125 129 checkBox3.Name = "checkBox3";
126 130 checkBox3.Size = new Size(88, 35);
127 131 checkBox3.TabIndex = 14;
@@ -129,6 +133,52 @@
129 133 checkBox3.UseVisualStyleBackColor = true;
130 134 checkBox3.CheckedChanged += CheckBox3_CheckedChanged;
131 135 //
136 // checkBox4
137 //
138 checkBox4.AutoSize = true;
139 checkBox4.Font = new Font("Microsoft YaHei UI", 12F);
140 checkBox4.ForeColor = Color.White;
141 checkBox4.Location = new Point(130, 366);
142 checkBox4.Name = "checkBox4";
143 checkBox4.Size = new Size(136, 35);
144 checkBox4.TabIndex = 16;
145 checkBox4.Text = "基因点数";
146 checkBox4.UseVisualStyleBackColor = true;
147 checkBox4.CheckedChanged += CheckBox4_CheckedChanged;
148 //
149 // textBox4
150 //
151 textBox4.BackColor = Color.FromArgb(64, 64, 64);
152 textBox4.ForeColor = Color.White;
153 textBox4.Location = new Point(312, 370);
154 textBox4.Name = "textBox4";
155 textBox4.Size = new Size(227, 30);
156 textBox4.TabIndex = 15;
157 textBox4.Text = "99";
158 //
159 // checkBox5
160 //
161 checkBox5.AutoSize = true;
162 checkBox5.Font = new Font("Microsoft YaHei UI", 12F);
163 checkBox5.ForeColor = Color.White;
164 checkBox5.Location = new Point(130, 222);
165 checkBox5.Name = "checkBox5";
166 checkBox5.Size = new Size(88, 35);
167 checkBox5.TabIndex = 18;
168 checkBox5.Text = "生命";
169 checkBox5.UseVisualStyleBackColor = true;
170 checkBox5.CheckedChanged += CheckBox5_CheckedChanged;
171 //
172 // textBox5
173 //
174 textBox5.BackColor = Color.FromArgb(64, 64, 64);
175 textBox5.ForeColor = Color.White;
176 textBox5.Location = new Point(312, 226);
177 textBox5.Name = "textBox5";
178 textBox5.Size = new Size(227, 30);
179 textBox5.TabIndex = 17;
180 textBox5.Text = "99";
181 //
132 182 // MainForm
133 183 //
134 184 AutoScaleDimensions = new SizeF(11F, 24F);
@@ -136,6 +186,10 @@
136 186 BackColor = Color.FromArgb(64, 64, 64);
137 187 BackgroundImage = Properties.Resources.background;
138 188 ClientSize = new Size(629, 623);
189 Controls.Add(checkBox5);
190 Controls.Add(textBox5);
191 Controls.Add(checkBox4);
192 Controls.Add(textBox4);
139 193 Controls.Add(checkBox3);
140 194 Controls.Add(textBox3);
141 195 Controls.Add(checkBox2);
@@ -148,7 +202,7 @@
148 202 FormBorderStyle = FormBorderStyle.FixedToolWindow;
149 203 Icon = (Icon)resources.GetObject("$this.Icon");
150 204 Name = "MainForm";
151 Text = "辐射之海:序章 3项修改器[未启动游戏]";
205 Text = "辐射之海2 4项修改器[未启动游戏]";
152 206 ResumeLayout(false);
153 207 PerformLayout();
154 208 }
@@ -162,5 +216,9 @@
162 216 internal TextBox textBox1;
163 217 internal TextBox textBox2;
164 218 internal TextBox textBox3;
219 internal CheckBox checkBox4;
220 internal TextBox textBox4;
221 internal CheckBox checkBox5;
222 internal TextBox textBox5;
165 223 }
166 224 }
Modified SeaOfRadiationEditor/MainForm.cs +56 -5
@@ -10,6 +10,7 @@ public partial class MainForm : Form
10 10 public DynamicMemoryItem resetItem;
11 11 public DynamicMemoryItem timeCounterItem;
12 12 public DynamicMemoryItem staminaItem;
13 public DynamicMemoryItem geneItem;
13 14 public MainForm()
14 15 {
15 16 InitializeComponent();
@@ -18,6 +19,7 @@ public partial class MainForm : Form
18 19 resetItem = Program.Manager["Reset"];
19 20 timeCounterItem = Program.Manager["TimeCounter"];
20 21 staminaItem = Program.Manager["Stamina"];
22 geneItem = Program.Manager["Gene"];
21 23 }
22 24
23 25 private void Manager_ValueChanged(MemoryItem sender, MemoryValue e)
@@ -46,6 +48,13 @@ public partial class MainForm : Form
46 48 Trace.WriteLine("Staminaд��ʧ��");
47 49 }
48 50 break;
51 case "Gene":
52 if (e.CurrentValueGetSuccessful && checkBox4.Checked)
53 {
54 if (!sender.Write(int.Parse(textBox4.Text)))
55 Trace.WriteLine("Geneд��ʧ��");
56 }
57 break;
49 58 default:
50 59 break;
51 60 }
@@ -146,14 +155,55 @@ public partial class MainForm : Form
146 155 }
147 156 }
148 157
149 private static bool CheckGameStart()
158 private async void CheckBox4_CheckedChanged(object sender, EventArgs e)
150 159 {
151 if (!SystemProfile.IsGameRunning)
160 try
152 161 {
153 MessageBox.Show("��������Ϸ");
154 return false;
162 if (sender is CheckBox checkBox)
163 {
164 if (checkBox.Checked)
165 {
166 if (CheckGameStart())
167 {
168 try
169 {
170 textBox4.Enabled = false;
171 await Task.Delay(5);
172 Program.Manager["Gene"].Write(int.Parse(textBox4.Text));
173 geneItem.Write(int.Parse(textBox4.Text));
174 }
175 catch (Exception ex)
176 {
177 Trace.WriteLine(ex.ToString());
178 }
179 }
180 else
181 {
182 checkBox4.Checked = false;
183 }
184 }
185 else
186 {
187 textBox4.Enabled = true;
188 }
189 }
190 }
191 catch (Exception ex)
192 {
193 Debug.WriteLine(ex.Message);
155 194 }
156 return true;
195 }
196
197 private void CheckBox5_CheckedChanged(object sender, EventArgs e)
198 {
199
200 }
201
202 private static bool CheckGameStart()
203 {
204 if (SystemProfile.IsGameRunning) return true;
205 MessageBox.Show("��������Ϸ");
206 return false;
157 207 }
158 208
159 209 public static void RemoveAllCheck()
@@ -161,5 +211,6 @@ public partial class MainForm : Form
161 211 Current?.Invoke(() => Current.checkBox1.Checked = false);
162 212 Current?.Invoke(() => Current.checkBox2.Checked = false);
163 213 Current?.Invoke(() => Current.checkBox3.Checked = false);
214 Current?.Invoke(() => Current.checkBox4.Checked = false);
164 215 }
165 216 }
Modified SeaOfRadiationEditor/MainForm.resx +2 -2
@@ -1,7 +1,7 @@
1 1 <?xml version="1.0" encoding="utf-8"?>
2 2 <root>
3 3 <!--
4 Microsoft ResX Schema
4 Microsoft ResX Schema
5 5
6 6 Version 2.0
7 7
@@ -48,7 +48,7 @@
48 48 value : The object must be serialized with
49 49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 50 : and then encoded with base64 encoding.
51
51
52 52 mimetype: application/x-microsoft.net.object.soap.base64
53 53 value : The object must be serialized with
54 54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
Modified SeaOfRadiationEditor/Program.cs +10 -4
@@ -5,16 +5,22 @@ namespace SeaOfRadiationEditor;
5 5 internal static class Program
6 6 {
7 7 public static DynamicMemoryManager Manager { get; } = MemoryManager.CreateBuilder()
8 .WithAutoReacquireProcess("Sea_of_Radiation_Prologue")
8 .WithAutoReacquireProcess("Sea_Of_Radiation_2")
9 9 .BuildDynamicManager(
10 10 MemoryItemBuilder.Create<int>("Reset")
11 .WithResolvePointer("mono-2.0-bdwgc.dll", 0x0072A200, 0x14A0, 0x0, 0x80, 0xE4, 0x0, 0x1EC)
11 .WithResolvePointer("UnityPlayer.dll", 0x01CBD6E8, 0xF28, 0x2A8, 0x30, 0x18, 0x28, 0x2D0)
12 .WithListener(10, true),
13 MemoryItemBuilder.Create<int>("Health")
14 .WithResolvePointer("UnityPlayer.dll", 0x01CBD6E8, 0x120, 0x68, 0xD0, 0x60, 0x20, 0x134)
12 15 .WithListener(10, true),
13 16 MemoryItemBuilder.Create<float>("TimeCounter")
14 .WithResolvePointer("mono-2.0-bdwgc.dll", 0x0072A200, 0x12E8, 0x0, 0x80, 0xE4, 0x0, 0x1E0)
17 .WithResolvePointer("UnityPlayer.dll", 0x01CBD6E8, 0xF28, 0x2A8, 0x30, 0x18, 0x28, 0x2C4)
15 18 .WithListener(10, true),
16 19 MemoryItemBuilder.Create<float>("Stamina")
17 .WithResolvePointer("mono-2.0-bdwgc.dll", 0x0072A200, 0x14E0, 0x48, 0x10, 0x20, 0x50, 0x20, 0x1B0)
20 .WithResolvePointer("UnityPlayer.dll", 0x01D33C98, 0x10, 0x18, 0x38, 0x70, 0x28, 0x248)
21 .WithListener(10, true),
22 MemoryItemBuilder.Create<int>("Gene")
23 .WithResolvePointer("gameoverlayrenderer64.dll", 0x0013DF44, 0x10, 0x20, 0x20, 0x1C0, 0x49C)
18 24 .WithListener(10, true));
19 25 /// <summary>
20 26 /// The main entry point for the application.
Modified SeaOfRadiationEditor/SeaOfRadiationEditor.csproj +2 -1
@@ -9,7 +9,8 @@
9 9 </PropertyGroup>
10 10
11 11 <ItemGroup>
12 <PackageReference Include="XFEExtension.NetCore.MemoryEditor" Version="2.0.3" />
12 <PackageReference Include="XFEExtension.NetCore" Version="3.3.14" />
13 <PackageReference Include="XFEExtension.NetCore.MemoryEditor" Version="2.1.0" />
13 14 </ItemGroup>
14 15
15 16 <ItemGroup>
Modified SeaOfRadiationEditor/SystemProfile.cs +2 -2
@@ -14,7 +14,7 @@ public static class SystemProfile
14 14 {
15 15 try
16 16 {
17 MainForm.Current?.Invoke(() => MainForm.Current.Text = "辐射之海:序章 3项修改器[游戏进行中]");
17 MainForm.Current?.Invoke(() => MainForm.Current.Text = "辐射之海2 4项修改器[游戏进行中]");
18 18 }
19 19 catch { }
20 20 }
@@ -22,7 +22,7 @@ public static class SystemProfile
22 22 {
23 23 try
24 24 {
25 MainForm.Current?.Invoke(() => MainForm.Current.Text = "辐射之海:序章 3项修改器[未启动游戏]");
25 MainForm.Current?.Invoke(() => MainForm.Current.Text = "辐射之海2 4项修改器[未启动游戏]");
26 26 MainForm.RemoveAllCheck();
27 27 }
28 28 catch { }