diff --git a/README.md b/README.md
index 601e0c1..544b3cd 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ A desktop app that manage and configures stellaris lobby settings.
wormholes everywhere
## Supported Game Version
-- 3.9.0 Open Beta
+- 3.9.0
- 3.8.4
- 3.8.3
diff --git a/READMECN.md b/READMECN.md
index cb003f6..c0c533d 100644
--- a/READMECN.md
+++ b/READMECN.md
@@ -26,7 +26,7 @@
到处是虫洞
## 支持版本
-- 3.9.0 公测版
+- 3.9.0
- 3.8.4
- 3.8.3
diff --git a/Stellaris-Lobby-Manager/App.config b/Stellaris-Lobby-Manager/App.config
index 3ecea38..009ec91 100644
--- a/Stellaris-Lobby-Manager/App.config
+++ b/Stellaris-Lobby-Manager/App.config
@@ -17,16 +17,16 @@
False
- 41362280
+ 41335544
- 2248
+ 2304
True
- 42535000
+ 42508600
24
@@ -44,11 +44,14 @@
16
- 1515366
+ 1514601
True
+
+ 194
+
\ No newline at end of file
diff --git a/Stellaris-Lobby-Manager/LobbyManager.cs b/Stellaris-Lobby-Manager/LobbyManager.cs
index ea37ac8..d1aef29 100644
--- a/Stellaris-Lobby-Manager/LobbyManager.cs
+++ b/Stellaris-Lobby-Manager/LobbyManager.cs
@@ -539,12 +539,16 @@ private void _ToggleOverflow(bool canOverflow)
{
overflowRestore = MemoryHelper.ReadUnmanaged(stellarisProcess, gameBase + Properties.Settings.Default.overflowOffset, 5);
- // in case program is closed before overflow is restored
- if (overflowRestore.SequenceEqual(new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90 }))
+ // it must be a jump instruction
+ if (overflowRestore[0] == 0xE8)
{
- overflowRestore = new byte[] { 0xE8, 0xC5, 0x00, 0x00, 0x00 };
+ // in case program is closed before overflow is restored
+ if (overflowRestore.SequenceEqual(new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90 }))
+ {
+ overflowRestore = new byte[] { 0xE8, (byte)Properties.Settings.Default.overflowJump, 0x00, 0x00, 0x00 };
+ }
+ MemoryHelper.WriteUnmanaged(stellarisProcess, gameBase + Properties.Settings.Default.overflowOffset, new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90 });
}
- MemoryHelper.WriteUnmanaged(stellarisProcess, gameBase + Properties.Settings.Default.overflowOffset, new byte[] { 0x90, 0x90, 0x90, 0x90, 0x90 });
}
else if (overflowRestore != null)
{
diff --git a/Stellaris-Lobby-Manager/OffsetSetter.Designer.cs b/Stellaris-Lobby-Manager/OffsetSetter.Designer.cs
index cef0e9c..bdee753 100644
--- a/Stellaris-Lobby-Manager/OffsetSetter.Designer.cs
+++ b/Stellaris-Lobby-Manager/OffsetSetter.Designer.cs
@@ -29,13 +29,6 @@ protected override void Dispose(bool disposing)
private void InitializeComponent()
{
offsetPanel = new TableLayoutPanel();
- lobbyOffset1 = new NumericUpDown();
- lobbyOffset2 = new NumericUpDown();
- sizeOffset1 = new NumericUpDown();
- sizeOffset2 = new NumericUpDown();
- sizeCountOffset = new NumericUpDown();
- sizeStringOffset = new NumericUpDown();
- shapeOffset = new NumericUpDown();
overflowOffsetDesc = new Label();
shapeStringOffsetDesc = new Label();
shapeOffsetDesc = new Label();
@@ -47,18 +40,25 @@ private void InitializeComponent()
lobbyOffset1Desc = new Label();
overflowOffset = new NumericUpDown();
shapeStringOffset = new NumericUpDown();
+ shapeOffset = new NumericUpDown();
+ sizeStringOffset = new NumericUpDown();
+ sizeCountOffset = new NumericUpDown();
+ sizeOffset2 = new NumericUpDown();
+ sizeOffset1 = new NumericUpDown();
+ lobbyOffset2 = new NumericUpDown();
+ lobbyOffset1 = new NumericUpDown();
panel1 = new Panel();
OffsetWarn = new Label();
offsetPanel.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)lobbyOffset1).BeginInit();
- ((System.ComponentModel.ISupportInitialize)lobbyOffset2).BeginInit();
- ((System.ComponentModel.ISupportInitialize)sizeOffset1).BeginInit();
- ((System.ComponentModel.ISupportInitialize)sizeOffset2).BeginInit();
- ((System.ComponentModel.ISupportInitialize)sizeCountOffset).BeginInit();
- ((System.ComponentModel.ISupportInitialize)sizeStringOffset).BeginInit();
- ((System.ComponentModel.ISupportInitialize)shapeOffset).BeginInit();
((System.ComponentModel.ISupportInitialize)overflowOffset).BeginInit();
((System.ComponentModel.ISupportInitialize)shapeStringOffset).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)shapeOffset).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)sizeStringOffset).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)sizeCountOffset).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)sizeOffset2).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)sizeOffset1).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)lobbyOffset2).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)lobbyOffset1).BeginInit();
panel1.SuspendLayout();
SuspendLayout();
//
@@ -103,90 +103,6 @@ private void InitializeComponent()
offsetPanel.Size = new Size(253, 314);
offsetPanel.TabIndex = 0;
//
- // lobbyOffset1
- //
- lobbyOffset1.Anchor = AnchorStyles.Left | AnchorStyles.Right;
- lobbyOffset1.Increment = new decimal(new int[] { 4, 0, 0, 0 });
- lobbyOffset1.Location = new Point(129, 42);
- lobbyOffset1.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
- lobbyOffset1.Name = "lobbyOffset1";
- lobbyOffset1.Size = new Size(111, 23);
- lobbyOffset1.TabIndex = 1;
- lobbyOffset1.Tag = 0;
- lobbyOffset1.ValueChanged += OnOffsetEdit;
- //
- // lobbyOffset2
- //
- lobbyOffset2.Anchor = AnchorStyles.Left | AnchorStyles.Right;
- lobbyOffset2.Increment = new decimal(new int[] { 4, 0, 0, 0 });
- lobbyOffset2.Location = new Point(129, 71);
- lobbyOffset2.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
- lobbyOffset2.Name = "lobbyOffset2";
- lobbyOffset2.Size = new Size(111, 23);
- lobbyOffset2.TabIndex = 1;
- lobbyOffset2.Tag = 0;
- lobbyOffset2.ValueChanged += OnOffsetEdit;
- //
- // sizeOffset1
- //
- sizeOffset1.Anchor = AnchorStyles.Left | AnchorStyles.Right;
- sizeOffset1.Increment = new decimal(new int[] { 4, 0, 0, 0 });
- sizeOffset1.Location = new Point(129, 100);
- sizeOffset1.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
- sizeOffset1.Name = "sizeOffset1";
- sizeOffset1.Size = new Size(111, 23);
- sizeOffset1.TabIndex = 1;
- sizeOffset1.Tag = 0;
- sizeOffset1.ValueChanged += OnOffsetEdit;
- //
- // sizeOffset2
- //
- sizeOffset2.Anchor = AnchorStyles.Left | AnchorStyles.Right;
- sizeOffset2.Increment = new decimal(new int[] { 4, 0, 0, 0 });
- sizeOffset2.Location = new Point(129, 129);
- sizeOffset2.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
- sizeOffset2.Name = "sizeOffset2";
- sizeOffset2.Size = new Size(111, 23);
- sizeOffset2.TabIndex = 1;
- sizeOffset2.Tag = 0;
- sizeOffset2.ValueChanged += OnOffsetEdit;
- //
- // sizeCountOffset
- //
- sizeCountOffset.Anchor = AnchorStyles.Left | AnchorStyles.Right;
- sizeCountOffset.Increment = new decimal(new int[] { 4, 0, 0, 0 });
- sizeCountOffset.Location = new Point(129, 158);
- sizeCountOffset.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
- sizeCountOffset.Name = "sizeCountOffset";
- sizeCountOffset.Size = new Size(111, 23);
- sizeCountOffset.TabIndex = 1;
- sizeCountOffset.Tag = 0;
- sizeCountOffset.ValueChanged += OnOffsetEdit;
- //
- // sizeStringOffset
- //
- sizeStringOffset.Anchor = AnchorStyles.Left | AnchorStyles.Right;
- sizeStringOffset.Increment = new decimal(new int[] { 4, 0, 0, 0 });
- sizeStringOffset.Location = new Point(129, 187);
- sizeStringOffset.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
- sizeStringOffset.Name = "sizeStringOffset";
- sizeStringOffset.Size = new Size(111, 23);
- sizeStringOffset.TabIndex = 1;
- sizeStringOffset.Tag = 0;
- sizeStringOffset.ValueChanged += OnOffsetEdit;
- //
- // shapeOffset
- //
- shapeOffset.Anchor = AnchorStyles.Left | AnchorStyles.Right;
- shapeOffset.Increment = new decimal(new int[] { 4, 0, 0, 0 });
- shapeOffset.Location = new Point(129, 216);
- shapeOffset.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
- shapeOffset.Name = "shapeOffset";
- shapeOffset.Size = new Size(111, 23);
- shapeOffset.TabIndex = 1;
- shapeOffset.Tag = 0;
- shapeOffset.ValueChanged += OnOffsetEdit;
- //
// overflowOffsetDesc
//
overflowOffsetDesc.Anchor = AnchorStyles.Left | AnchorStyles.Right;
@@ -301,6 +217,90 @@ private void InitializeComponent()
shapeStringOffset.Tag = 0;
shapeStringOffset.ValueChanged += OnOffsetEdit;
//
+ // shapeOffset
+ //
+ shapeOffset.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+ shapeOffset.Increment = new decimal(new int[] { 4, 0, 0, 0 });
+ shapeOffset.Location = new Point(129, 216);
+ shapeOffset.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
+ shapeOffset.Name = "shapeOffset";
+ shapeOffset.Size = new Size(111, 23);
+ shapeOffset.TabIndex = 1;
+ shapeOffset.Tag = 0;
+ shapeOffset.ValueChanged += OnOffsetEdit;
+ //
+ // sizeStringOffset
+ //
+ sizeStringOffset.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+ sizeStringOffset.Increment = new decimal(new int[] { 4, 0, 0, 0 });
+ sizeStringOffset.Location = new Point(129, 187);
+ sizeStringOffset.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
+ sizeStringOffset.Name = "sizeStringOffset";
+ sizeStringOffset.Size = new Size(111, 23);
+ sizeStringOffset.TabIndex = 1;
+ sizeStringOffset.Tag = 0;
+ sizeStringOffset.ValueChanged += OnOffsetEdit;
+ //
+ // sizeCountOffset
+ //
+ sizeCountOffset.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+ sizeCountOffset.Increment = new decimal(new int[] { 4, 0, 0, 0 });
+ sizeCountOffset.Location = new Point(129, 158);
+ sizeCountOffset.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
+ sizeCountOffset.Name = "sizeCountOffset";
+ sizeCountOffset.Size = new Size(111, 23);
+ sizeCountOffset.TabIndex = 1;
+ sizeCountOffset.Tag = 0;
+ sizeCountOffset.ValueChanged += OnOffsetEdit;
+ //
+ // sizeOffset2
+ //
+ sizeOffset2.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+ sizeOffset2.Increment = new decimal(new int[] { 4, 0, 0, 0 });
+ sizeOffset2.Location = new Point(129, 129);
+ sizeOffset2.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
+ sizeOffset2.Name = "sizeOffset2";
+ sizeOffset2.Size = new Size(111, 23);
+ sizeOffset2.TabIndex = 1;
+ sizeOffset2.Tag = 0;
+ sizeOffset2.ValueChanged += OnOffsetEdit;
+ //
+ // sizeOffset1
+ //
+ sizeOffset1.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+ sizeOffset1.Increment = new decimal(new int[] { 4, 0, 0, 0 });
+ sizeOffset1.Location = new Point(129, 100);
+ sizeOffset1.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
+ sizeOffset1.Name = "sizeOffset1";
+ sizeOffset1.Size = new Size(111, 23);
+ sizeOffset1.TabIndex = 1;
+ sizeOffset1.Tag = 0;
+ sizeOffset1.ValueChanged += OnOffsetEdit;
+ //
+ // lobbyOffset2
+ //
+ lobbyOffset2.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+ lobbyOffset2.Increment = new decimal(new int[] { 4, 0, 0, 0 });
+ lobbyOffset2.Location = new Point(129, 71);
+ lobbyOffset2.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
+ lobbyOffset2.Name = "lobbyOffset2";
+ lobbyOffset2.Size = new Size(111, 23);
+ lobbyOffset2.TabIndex = 1;
+ lobbyOffset2.Tag = 0;
+ lobbyOffset2.ValueChanged += OnOffsetEdit;
+ //
+ // lobbyOffset1
+ //
+ lobbyOffset1.Anchor = AnchorStyles.Left | AnchorStyles.Right;
+ lobbyOffset1.Increment = new decimal(new int[] { 4, 0, 0, 0 });
+ lobbyOffset1.Location = new Point(129, 42);
+ lobbyOffset1.Maximum = new decimal(new int[] { int.MaxValue, 0, 0, 0 });
+ lobbyOffset1.Name = "lobbyOffset1";
+ lobbyOffset1.Size = new Size(111, 23);
+ lobbyOffset1.TabIndex = 1;
+ lobbyOffset1.Tag = 0;
+ lobbyOffset1.ValueChanged += OnOffsetEdit;
+ //
// panel1
//
panel1.Controls.Add(OffsetWarn);
@@ -331,15 +331,15 @@ private void InitializeComponent()
Text = "Offset Setter";
offsetPanel.ResumeLayout(false);
offsetPanel.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)lobbyOffset1).EndInit();
- ((System.ComponentModel.ISupportInitialize)lobbyOffset2).EndInit();
- ((System.ComponentModel.ISupportInitialize)sizeOffset1).EndInit();
- ((System.ComponentModel.ISupportInitialize)sizeOffset2).EndInit();
- ((System.ComponentModel.ISupportInitialize)sizeCountOffset).EndInit();
- ((System.ComponentModel.ISupportInitialize)sizeStringOffset).EndInit();
- ((System.ComponentModel.ISupportInitialize)shapeOffset).EndInit();
((System.ComponentModel.ISupportInitialize)overflowOffset).EndInit();
((System.ComponentModel.ISupportInitialize)shapeStringOffset).EndInit();
+ ((System.ComponentModel.ISupportInitialize)shapeOffset).EndInit();
+ ((System.ComponentModel.ISupportInitialize)sizeStringOffset).EndInit();
+ ((System.ComponentModel.ISupportInitialize)sizeCountOffset).EndInit();
+ ((System.ComponentModel.ISupportInitialize)sizeOffset2).EndInit();
+ ((System.ComponentModel.ISupportInitialize)sizeOffset1).EndInit();
+ ((System.ComponentModel.ISupportInitialize)lobbyOffset2).EndInit();
+ ((System.ComponentModel.ISupportInitialize)lobbyOffset1).EndInit();
panel1.ResumeLayout(false);
ResumeLayout(false);
}
diff --git a/Stellaris-Lobby-Manager/OffsetSetter.resx b/Stellaris-Lobby-Manager/OffsetSetter.resx
index a395bff..af32865 100644
--- a/Stellaris-Lobby-Manager/OffsetSetter.resx
+++ b/Stellaris-Lobby-Manager/OffsetSetter.resx
@@ -18,7 +18,7 @@
System.Resources.ResXResourceReader, System.Windows.Forms, ...
System.Resources.ResXResourceWriter, System.Windows.Forms, ...
this is my long stringthis is a comment
- Blue
+ Blue
[base64 mime encoded serialized .NET Framework object]
diff --git a/Stellaris-Lobby-Manager/Properties/Settings.Designer.cs b/Stellaris-Lobby-Manager/Properties/Settings.Designer.cs
index aadeedc..16bb26d 100644
--- a/Stellaris-Lobby-Manager/Properties/Settings.Designer.cs
+++ b/Stellaris-Lobby-Manager/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace Stellaris_Lobby_Manager.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.6.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.7.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -61,7 +61,7 @@ public bool overWriteWarning {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("41362280")]
+ [global::System.Configuration.DefaultSettingValueAttribute("41335544")]
public int lobbyOffset1 {
get {
return ((int)(this["lobbyOffset1"]));
@@ -73,7 +73,7 @@ public int lobbyOffset1 {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("2248")]
+ [global::System.Configuration.DefaultSettingValueAttribute("2304")]
public int lobbyOffset2 {
get {
return ((int)(this["lobbyOffset2"]));
@@ -97,7 +97,7 @@ public bool fullPrecision {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("42535000")]
+ [global::System.Configuration.DefaultSettingValueAttribute("42508600")]
public int sizeOffset1 {
get {
return ((int)(this["sizeOffset1"]));
@@ -169,7 +169,7 @@ public int shapeStringOffset {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("1515366")]
+ [global::System.Configuration.DefaultSettingValueAttribute("1514601")]
public int overflowOffset {
get {
return ((int)(this["overflowOffset"]));
@@ -190,5 +190,17 @@ public bool canOverflow {
this["canOverflow"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("194")]
+ public int overflowJump {
+ get {
+ return ((int)(this["overflowJump"]));
+ }
+ set {
+ this["overflowJump"] = value;
+ }
+ }
}
}
diff --git a/Stellaris-Lobby-Manager/Properties/Settings.settings b/Stellaris-Lobby-Manager/Properties/Settings.settings
index 37424c0..6a55646 100644
--- a/Stellaris-Lobby-Manager/Properties/Settings.settings
+++ b/Stellaris-Lobby-Manager/Properties/Settings.settings
@@ -12,16 +12,16 @@
False
- 41362280
+ 41335544
- 2248
+ 2304
True
- 42535000
+ 42508600
24
@@ -39,10 +39,13 @@
16
- 1515366
+ 1514601
True
+
+ 194
+
\ No newline at end of file
diff --git a/Stellaris-Lobby-Manager/offsets.json b/Stellaris-Lobby-Manager/offsets.json
index 508ffd8..4f43dd9 100644
--- a/Stellaris-Lobby-Manager/offsets.json
+++ b/Stellaris-Lobby-Manager/offsets.json
@@ -1,17 +1,23 @@
{
"1692794684": {
"lobbyOffset1": 41331224,
+ "lobbyOffset2": 2248,
"sizeOffset1": 42504280,
- "overflowOffset": 1518374
+ "overflowOffset": 1518374,
+ "overflowJump": 197
},
"1686556435": {
"lobbyOffset1": 41362280,
+ "lobbyOffset2": 2248,
"sizeOffset1": 42535000,
- "overflowOffset": 1515366
+ "overflowOffset": 1515366,
+ "overflowJump": 197
},
- "1685184866": {
- "lobbyOffset1": 41356808,
- "sizeOffset1": 42529496,
- "overflowOffset": 1513206
+ "1693905983": {
+ "lobbyOffset1": 41335544,
+ "lobbyOffset2": 2304,
+ "sizeOffset1": 42508600,
+ "overflowOffset": 1514601,
+ "overflowJump": 194
}
}
\ No newline at end of file