返回提交历史
Modified
SeaOfRadiationEditor.sln
+7
-20
Modified
SeaOfRadiationEditor/MainForm.Designer.cs
+65
-7
Modified
SeaOfRadiationEditor/MainForm.cs
+56
-5
Modified
SeaOfRadiationEditor/MainForm.resx
+2
-2
Modified
SeaOfRadiationEditor/Program.cs
+10
-4
Modified
SeaOfRadiationEditor/SeaOfRadiationEditor.csproj
+2
-1
Modified
SeaOfRadiationEditor/SystemProfile.cs
+2
-2
XFEstudio/SeaOfRadiationEditor
初步完善二代编辑器
3d06fd7
代码差异
7 个文件
+144
-41
@@ -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
@@ -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
}
@@ -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
}
@@ -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
@@ -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.
@@ -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>
@@ -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 { }