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

SeaOfRadiationEditor

【WinForm】SeaOfRadiationEditor游戏修改器

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

XFEstudio/SeaOfRadiationEditor

更新引用,完善修改器

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

代码差异

14 个文件 +637 -63
Modified SeaOfRadiationEditor.sln +14 -1
@@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
2 2 # Visual Studio Version 17
3 3 VisualStudioVersion = 17.10.34814.14
4 4 MinimumVisualStudioVersion = 10.0.40219.1
5 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SeaOfRadiationEditor", "SeaOfRadiationEditor\SeaOfRadiationEditor.csproj", "{49E255F9-BBA4-40F1-BAEE-8895377CFD02}"
5 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SeaOfRadiationEditor", "SeaOfRadiationEditor\SeaOfRadiationEditor.csproj", "{49E255F9-BBA4-40F1-BAEE-8895377CFD02}"
6 6 EndProject
7 7 Global
8 8 GlobalSection(ExtensibilityGlobals) = postSolution
@@ -22,3 +22,16 @@ Global
22 22 HideSolutionNode = FALSE
23 23 EndGlobalSection
24 24 EndGlobal
25 C-B6F7-7518F9082DD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26 {5AADED35-3C2B-432C-B6F7-7518F9082DD4}.Debug|Any CPU.Build.0 = Debug|Any CPU
27 {5AADED35-3C2B-432C-B6F7-7518F9082DD4}.Release|Any CPU.ActiveCfg = Release|Any CPU
28 {5AADED35-3C2B-432C-B6F7-7518F9082DD4}.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
36 EndGlobalSection
37 EndGlobal
Deleted SeaOfRadiationEditor/Form1.Designer.cs +0 -39
@@ -1,39 +0,0 @@
1 namespace SeaOfRadiationEditor
2 {
3 partial class Form1
4 {
5 /// <summary>
6 /// Required designer variable.
7 /// </summary>
8 private System.ComponentModel.IContainer components = null;
9
10 /// <summary>
11 /// Clean up any resources being used.
12 /// </summary>
13 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
14 protected override void Dispose(bool disposing)
15 {
16 if (disposing && (components != null))
17 {
18 components.Dispose();
19 }
20 base.Dispose(disposing);
21 }
22
23 #region Windows Form Designer generated code
24
25 /// <summary>
26 /// Required method for Designer support - do not modify
27 /// the contents of this method with the code editor.
28 /// </summary>
29 private void InitializeComponent()
30 {
31 this.components = new System.ComponentModel.Container();
32 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
33 this.ClientSize = new System.Drawing.Size(800, 450);
34 this.Text = "Form1";
35 }
36
37 #endregion
38 }
39 }
Deleted SeaOfRadiationEditor/Form1.cs +0 -10
@@ -1,10 +0,0 @@
1 namespace SeaOfRadiationEditor
2 {
3 public partial class Form1 : Form
4 {
5 public Form1()
6 {
7 InitializeComponent();
8 }
9 }
10 }
Added SeaOfRadiationEditor/MainForm.Designer.cs +166 -0
@@ -0,0 +1,166 @@
1 namespace SeaOfRadiationEditor
2 {
3 partial class MainForm
4 {
5 /// <summary>
6 /// Required designer variable.
7 /// </summary>
8 private System.ComponentModel.IContainer components = null;
9
10 /// <summary>
11 /// Clean up any resources being used.
12 /// </summary>
13 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
14 protected override void Dispose(bool disposing)
15 {
16 if (disposing && (components != null))
17 {
18 components.Dispose();
19 }
20 base.Dispose(disposing);
21 }
22
23 #region Windows Form Designer generated code
24
25 /// <summary>
26 /// Required method for Designer support - do not modify
27 /// the contents of this method with the code editor.
28 /// </summary>
29 private void InitializeComponent()
30 {
31 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
32 textBox1 = new TextBox();
33 label1 = new Label();
34 label2 = new Label();
35 checkBox1 = new CheckBox();
36 textBox2 = new TextBox();
37 checkBox2 = new CheckBox();
38 textBox3 = new TextBox();
39 checkBox3 = new CheckBox();
40 SuspendLayout();
41 //
42 // textBox1
43 //
44 textBox1.BackColor = Color.FromArgb(64, 64, 64);
45 textBox1.ForeColor = Color.White;
46 textBox1.Location = new Point(312, 105);
47 textBox1.Name = "textBox1";
48 textBox1.Size = new Size(227, 30);
49 textBox1.TabIndex = 0;
50 textBox1.Text = "99";
51 //
52 // label1
53 //
54 label1.AutoSize = true;
55 label1.Font = new Font("Microsoft YaHei UI", 12F);
56 label1.ForeColor = Color.White;
57 label1.Location = new Point(205, 487);
58 label1.Name = "label1";
59 label1.Size = new Size(250, 31);
60 label1.TabIndex = 4;
61 label1.Text = "by bilibili UP:XFE菜狗";
62 //
63 // label2
64 //
65 label2.AutoSize = true;
66 label2.ForeColor = Color.White;
67 label2.Location = new Point(152, 560);
68 label2.Name = "label2";
69 label2.Size = new Size(370, 24);
70 label2.TabIndex = 5;
71 label2.Text = "声明:本修改器完全免费,如遇收费均为盗版";
72 //
73 // checkBox1
74 //
75 checkBox1.AutoSize = true;
76 checkBox1.Font = new Font("Microsoft YaHei UI", 12F);
77 checkBox1.ForeColor = Color.White;
78 checkBox1.Location = new Point(130, 105);
79 checkBox1.Name = "checkBox1";
80 checkBox1.Size = new Size(136, 35);
81 checkBox1.TabIndex = 10;
82 checkBox1.Text = "重置次数";
83 checkBox1.UseVisualStyleBackColor = true;
84 checkBox1.CheckedChanged += CheckBox1_CheckedChanged;
85 //
86 // textBox2
87 //
88 textBox2.BackColor = Color.FromArgb(64, 64, 64);
89 textBox2.ForeColor = Color.White;
90 textBox2.Location = new Point(312, 185);
91 textBox2.Name = "textBox2";
92 textBox2.Size = new Size(227, 30);
93 textBox2.TabIndex = 11;
94 textBox2.Text = "600";
95 //
96 // checkBox2
97 //
98 checkBox2.AutoSize = true;
99 checkBox2.Font = new Font("Microsoft YaHei UI", 12F);
100 checkBox2.ForeColor = Color.White;
101 checkBox2.Location = new Point(130, 181);
102 checkBox2.Name = "checkBox2";
103 checkBox2.Size = new Size(112, 35);
104 checkBox2.TabIndex = 12;
105 checkBox2.Text = "倒计时";
106 checkBox2.UseVisualStyleBackColor = true;
107 checkBox2.CheckedChanged += CheckBox2_CheckedChanged;
108 //
109 // textBox3
110 //
111 textBox3.BackColor = Color.FromArgb(64, 64, 64);
112 textBox3.ForeColor = Color.White;
113 textBox3.Location = new Point(312, 273);
114 textBox3.Name = "textBox3";
115 textBox3.Size = new Size(227, 30);
116 textBox3.TabIndex = 13;
117 textBox3.Text = "99";
118 //
119 // checkBox3
120 //
121 checkBox3.AutoSize = true;
122 checkBox3.Font = new Font("Microsoft YaHei UI", 12F);
123 checkBox3.ForeColor = Color.White;
124 checkBox3.Location = new Point(130, 269);
125 checkBox3.Name = "checkBox3";
126 checkBox3.Size = new Size(88, 35);
127 checkBox3.TabIndex = 14;
128 checkBox3.Text = "体力";
129 checkBox3.UseVisualStyleBackColor = true;
130 checkBox3.CheckedChanged += CheckBox3_CheckedChanged;
131 //
132 // MainForm
133 //
134 AutoScaleDimensions = new SizeF(11F, 24F);
135 AutoScaleMode = AutoScaleMode.Font;
136 BackColor = Color.FromArgb(64, 64, 64);
137 BackgroundImage = Properties.Resources.background;
138 ClientSize = new Size(629, 623);
139 Controls.Add(checkBox3);
140 Controls.Add(textBox3);
141 Controls.Add(checkBox2);
142 Controls.Add(textBox2);
143 Controls.Add(checkBox1);
144 Controls.Add(label2);
145 Controls.Add(label1);
146 Controls.Add(textBox1);
147 DoubleBuffered = true;
148 FormBorderStyle = FormBorderStyle.FixedToolWindow;
149 Icon = (Icon)resources.GetObject("$this.Icon");
150 Name = "MainForm";
151 Text = "辐射之海:序章 3项修改器[未启动游戏]";
152 ResumeLayout(false);
153 PerformLayout();
154 }
155
156 #endregion
157 private Label label1;
158 private Label label2;
159 internal CheckBox checkBox1;
160 internal CheckBox checkBox2;
161 internal CheckBox checkBox3;
162 internal TextBox textBox1;
163 internal TextBox textBox2;
164 internal TextBox textBox3;
165 }
166 }
Added SeaOfRadiationEditor/MainForm.cs +121 -0
@@ -0,0 +1,121 @@
1 using System.Diagnostics;
2 using XFEExtension.NetCore.MemoryEditor;
3
4 namespace SeaOfRadiationEditor;
5
6 public partial class MainForm : Form
7 {
8 public static MainForm? Current { get; set; }
9 public MainForm()
10 {
11 InitializeComponent();
12 Current = this;
13 Program.Manager.ValueChanged += Manager_ValueChanged;
14 }
15
16 private void Manager_ValueChanged(XFEExtension.NetCore.MemoryEditor.Manager.MemoryItem sender, MemoryValue e)
17 {
18 Trace.WriteLine($"���ƣ�{e.CustomName} ��ַ��{sender:X}\t�Ƿ��ȡ��ֵ �ϴΣ�{e.PreviousValueGetSuccessful} ��Σ�{e.CurrentValueGetSuccessful} ֵ�ӣ�{e.PreviousValue} ���Ϊ��{e.CurrentValue}");
19 switch (e.CustomName)
20 {
21 case "Reset":
22 if (e.CurrentValueGetSuccessful && SystemProfile.ResetFuncStart)
23 {
24 if (!sender.Write(int.Parse(textBox1.Text)))
25 Trace.WriteLine($"Resetд��ʧ��");
26 }
27 break;
28 case "TimeCounter":
29 if (e.CurrentValueGetSuccessful && SystemProfile.TimeCounterFuncStart)
30 {
31 if (!sender.Write(float.Parse(textBox2.Text)))
32 Trace.WriteLine("TimeCounterд��ʧ��");
33 }
34 break;
35 case "Stamina":
36 if (e.CurrentValueGetSuccessful && SystemProfile.StaminaFuncStart)
37 {
38 if (!sender.Write(float.Parse(textBox3.Text)))
39 Trace.WriteLine("Staminaд��ʧ��");
40 }
41 break;
42 default:
43 break;
44 }
45 }
46
47 private void CheckBox1_CheckedChanged(object sender, EventArgs e)
48 {
49 if (sender is CheckBox checkBox)
50 {
51 if (checkBox.Checked)
52 {
53 if (CheckGameStart(checkBox))
54 {
55 SystemProfile.ResetFuncStart = true;
56 Program.Manager["Reset"].Write(int.Parse(textBox1.Text));
57 }
58 }
59 else
60 {
61 SystemProfile.ResetFuncStart = false;
62 }
63 }
64 }
65
66 private void CheckBox2_CheckedChanged(object sender, EventArgs e)
67 {
68 if (sender is CheckBox checkBox)
69 {
70 if (checkBox.Checked)
71 {
72 if (CheckGameStart(checkBox))
73 {
74 SystemProfile.TimeCounterFuncStart = true;
75 Program.Manager["TimeCounter"].Write(float.Parse(textBox2.Text));
76 }
77 }
78 else
79 {
80 SystemProfile.TimeCounterFuncStart = false;
81 }
82 }
83 }
84
85 private void CheckBox3_CheckedChanged(object sender, EventArgs e)
86 {
87 if (sender is CheckBox checkBox)
88 {
89 if (checkBox.Checked)
90 {
91 if (CheckGameStart(checkBox))
92 {
93 SystemProfile.StaminaFuncStart = true;
94 Program.Manager["Stamina"].Write(float.Parse(textBox3.Text));
95 }
96 }
97 else
98 {
99 SystemProfile.StaminaFuncStart = false;
100 }
101 }
102 }
103
104 private static bool CheckGameStart(CheckBox checkBox)
105 {
106 if (!SystemProfile.IsGameRunning)
107 {
108 MessageBox.Show("��������Ϸ");
109 RemoveAllCheck();
110 return false;
111 }
112 return true;
113 }
114
115 public static void RemoveAllCheck()
116 {
117 SystemProfile.ResetFuncStart = false;
118 SystemProfile.TimeCounterFuncStart = false;
119 SystemProfile.StaminaFuncStart = false;
120 }
121 }
Added SeaOfRadiationEditor/MainForm.resx +145 -0
@@ -0,0 +1,145 @@
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
121 <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
122 <value>
123 AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAMQOAADEDgAAAAAAAAAA
124 AABjayH/XlcA/3h3A/9MTQP/XlcS/5aZEf+FgAP/m58f/46QBf+MjxL/goAA/4OCB/+CggX/e3kA/316
125 BP9pZQT/orNx/8Hku//I6sD/v+K2/7DIj/+jtnf/YmQf/19cDf9naRD/XV8U/4iRRv+31KX/yPPM/8Xl
126 sf+82qv/pLh0/0xDBP+FjEP/lKJh/0ZEEv94eiX/REgX/yUnDf9ycSP/cXMo/yEjDv85OQj/nq5n/zYx
127 Bv+Jjjj/gIM1/1hhM/9PRwf/fH0h/0hFD/8nIwv/NzcV/y8yD/8xLgz/CAcW/wMDF/89PRD/Ly8K/xUT
128 D/8tJwv/VFEN/4uPPf9wcSj/iYge/0pJC/8eGwz/GRoT/ycoEv8tKAn/MjAM/wQEFv8DAxj/HRoO/z07
129 Cv8ODBL/GhcO/yUgDf9YVhD/g4Ml/3t5Ff8fGwv/ERAS/4WNS/9WVyL/JR8L/yQgDv89PR7/RUgl/zc0
130 D/8wKwj/iZda/3J7S/8XEg7/JyEH/4eJHf9GRhD/ZGIV/29qDP+Ml0n/d34u/0tIDP8hO1j/W1ws/2xv
131 NP8cKjr/Y14V/46TRP+fq1z/cm0K/1hXIv8/PhH/RDoA/1lTC/95dyf/dn8y/521hv9nayj/dnUe/3t9
132 Lf+LkEf/bG0a/4KJQP+RkzD/dHIa/2NeEf9LQgL/SUMP/0M4CP9gXBn/ZmAa/4WUZP+aoEH/lKdk/1tT
133 Df9jYxb/goM1/15aD/+dr23/l5s5/3l0Hv9NQwT/SD8B/05HA/80KwT/OjAB/1FJDf93din/c24b/6Cx
134 Zf+itnT/m51D/4B6Hv+yyZX/oLFu/3+FOf9UTQX/TUUQ/1lUHv84LwL/KyMH/y4mBv85MQT/YVwa/1hR
135 C/+PnWX/rsSH/5ihUP+rvX7/qr15/5SiU/+cpFz/UUkI/zw1Bf8xKQP/MScG/ykgCf8uJgf/PTUF/01E
136 CP9YUQ//fXYV/5+oWP/K4q3/zem3/6KsWf9rZQr/bmgX/1ZOC/9IPwb/MSkF/ykgCv83LwX/ODIF/0A4
137 BP9aUgb/ZV4O/4qJOf+YnUH/yuu6/9Hzxf+kqFj/dG8Q/25pEv9ZTwj/TkYE/zwzA/84LwX/RT0H/1BJ
138 BP9pZBH/eHYa/46QPP+nsmr/rLdw/83uxP/U+dP/t8SJ/6q1df+MjDL/f3kY/2VdCv9XUQf/U0wK/zcw
139 CP9QSgb/XlkL/3VzJP+anlT/uMuV/8flvv/R+ef/1fzq/8zsxv+6zZX/rbx+/5GUR/90cSz/QjsF/0E7
140 Bv8ZFRD/JyIM/zw1B/8zLQj/OzQI/09JDP9RSgv/X1cO/1ZMCv9TSwn/R0EI/zw1Bv87Ngj/NzIJ/zQv
141 B/8nIAv/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
142 AAAAAAAAAAAAAA==
143 </value>
144 </data>
145 </root>
Modified SeaOfRadiationEditor/Program.cs +36 -13
@@ -1,17 +1,40 @@
1 namespace SeaOfRadiationEditor
1 using XFEExtension.NetCore.MemoryEditor.Manager;
2
3 namespace SeaOfRadiationEditor;
4
5 internal static class Program
2 6 {
3 internal static class Program
7 public static DynamicMemoryManager Manager { get; } = MemoryManager.CreateBuilder()
8 .WithAutoReacquireProcess("Sea_of_Radiation_Prologue")
9 .WithFindProcessWhenCreate()
10 .BuildDynamicManager(
11 MemoryItemBuilder.Create<int>("Reset")
12 .WithResolvePointer("mono-2.0-bdwgc.dll", 0x0072A200, 0x14A0, 0x0, 0x80, 0xE4, 0x0, 0x1EC)
13 .WithListener(),
14 MemoryItemBuilder.Create<float>("TimeCounter")
15 .WithResolvePointer("mono-2.0-bdwgc.dll", 0x0072A200, 0x12E8, 0x0, 0x80, 0xE4, 0x0, 0x1E0)
16 .WithListener(),
17 MemoryItemBuilder.Create<float>("Stamina")
18 .WithResolvePointer("mono-2.0-bdwgc.dll", 0x0072A200, 0x14E0, 0x48, 0x10, 0x20, 0x50, 0x20, 0x1B0)
19 .WithListener());
20 /// <summary>
21 /// The main entry point for the application.
22 /// </summary>
23 [STAThread]
24 static void Main()
4 25 {
5 /// <summary>
6 /// The main entry point for the application.
7 /// </summary>
8 [STAThread]
9 static void Main()
10 {
11 // To customize application configuration such as set high DPI settings or default font,
12 // see https://aka.ms/applicationconfiguration.
13 ApplicationConfiguration.Initialize();
14 Application.Run(new Form1());
15 }
26 // To customize application configuration such as set high DPI settings or default font,
27 // see https://aka.ms/applicationconfiguration.
28 ApplicationConfiguration.Initialize();
29 var mainForm = new MainForm();
30 Manager.CurrentProcessEntered += Manager_CurrentProcessEntered;
31 Manager.CurrentProcessExit += Manager_CurrentProcessExit;
32 if (Manager.CurrentProcess is not null && !Manager.CurrentProcess.HasExited)
33 SystemProfile.IsGameRunning = true;
34 else
35 SystemProfile.IsGameRunning = false;
36 Application.Run(mainForm);
16 37 }
38 private static void Manager_CurrentProcessExit(object? sender, EventArgs e) => SystemProfile.IsGameRunning = false;
39 private static void Manager_CurrentProcessEntered(object? sender, EventArgs e) => SystemProfile.IsGameRunning = true;
17 40 }
Added SeaOfRadiationEditor/Properties/Resources.Designer.cs +73 -0
@@ -0,0 +1,73 @@
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // 此代码由工具生成。
4 // 运行时版本:4.0.30319.42000
5 //
6 // 对此文件的更改可能会导致不正确的行为,并且如果
7 // 重新生成代码,这些更改将会丢失。
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10
11 namespace SeaOfRadiationEditor.Properties {
12 using System;
13
14
15 /// <summary>
16 /// 一个强类型的资源类,用于查找本地化的字符串等。
17 /// </summary>
18 // 此类是由 StronglyTypedResourceBuilder
19 // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
20 // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
21 // (以 /str 作为命令选项),或重新生成 VS 项目。
22 [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 internal class Resources {
26
27 private static global::System.Resources.ResourceManager resourceMan;
28
29 private static global::System.Globalization.CultureInfo resourceCulture;
30
31 [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 internal Resources() {
33 }
34
35 /// <summary>
36 /// 返回此类使用的缓存的 ResourceManager 实例。
37 /// </summary>
38 [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 internal static global::System.Resources.ResourceManager ResourceManager {
40 get {
41 if (object.ReferenceEquals(resourceMan, null)) {
42 global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SeaOfRadiationEditor.Properties.Resources", typeof(Resources).Assembly);
43 resourceMan = temp;
44 }
45 return resourceMan;
46 }
47 }
48
49 /// <summary>
50 /// 重写当前线程的 CurrentUICulture 属性,对
51 /// 使用此强类型资源类的所有资源查找执行重写。
52 /// </summary>
53 [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 internal static global::System.Globalization.CultureInfo Culture {
55 get {
56 return resourceCulture;
57 }
58 set {
59 resourceCulture = value;
60 }
61 }
62
63 /// <summary>
64 /// 查找 System.Drawing.Bitmap 类型的本地化资源。
65 /// </summary>
66 internal static System.Drawing.Bitmap background {
67 get {
68 object obj = ResourceManager.GetObject("background", resourceCulture);
69 return ((System.Drawing.Bitmap)(obj));
70 }
71 }
72 }
73 }
Renamed SeaOfRadiationEditor/Properties/Resources.resx +4 -0
@@ -117,4 +117,8 @@
117 117 <resheader name="writer">
118 118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 119 </resheader>
120 <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
121 <data name="background" type="System.Resources.ResXFileRef, System.Windows.Forms">
122 <value>..\Resources\background.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123 </data>
120 124 </root>
Added SeaOfRadiationEditor/Resources/background.png +0 -0
二进制文件已变更,无法进行逐行预览。
Modified SeaOfRadiationEditor/SeaOfRadiationEditor.csproj +19 -0
@@ -8,4 +8,23 @@
8 8 <ImplicitUsings>enable</ImplicitUsings>
9 9 </PropertyGroup>
10 10
11 <ItemGroup>
12 <PackageReference Include="XFEExtension.NetCore.MemoryEditor" Version="2.0.2" />
13 </ItemGroup>
14
15 <ItemGroup>
16 <Compile Update="Properties\Resources.Designer.cs">
17 <DesignTime>True</DesignTime>
18 <AutoGen>True</AutoGen>
19 <DependentUpon>Resources.resx</DependentUpon>
20 </Compile>
21 </ItemGroup>
22
23 <ItemGroup>
24 <EmbeddedResource Update="Properties\Resources.resx">
25 <Generator>ResXFileCodeGenerator</Generator>
26 <LastGenOutput>Resources.Designer.cs</LastGenOutput>
27 </EmbeddedResource>
28 </ItemGroup>
29
11 30 </Project>
Added SeaOfRadiationEditor/SystemProfile.cs +59 -0
@@ -0,0 +1,59 @@
1 using XFEExtension.NetCore.ProfileExtension;
2
3 namespace SeaOfRadiationEditor;
4
5 public static partial class SystemProfile
6 {
7 private static bool isGameRunning;
8
9 public static bool IsGameRunning
10 {
11 get { return isGameRunning; }
12 set
13 {
14 isGameRunning = value;
15 if (value)
16 {
17 try
18 {
19 MainForm.Current?.Invoke(() => MainForm.Current.Text = "辐射之海:序章 3项修改器[游戏进行中]");
20 }
21 catch
22 {
23 MainForm.Current!.Text = "辐射之海:序章 3项修改器[游戏进行中]";
24 }
25 }
26 else
27 {
28 try
29 {
30 MainForm.Current?.Invoke(() => MainForm.Current.Text = "辐射之海:序章 3项修改器[未启动游戏]");
31 }
32 catch
33 {
34 MainForm.Current!.Text = "辐射之海:序章 3项修改器[未启动游戏]";
35 }
36 MainForm.RemoveAllCheck();
37 }
38 }
39 }
40
41 [ProfileProperty]
42 [ProfilePropertyAddSet(@"try{ MainForm.Current?.Invoke(() => MainForm.Current.checkBox1.Checked = value); } catch {}")]
43 [ProfilePropertyAddSet(@"try{ MainForm.Current?.Invoke(() => MainForm.Current.textBox1.Enabled = !value); } catch {}")]
44 [ProfilePropertyAddSet(@"if(value) Program.Manager[""Reset""].StartListen(10); else Program.Manager[""Reset""].StopListen()")]
45 [ProfilePropertyAddSet("resetFuncStart = value")]
46 static bool resetFuncStart;
47 [ProfileProperty]
48 [ProfilePropertyAddSet(@"try{ MainForm.Current?.Invoke(() => MainForm.Current.checkBox2.Checked = value); } catch {}")]
49 [ProfilePropertyAddSet(@"try{ MainForm.Current?.Invoke(() => MainForm.Current.textBox2.Enabled = !value); } catch {}")]
50 [ProfilePropertyAddSet(@"if(value) Program.Manager[""TimeCounter""].StartListen(10); else Program.Manager[""TimeCounter""].StopListen()")]
51 [ProfilePropertyAddSet("timeCounterFuncStart = value")]
52 static bool timeCounterFuncStart;
53 [ProfileProperty]
54 [ProfilePropertyAddSet(@"try{ MainForm.Current?.Invoke(() => MainForm.Current.checkBox3.Checked = value); } catch {}")]
55 [ProfilePropertyAddSet(@"try{ MainForm.Current?.Invoke(() => MainForm.Current.textBox3.Enabled = !value); } catch {}")]
56 [ProfilePropertyAddSet(@"if(value) Program.Manager[""Stamina""].StartListen(10); else Program.Manager[""Stamina""].StopListen()")]
57 [ProfilePropertyAddSet("staminaFuncStart = value")]
58 static bool staminaFuncStart;
59 }
Added background.png +0 -0
二进制文件已变更,无法进行逐行预览。
Added icon.ico +0 -0
二进制文件已变更,无法进行逐行预览。