From 385c0a3c38bd927368ac5a0ed2950e6bd73baf1f Mon Sep 17 00:00:00 2001 From: jupster Date: Wed, 15 May 2024 16:31:40 +1000 Subject: [PATCH 01/14] update to AdvanceOptions Still to add output --- FASTER/Models/ServerCfg.cs | 98 +++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 48 deletions(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index d96b2df..b8d5f2f 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -47,14 +47,10 @@ public class ServerCfg : INotifyPropertyChanged private bool autoSelectMission = true; private bool randomMissionOrder = true; private int briefingTimeOut = 60; // <- - private int roleTimeOut = 90; // <- These are BI base figues - private int votingTimeOut = 60; // <- + private int roleTimeOut = 90; // <- These are BI base figues + private int votingTimeOut = 60; // <- private int debriefingTimeOut = 45; // <- - private bool LogObjectNotFound = true; // logging enabled - private bool SkipDescriptionParsing = false; // parse description.ext - private bool ignoreMissionLoadErrors = false; // do not ingore errors private int armaUnitsTimeout = 30; // Defines how long the player will be stuck connecting and wait for armaUnits data. Player will be notified if timeout elapsed and no units data was received - private int queueSizeLogG = 1000000; // if a specific players message queue is larger than 1MB and '#monitor' is running, dump his messages to a logfile for analysis private string forcedDifficulty = "Custom"; // By default forcedDifficulty is only applying Custom @@ -97,7 +93,53 @@ public class ServerCfg : INotifyPropertyChanged private string serverCfgContent; + public class AdvancedOptions + { + private bool LogObjectNotFound = true; // logging enabled + private bool SkipDescriptionParsing = false; // parse description.ext + private bool ignoreMissionLoadErrors = false; // do not ingore errors + private int queueSizeLogG = 1000000; // if a specific players message queue is larger than 1MB and '#monitor' is running, dump his messages to a logfile for analysis + public bool LogObjectNotFound + { + get => LogObjectNotFound; + set + { + LogObjectNotFound = value; + RaisePropertyChanged("logObjectNotFound"); + } + } + + public bool SkipDescriptionParsing + { + get => SkipDescriptionParsing; + set + { + SkipDescriptionParsing = value; + RaisePropertyChanged("skipDescriptionParsing"); + } + } + + public bool IgnoreMissionLoadErrors + { + get => ignoreMissionLoadErrors; + set + { + ignoreMissionLoadErrors = value; + RaisePropertyChanged("IgnoreMissionLoadErrors"); + } + } + + public int QueueSizeLogG + { + get => queueSizeLogG; + set + { + queueSizeLogG = value; + RaisePropertyChanged("QueueSizeLogG"); + } + } + } #region Server Options public string PasswordAdmin @@ -394,36 +436,6 @@ public int DebriefingTimeOut } } - public bool logObjectNotFound - { - get => LogObjectNotFound; - set - { - LogObjectNotFound = value; - RaisePropertyChanged("logObjectNotFound"); - } - } - - public bool skipDescriptionParsing - { - get => SkipDescriptionParsing; - set - { - SkipDescriptionParsing = value; - RaisePropertyChanged("skipDescriptionParsing"); - } - } - - public bool IgnoreMissionLoadErrors - { - get => ignoreMissionLoadErrors; - set - { - ignoreMissionLoadErrors = value; - RaisePropertyChanged("IgnoreMissionLoadErrors"); - } - } - public int ArmaUnitsTimeout { get => armaUnitsTimeout; @@ -434,16 +446,6 @@ public int ArmaUnitsTimeout } } - public int QueueSizeLogG - { - get => queueSizeLogG; - set - { - queueSizeLogG = value; - RaisePropertyChanged("QueueSizeLogG"); - } - } - public string ForcedDifficulty { get => forcedDifficulty; @@ -893,8 +895,8 @@ public string ProcessFile() + $"timeStampFormat = \"{timeStampFormat}\";\t\t// Set the timestamp format used on each report line in server-side RPT file. Possible values are \"none\" (default),\"short\",\"full\".\r\n" + $"BattlEye = {battlEye};\t\t\t\t// Server to use BattlEye system\r\n" + $"queueSizeLogG = {queueSizeLogG};\t\t\t// If a specific players message queue is larger than 1MB and #monitor is running, dump his messages to a logfile for analysis \r\n" - + $"LogObjectNotFound = {logObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" - + $"SkipDescriptionParsing = {skipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" + + $"LogObjectNotFound = {LogObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" + + $"SkipDescriptionParsing = {SkipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" + $"ignoreMissionLoadErrors = {ignoreMissionLoadErrors};\t\t// When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection.\r\n" + $"forcedDifficulty = {forcedDifficulty};\t\t\t// Forced difficulty (Recruit, Regular, Veteran, Custom)\r\n" + "\r\n" From 99b4ef8a6e462cd65633873985faca50e621b59a Mon Sep 17 00:00:00 2001 From: jupster Date: Wed, 15 May 2024 17:56:44 +1000 Subject: [PATCH 02/14] Update ServerCfg.cs --- FASTER/Models/ServerCfg.cs | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index b8d5f2f..06fb838 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -93,29 +93,29 @@ public class ServerCfg : INotifyPropertyChanged private string serverCfgContent; - public class AdvancedOptions + public class AdvancedOptions : INotifyPropertyChanged { - private bool LogObjectNotFound = true; // logging enabled - private bool SkipDescriptionParsing = false; // parse description.ext + private bool logObjectNotFound = true; // logging enabled + private bool skipDescriptionParsing = false; // parse description.ext private bool ignoreMissionLoadErrors = false; // do not ingore errors private int queueSizeLogG = 1000000; // if a specific players message queue is larger than 1MB and '#monitor' is running, dump his messages to a logfile for analysis public bool LogObjectNotFound { - get => LogObjectNotFound; + get => logObjectNotFound; set { - LogObjectNotFound = value; + logObjectNotFound = value; RaisePropertyChanged("logObjectNotFound"); } } public bool SkipDescriptionParsing { - get => SkipDescriptionParsing; + get => skipDescriptionParsing; set { - SkipDescriptionParsing = value; + skipDescriptionParsing = value; RaisePropertyChanged("skipDescriptionParsing"); } } @@ -126,7 +126,7 @@ public bool IgnoreMissionLoadErrors set { ignoreMissionLoadErrors = value; - RaisePropertyChanged("IgnoreMissionLoadErrors"); + RaisePropertyChanged("ignoreMissionLoadErrors"); } } @@ -136,11 +136,16 @@ public int QueueSizeLogG set { queueSizeLogG = value; - RaisePropertyChanged("QueueSizeLogG"); + RaisePropertyChanged("queueSizeLogG"); } - } - } + } + public event PropertyChangedEventHandler PropertyChanged; + private void RaisePropertyChanged(string property) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); + } + } #region Server Options public string PasswordAdmin { @@ -894,10 +899,10 @@ public string ProcessFile() + $"persistent = {persistent};\t\t\t\t// If 1, missions still run on even after the last player disconnected.\r\n" + $"timeStampFormat = \"{timeStampFormat}\";\t\t// Set the timestamp format used on each report line in server-side RPT file. Possible values are \"none\" (default),\"short\",\"full\".\r\n" + $"BattlEye = {battlEye};\t\t\t\t// Server to use BattlEye system\r\n" - + $"queueSizeLogG = {queueSizeLogG};\t\t\t// If a specific players message queue is larger than 1MB and #monitor is running, dump his messages to a logfile for analysis \r\n" - + $"LogObjectNotFound = {LogObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" - + $"SkipDescriptionParsing = {SkipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" - + $"ignoreMissionLoadErrors = {ignoreMissionLoadErrors};\t\t// When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection.\r\n" + + $"queueSizeLogG = {AdvancedOptions.queueSizeLogG};\t\t\t// If a specific players message queue is larger than 1MB and #monitor is running, dump his messages to a logfile for analysis \r\n" + + $"LogObjectNotFound = {AdvancedOptions.logObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" + + $"SkipDescriptionParsing = {AdvancedOptions.skipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" + + $"ignoreMissionLoadErrors = {AdvancedOptions.ignoreMissionLoadErrors};\t\t// When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection.\r\n" + $"forcedDifficulty = {forcedDifficulty};\t\t\t// Forced difficulty (Recruit, Regular, Veteran, Custom)\r\n" + "\r\n" + "// TIMEOUTS\r\n" From c6515fca219035fa42d330877194d15c9f40db69 Mon Sep 17 00:00:00 2001 From: jupster Date: Wed, 15 May 2024 19:47:04 +1000 Subject: [PATCH 03/14] Update ServerCfg.cs --- FASTER/Models/ServerCfg.cs | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index 06fb838..d3a07bf 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -93,6 +93,7 @@ public class ServerCfg : INotifyPropertyChanged private string serverCfgContent; + [Serializable] public class AdvancedOptions : INotifyPropertyChanged { private bool logObjectNotFound = true; // logging enabled @@ -100,51 +101,51 @@ public class AdvancedOptions : INotifyPropertyChanged private bool ignoreMissionLoadErrors = false; // do not ingore errors private int queueSizeLogG = 1000000; // if a specific players message queue is larger than 1MB and '#monitor' is running, dump his messages to a logfile for analysis - public bool LogObjectNotFound + public bool LogObjectNotFound { get => logObjectNotFound; set { logObjectNotFound = value; - RaisePropertyChanged("logObjectNotFound"); + RaisePropertyChanged("LogObjectNotFound"); } } - public bool SkipDescriptionParsing + public bool SkipDescriptionParsing { get => skipDescriptionParsing; set { skipDescriptionParsing = value; - RaisePropertyChanged("skipDescriptionParsing"); + RaisePropertyChanged("SkipDescriptionParsing"); } - } + } - public bool IgnoreMissionLoadErrors + public bool IgnoreMissionLoadErrors { get => ignoreMissionLoadErrors; set { ignoreMissionLoadErrors = value; - RaisePropertyChanged("ignoreMissionLoadErrors"); + RaisePropertyChanged("IgnoreMissionLoadErrors"); } } - public int QueueSizeLogG + public int QueueSizeLogG { get => queueSizeLogG; set { queueSizeLogG = value; - RaisePropertyChanged("queueSizeLogG"); + RaisePropertyChanged("QueueSizeLogG"); } } - public event PropertyChangedEventHandler PropertyChanged; + public event PropertyChangedEventHandler PropertyChanged; - private void RaisePropertyChanged(string property) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); - } + private void RaisePropertyChanged(string property) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); + } } #region Server Options public string PasswordAdmin @@ -899,10 +900,10 @@ public string ProcessFile() + $"persistent = {persistent};\t\t\t\t// If 1, missions still run on even after the last player disconnected.\r\n" + $"timeStampFormat = \"{timeStampFormat}\";\t\t// Set the timestamp format used on each report line in server-side RPT file. Possible values are \"none\" (default),\"short\",\"full\".\r\n" + $"BattlEye = {battlEye};\t\t\t\t// Server to use BattlEye system\r\n" - + $"queueSizeLogG = {AdvancedOptions.queueSizeLogG};\t\t\t// If a specific players message queue is larger than 1MB and #monitor is running, dump his messages to a logfile for analysis \r\n" - + $"LogObjectNotFound = {AdvancedOptions.logObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" - + $"SkipDescriptionParsing = {AdvancedOptions.skipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" - + $"ignoreMissionLoadErrors = {AdvancedOptions.ignoreMissionLoadErrors};\t\t// When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection.\r\n" + + $"queueSizeLogG = {AdvancedOptions.QueueSizeLogG};\t\t\t// If a specific players message queue is larger than 1MB and #monitor is running, dump his messages to a logfile for analysis \r\n" + + $"LogObjectNotFound = {AdvancedOptions.LogObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" + + $"SkipDescriptionParsing = {AdvancedOptions.SkipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" + + $"ignoreMissionLoadErrors = {AdvancedOptions.IgnoreMissionLoadErrors};\t\t// When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection.\r\n" + $"forcedDifficulty = {forcedDifficulty};\t\t\t// Forced difficulty (Recruit, Regular, Veteran, Custom)\r\n" + "\r\n" + "// TIMEOUTS\r\n" From da661958878d07f1cde1fbeaa5538a215889de34 Mon Sep 17 00:00:00 2001 From: jupster Date: Wed, 15 May 2024 20:58:27 +1000 Subject: [PATCH 04/14] Update ServerCfg.cs queueSizeLogG is default on 0. --- FASTER/Models/ServerCfg.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index d3a07bf..37b9fa4 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -99,7 +99,7 @@ public class AdvancedOptions : INotifyPropertyChanged private bool logObjectNotFound = true; // logging enabled private bool skipDescriptionParsing = false; // parse description.ext private bool ignoreMissionLoadErrors = false; // do not ingore errors - private int queueSizeLogG = 1000000; // if a specific players message queue is larger than 1MB and '#monitor' is running, dump his messages to a logfile for analysis + private int queueSizeLogG = 0; // if a specific players message queue is larger than and '#monitor' is running, dump his messages to a logfile for analysis public bool LogObjectNotFound { @@ -119,7 +119,7 @@ public bool SkipDescriptionParsing skipDescriptionParsing = value; RaisePropertyChanged("SkipDescriptionParsing"); } - } + } public bool IgnoreMissionLoadErrors { @@ -146,7 +146,7 @@ private void RaisePropertyChanged(string property) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); } - } + } #region Server Options public string PasswordAdmin { @@ -900,7 +900,7 @@ public string ProcessFile() + $"persistent = {persistent};\t\t\t\t// If 1, missions still run on even after the last player disconnected.\r\n" + $"timeStampFormat = \"{timeStampFormat}\";\t\t// Set the timestamp format used on each report line in server-side RPT file. Possible values are \"none\" (default),\"short\",\"full\".\r\n" + $"BattlEye = {battlEye};\t\t\t\t// Server to use BattlEye system\r\n" - + $"queueSizeLogG = {AdvancedOptions.QueueSizeLogG};\t\t\t// If a specific players message queue is larger than 1MB and #monitor is running, dump his messages to a logfile for analysis \r\n" + + $"queueSizeLogG = {AdvancedOptions.QueueSizeLogG};\t\t\t// If a specific players message queue is larger than Value number and #monitor is running, dump his messages to a logfile for analysis \r\n" + $"LogObjectNotFound = {AdvancedOptions.LogObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" + $"SkipDescriptionParsing = {AdvancedOptions.SkipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" + $"ignoreMissionLoadErrors = {AdvancedOptions.IgnoreMissionLoadErrors};\t\t// When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection.\r\n" From a56feba32e4b870fa339253814578aa21c02da2a Mon Sep 17 00:00:00 2001 From: jupster Date: Thu, 16 May 2024 19:40:14 +1000 Subject: [PATCH 05/14] Update ServerCfg.cs --- FASTER/Models/ServerCfg.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index 37b9fa4..6fc6987 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -93,9 +93,11 @@ public class ServerCfg : INotifyPropertyChanged private string serverCfgContent; + private object AdvancedOptions; + [Serializable] public class AdvancedOptions : INotifyPropertyChanged - { + { private bool logObjectNotFound = true; // logging enabled private bool skipDescriptionParsing = false; // parse description.ext private bool ignoreMissionLoadErrors = false; // do not ingore errors @@ -147,6 +149,7 @@ private void RaisePropertyChanged(string property) PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); } } + #region Server Options public string PasswordAdmin { From 7f99b46ff6a2504a972cf0db232ffff5dd6abd5a Mon Sep 17 00:00:00 2001 From: jupster Date: Thu, 16 May 2024 21:03:15 +1000 Subject: [PATCH 06/14] Advanced Option update Issue on line 95 with duplication --- FASTER/Models/ServerCfg.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index 6fc6987..c3f19df 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -92,7 +92,6 @@ public class ServerCfg : INotifyPropertyChanged private string commandLineParams; private string serverCfgContent; - private object AdvancedOptions; [Serializable] @@ -142,12 +141,12 @@ public int QueueSizeLogG RaisePropertyChanged("QueueSizeLogG"); } } - public event PropertyChangedEventHandler PropertyChanged; - - private void RaisePropertyChanged(string property) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); - } + public event PropertyChangedEventHandler PropertyChanged; + + private void RaisePropertyChanged(string property) + { + PropertyChanged(this, new PropertyChangedEventArgs(property)); + } } #region Server Options From 9ef0c57b6a9f21019b81555ef949ee626f083f0a Mon Sep 17 00:00:00 2001 From: jupster Date: Fri, 17 May 2024 23:47:37 +1000 Subject: [PATCH 07/14] Advanced Options nearly "might" work Output does not. --- FASTER/Models/ServerCfg.cs | 16 ++++++++++------ FASTER/Views/Profile.xaml | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index c3f19df..24a7fc2 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -92,7 +92,6 @@ public class ServerCfg : INotifyPropertyChanged private string commandLineParams; private string serverCfgContent; - private object AdvancedOptions; [Serializable] public class AdvancedOptions : INotifyPropertyChanged @@ -142,7 +141,7 @@ public int QueueSizeLogG } } public event PropertyChangedEventHandler PropertyChanged; - + private void RaisePropertyChanged(string property) { PropertyChanged(this, new PropertyChangedEventArgs(property)); @@ -822,6 +821,11 @@ public string ServerCfgContent } } + public object QueueSizeLogG { get; set; } + public object IgnoreMissionLoadErrors { get; set; } + public object LogObjectNotFound { get; set; } + public object SkipDescriptionParsing { get; set; } + public ServerCfg() { if(string.IsNullOrWhiteSpace(serverCfgContent)) @@ -902,10 +906,10 @@ public string ProcessFile() + $"persistent = {persistent};\t\t\t\t// If 1, missions still run on even after the last player disconnected.\r\n" + $"timeStampFormat = \"{timeStampFormat}\";\t\t// Set the timestamp format used on each report line in server-side RPT file. Possible values are \"none\" (default),\"short\",\"full\".\r\n" + $"BattlEye = {battlEye};\t\t\t\t// Server to use BattlEye system\r\n" - + $"queueSizeLogG = {AdvancedOptions.QueueSizeLogG};\t\t\t// If a specific players message queue is larger than Value number and #monitor is running, dump his messages to a logfile for analysis \r\n" - + $"LogObjectNotFound = {AdvancedOptions.LogObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" - + $"SkipDescriptionParsing = {AdvancedOptions.SkipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" - + $"ignoreMissionLoadErrors = {AdvancedOptions.IgnoreMissionLoadErrors};\t\t// When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection.\r\n" + + $"queueSizeLogG = {QueueSizeLogG};\t\t\t// If a specific players message queue is larger than Value number and #monitor is running, dump his messages to a logfile for analysis \r\n" + + $"LogObjectNotFound = {LogObjectNotFound};\t\t// When false to skip logging 'Server: Object not found messages'.\r\n" + + $"SkipDescriptionParsing = {SkipDescriptionParsing};\t\t// When true to skip parsing of description.ext/mission.sqm. Will show pbo filename instead of configured missionName. OverviewText and such won't work, but loading the mission list is a lot faster when there are many missions \r\n" + + $"ignoreMissionLoadErrors = {IgnoreMissionLoadErrors};\t\t// When set to true, the mission will load no matter the amount of loading errors. If set to false, the server will abort mission's loading and return to mission selection.\r\n" + $"forcedDifficulty = {forcedDifficulty};\t\t\t// Forced difficulty (Recruit, Regular, Veteran, Custom)\r\n" + "\r\n" + "// TIMEOUTS\r\n" diff --git a/FASTER/Views/Profile.xaml b/FASTER/Views/Profile.xaml index 365a855..cb0e156 100644 --- a/FASTER/Views/Profile.xaml +++ b/FASTER/Views/Profile.xaml @@ -633,8 +633,8 @@ - - + + From 2699755344fb4cf2a70f6593a091038be422128a Mon Sep 17 00:00:00 2001 From: jupster Date: Thu, 26 Sep 2024 10:22:31 +1000 Subject: [PATCH 08/14] Version Bump --- FASTER/FASTER.csproj | 2 +- FASTER_Version.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FASTER/FASTER.csproj b/FASTER/FASTER.csproj index 8e9ee5c..f2e4637 100644 --- a/FASTER/FASTER.csproj +++ b/FASTER/FASTER.csproj @@ -9,7 +9,7 @@ true false true - 1.9.5.2 + 1.9.6.1 Keelah Fox FoxliCorp. Fox's Arma Server Tool Extended Rewrite diff --git a/FASTER_Version.xml b/FASTER_Version.xml index 3569db0..b1f15c5 100644 --- a/FASTER_Version.xml +++ b/FASTER_Version.xml @@ -1,6 +1,6 @@  - 1.9.5.2 + 1.9.6.1 https://github.com/Foxlider/FASTER/releases/latest/download/Release_x64.zip https://github.com/Foxlider/FASTER/releases true From eb55b44494900efb33de0bef000a136af8197bfe Mon Sep 17 00:00:00 2001 From: jupster Date: Thu, 26 Sep 2024 14:24:02 +1000 Subject: [PATCH 09/14] Updates for AdvancedOptions Close to done just don't have time to finish --- FASTER/Models/ServerCfg.cs | 170 ++++++++++++++++++--------------- FASTER/Models/ServerProfile.cs | 29 ++++-- 2 files changed, 117 insertions(+), 82 deletions(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index 24a7fc2..8e56545 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -21,12 +21,12 @@ public class ServerCfg : INotifyPropertyChanged private string passwordAdmin; private string password; private string hostname; - private int maxPlayers = 32; - private List motd = new(); + private int maxPlayers = 32; + private List motd = new(); private int motdInterval; - private List admins = new(); - private List headlessClients = new(); - private List localClient = new(); + private List admins = new(); + private List headlessClients = new(); + private List localClient = new(); private bool headlessClientEnabled; private bool votingEnabled; private bool netlogEnabled; @@ -53,7 +53,6 @@ public class ServerCfg : INotifyPropertyChanged private int armaUnitsTimeout = 30; // Defines how long the player will be stuck connecting and wait for armaUnits data. Player will be notified if timeout elapsed and no units data was received private string forcedDifficulty = "Custom"; // By default forcedDifficulty is only applying Custom - //Arma server only private short verifySignatures = 0; // 0 = Disabled (FASTER Default); 1 = Deprecated Activated ; 2 = Activated (Arma Default) private bool drawingInMap = true; @@ -74,14 +73,14 @@ public class ServerCfg : INotifyPropertyChanged private string doubleIdDetected; private string onUserConnected; private string onUserDisconnected; - private string onHackedData = "kick (_this select 0)"; + private string onHackedData = "kick (_this select 0)"; private string onDifferentData; - private string onUnsignedData = "kick (_this select 0)"; + private string onUnsignedData = "kick (_this select 0)"; private string onUserKicked; private bool missionSelectorChecked; private string missionContentOverride; - private List _missions = new(); + private List _missions = new(); private bool autoInit; private string difficulty = "Custom"; @@ -93,61 +92,6 @@ public class ServerCfg : INotifyPropertyChanged private string serverCfgContent; - [Serializable] - public class AdvancedOptions : INotifyPropertyChanged - { - private bool logObjectNotFound = true; // logging enabled - private bool skipDescriptionParsing = false; // parse description.ext - private bool ignoreMissionLoadErrors = false; // do not ingore errors - private int queueSizeLogG = 0; // if a specific players message queue is larger than and '#monitor' is running, dump his messages to a logfile for analysis - - public bool LogObjectNotFound - { - get => logObjectNotFound; - set - { - logObjectNotFound = value; - RaisePropertyChanged("LogObjectNotFound"); - } - } - - public bool SkipDescriptionParsing - { - get => skipDescriptionParsing; - set - { - skipDescriptionParsing = value; - RaisePropertyChanged("SkipDescriptionParsing"); - } - } - - public bool IgnoreMissionLoadErrors - { - get => ignoreMissionLoadErrors; - set - { - ignoreMissionLoadErrors = value; - RaisePropertyChanged("IgnoreMissionLoadErrors"); - } - } - - public int QueueSizeLogG - { - get => queueSizeLogG; - set - { - queueSizeLogG = value; - RaisePropertyChanged("QueueSizeLogG"); - } - } - public event PropertyChangedEventHandler PropertyChanged; - - private void RaisePropertyChanged(string property) - { - PropertyChanged(this, new PropertyChangedEventArgs(property)); - } - } - #region Server Options public string PasswordAdmin { @@ -820,18 +764,94 @@ public string ServerCfgContent RaisePropertyChanged("ServerCfgContent"); } } - - public object QueueSizeLogG { get; set; } - public object IgnoreMissionLoadErrors { get; set; } - public object LogObjectNotFound { get; set; } - public object SkipDescriptionParsing { get; set; } - + public ServerCfg() { if(string.IsNullOrWhiteSpace(serverCfgContent)) { ServerCfgContent = ProcessFile(); } } + public object LogObjectNotFound { get; private set; } + public object SkipDescriptionParsing { get; private set; } + public object IgnoreMissionLoadErrors { get; private set; } + public object QueueSizeLogG { get; private set; } + + [Serializable] + public class AdvancedOptions : INotifyPropertyChanged + { + private bool logObjectNotFound = true; // logging enabled + private bool skipDescriptionParsing = false; // Parse description.ext + private bool ignoreMissionLoadErrors = false; // Do not ingore errors + private int queueSizeLogG = 0; // If a specific players message queue is larger than and '#monitor' is running, dump his messages to a logfile for analysis + + public bool LogObjectNotFound + { + get => logObjectNotFound; + set + { + logObjectNotFound = value; + RaisePropertyChanged("LogObjectNotFound"); + } + } + + public bool SkipDescriptionParsing + { + get => skipDescriptionParsing; + set + { + skipDescriptionParsing = value; + RaisePropertyChanged("SkipDescriptionParsing"); + } + } + + public bool IgnoreMissionLoadErrors + { + get => ignoreMissionLoadErrors; + set + { + ignoreMissionLoadErrors = value; + RaisePropertyChanged("IgnoreMissionLoadErrors"); + } + } + + public int QueueSizeLogG + { + get => queueSizeLogG; + set + { + queueSizeLogG = value; + RaisePropertyChanged("QueueSizeLogG"); + } + } + + private string advancedOptionsContent; + + public string AdvancedOptionsContent + { + get => AdvancedOptionsContent; + set + { + AdvancedOptionsContent = value; + RaisePropertyChanged("AdvancedOptionsContent"); + } + } + + public Advancedoptions() + { + if(string.IsNullOrWhiteSpace(AdvancedOptionsContent)) + { AdvancedOptionsContent = ProcessFile(); } + } + + public event PropertyChangedEventHandler PropertyChanged; + + private void RaisePropertyChanged(string property) + { + if (PropertyChanged == null) return; + PropertyChanged(this, new PropertyChangedEventArgs(property)); + if(property != "AdvancedOptionsContent") AdvancedOptionsContent = ProcessFile(); + } + } + private void Item_PropertyChanged(object sender, PropertyChangedEventArgs e) { RaisePropertyChanged("MissionChecked"); @@ -902,7 +922,7 @@ public string ProcessFile() + $"disableVoN = {disableVoN};\t\t\t\t// If set to 1, Voice over Net will not be available\r\n" + $"vonCodec = {vonCodec};\t\t\t\t// If set to 1 then it uses IETF standard OPUS codec, if to 0 then it uses SPEEX codec (since Arma 3 update 1.58+) \r\n" + $"skipLobby = {(skipLobby ? "1" : "0")};\t\t\t\t// Overridden by mission parameters\r\n" - + $"vonCodecQuality = {vonCodecQuality};\t\t\t// since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz(48kHz) is 21-30 \r\n" + + $"vonCodecQuality = {vonCodecQuality};\t\t\t// Since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz(48kHz) is 21-30 \r\n" + $"persistent = {persistent};\t\t\t\t// If 1, missions still run on even after the last player disconnected.\r\n" + $"timeStampFormat = \"{timeStampFormat}\";\t\t// Set the timestamp format used on each report line in server-side RPT file. Possible values are \"none\" (default),\"short\",\"full\".\r\n" + $"BattlEye = {battlEye};\t\t\t\t// Server to use BattlEye system\r\n" @@ -931,9 +951,9 @@ public string ProcessFile() + $"doubleIdDetected = \"{doubleIdDetected}\";\t\t\t//\r\n" + "\r\n" + "// SIGNATURE VERIFICATION\r\n" - + $"onUnsignedData = \"{onUnsignedData}\";\t// unsigned data detected\r\n" - + $"onHackedData = \"{onHackedData}\";\t// tampering of the signature detected\r\n" - + $"onDifferentData = \"{onDifferentData}\";\t\t\t// data with a valid signature, but different version than the one present on server detected\r\n" + + $"onUnsignedData = \"{onUnsignedData}\";\t// Unsigned data detected\r\n" + + $"onHackedData = \"{onHackedData}\";\t// Tampering of the signature detected\r\n" + + $"onDifferentData = \"{onDifferentData}\";\t\t\t// Data with a valid signature, but different version than the one present on server detected\r\n" + "\r\n" + "\r\n" + "// MISSIONS CYCLE (see below)\r\n" @@ -1005,4 +1025,4 @@ private void RaisePropertyChanged(string property) PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); } } -} +} \ No newline at end of file diff --git a/FASTER/Models/ServerProfile.cs b/FASTER/Models/ServerProfile.cs index b74a42c..d61f9ad 100644 --- a/FASTER/Models/ServerProfile.cs +++ b/FASTER/Models/ServerProfile.cs @@ -22,13 +22,14 @@ public ServerProfileCollection() internal static void AddServerProfile(string profileName) { - var currentProfiles = Properties.Settings.Default.Profiles; + var currentProfiles = Properties.Settings.Default.Profiles; var p = new ServerProfile(profileName); - p.ServerCfg.ServerCfgContent = p.ServerCfg.ProcessFile(); - p.BasicCfg.BasicContent = p.BasicCfg.ProcessFile(); - p.ArmaProfile.ArmaProfileContent = p.ArmaProfile.ProcessFile(); + p.ServerCfg.ServerCfgContent = p.ServerCfg.ProcessFile(); + p.ServerCfg.ServerCfgContent = p.AdvancedOptions.ProcessFile(); + p.BasicCfg.BasicContent = p.BasicCfg.ProcessFile(); + p.ArmaProfile.ArmaProfileContent = p.ArmaProfile.ProcessFile(); currentProfiles.Add(p); - Properties.Settings.Default.Profiles = currentProfiles; + Properties.Settings.Default.Profiles = currentProfiles; Properties.Settings.Default.Save(); MainWindow.Instance.LoadServerProfiles(); } @@ -71,6 +72,7 @@ public class ServerProfile : INotifyPropertyChanged private bool _profileModsFilterIsRegex = false; private bool _profileModsFilterIsInvalid = false; private ServerCfg _serverCfg; + private ServerCfg _advancedOptions; private Arma3Profile _armaProfile; private BasicCfg _basicCfg; @@ -367,8 +369,8 @@ public bool ProfileModsFilterIsInvalid } } - public ServerCfg ServerCfg - { + public ServerCfg ServerCfg + { get => _serverCfg; set { @@ -379,6 +381,19 @@ public ServerCfg ServerCfg RaisePropertyChanged("ServerCfg"); } } + + public ServerCfg AdvancedOptions + { + get => _advancedOptions; + set + { + if(_advancedOptions != null) + _advancedOptions.PropertyChanged -= Class_PropertyChanged; + _advancedOptions = value; + _advancedOptions.PropertyChanged += Class_PropertyChanged; + RaisePropertyChanged("AdvancedOptions"); + } + } public Arma3Profile ArmaProfile { From 0261dded168a6af124a0f79713c3358474f3c3cb Mon Sep 17 00:00:00 2001 From: jupster Date: Sun, 13 Oct 2024 22:18:49 +1000 Subject: [PATCH 10/14] Clean code --- FASTER/FASTER.csproj | 2 -- FASTER/Models/ServerCfg.cs | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/FASTER/FASTER.csproj b/FASTER/FASTER.csproj index 49ae76f..70a663f 100644 --- a/FASTER/FASTER.csproj +++ b/FASTER/FASTER.csproj @@ -1,5 +1,4 @@ - WinExe net8.0-windows @@ -58,7 +57,6 @@ Settings.Designer.cs - diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index ac5e79c..dbde091 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -764,7 +764,7 @@ public string ServerCfgContent RaisePropertyChanged("ServerCfgContent"); } } - + public ServerCfg() { if(string.IsNullOrWhiteSpace(serverCfgContent)) @@ -836,7 +836,7 @@ public string AdvancedOptionsContent } } - public Advancedoptions() + public AdvancedOptions() { if(string.IsNullOrWhiteSpace(AdvancedOptionsContent)) { AdvancedOptionsContent = ProcessFile(); } From ed25c1914634b18a578c0dd9d89d165810e396f7 Mon Sep 17 00:00:00 2001 From: jupster Date: Sat, 5 Jul 2025 13:37:22 +1000 Subject: [PATCH 11/14] Refactor model classes and fix property assignments Aligned variable declarations for consistency in Arma3Profile and BasicCfg. Removed unused properties and redundant event handling from ServerCfg. Ensured AdvancedOptions and its content are properly initialized in ServerProfile constructors. --- FASTER/Models/Arma3Profile.cs | 2 +- FASTER/Models/BasicCfg.cs | 16 ++++++++-------- FASTER/Models/ServerCfg.cs | 18 ++---------------- FASTER/Models/ServerProfile.cs | 5 ++++- 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/FASTER/Models/Arma3Profile.cs b/FASTER/Models/Arma3Profile.cs index 66c0c67..2ffcce7 100644 --- a/FASTER/Models/Arma3Profile.cs +++ b/FASTER/Models/Arma3Profile.cs @@ -41,7 +41,7 @@ public class Arma3Profile : INotifyPropertyChanged private ushort mapContentMines = 1; private ushort autoReport = 0; private ushort multipleSaves = 0; - private int tacticalPing = 1; + private int tacticalPing = 1; private ushort aiLevelPreset = 3; private double skillAi = 0.5; diff --git a/FASTER/Models/BasicCfg.cs b/FASTER/Models/BasicCfg.cs index fa3cf7f..4ed760a 100644 --- a/FASTER/Models/BasicCfg.cs +++ b/FASTER/Models/BasicCfg.cs @@ -14,8 +14,8 @@ public static class BasicCfgArrays [Serializable] public class BasicCfg : INotifyPropertyChanged { - private uint viewDistance = 2000; - private double terrainGrid = 25; + private uint viewDistance = 2000; + private double terrainGrid = 25; private ushort maxMsgSend = 128; private ushort maxSizeGuaranteed = 256; @@ -158,10 +158,10 @@ public string PerfPreset MaxMsgSend = 256; MaxSizeGuaranteed = 512; MaxSizeNonGuaranteed = 256; - MinErrorToSend = 0.001; - MinErrorToSendNear = 0.01; - MaxPacketSize = 1400; - MaxCustomFileSize = 160; + MinErrorToSend = 0.001; + MinErrorToSendNear = 0.01; + MaxPacketSize = 1400; + MaxCustomFileSize = 160; switch ((short)Array.IndexOf(BasicCfgArrays.PerfPresets, value)) @@ -177,8 +177,8 @@ public string PerfPreset MinBandwidth = 250000000; break; case 4: - MaxMsgSend = 512; - MinBandwidth = 1000000000; + MaxMsgSend = 512; + MinBandwidth = 1000000000; break; } RaisePropertyChanged("PerfPreset"); diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index dbde091..ee967cf 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -771,11 +771,6 @@ public ServerCfg() { ServerCfgContent = ProcessFile(); } } - public object LogObjectNotFound { get; private set; } - public object SkipDescriptionParsing { get; private set; } - public object IgnoreMissionLoadErrors { get; private set; } - public object QueueSizeLogG { get; private set; } - [Serializable] public class AdvancedOptions : INotifyPropertyChanged { @@ -824,7 +819,7 @@ public int QueueSizeLogG } } - private string advancedOptionsContent; + private string advancedOptionsContent; public string AdvancedOptionsContent { @@ -842,16 +837,6 @@ public AdvancedOptions() { AdvancedOptionsContent = ProcessFile(); } } - public event PropertyChangedEventHandler PropertyChanged; - - private void RaisePropertyChanged(string property) - { - if (PropertyChanged == null) return; - PropertyChanged(this, new PropertyChangedEventArgs(property)); - if(property != "AdvancedOptionsContent") AdvancedOptionsContent = ProcessFile(); - } - } - private void Item_PropertyChanged(object sender, PropertyChangedEventArgs e) { RaisePropertyChanged("MissionChecked"); @@ -1025,4 +1010,5 @@ private void RaisePropertyChanged(string property) PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property)); } } + } } \ No newline at end of file diff --git a/FASTER/Models/ServerProfile.cs b/FASTER/Models/ServerProfile.cs index aed0df6..ce222d6 100644 --- a/FASTER/Models/ServerProfile.cs +++ b/FASTER/Models/ServerProfile.cs @@ -428,12 +428,14 @@ public ServerProfile(string name, bool createFolder = true) Name = name; Executable = Path.Combine(Properties.Settings.Default.serverPath, "arma3server_x64.exe"); ServerCfg = new ServerCfg(){ Hostname = name}; + AdvancedOptions = new AdvancedOptions(); ArmaProfile = new Arma3Profile(); BasicCfg = new BasicCfg(); ServerCfg.ServerCfgContent = ServerCfg.ProcessFile(); + ServerCfg.AdvancedOptionsContent = AdvancedOptions.ProcessFile(); ArmaProfile.ArmaProfileContent = ArmaProfile.ProcessFile(); BasicCfg.BasicContent = BasicCfg.ProcessFile(); - + ServerCfg.AdvancedOptionsContent = AdvancedOptions.ProcessFile(); if (createFolder) { Directory.CreateDirectory(Path.Combine(Properties.Settings.Default.serverPath, "Servers", Id)); } } @@ -446,6 +448,7 @@ public ServerProfile() ArmaProfile = new Arma3Profile(); BasicCfg = new BasicCfg(); ServerCfg.ServerCfgContent = ServerCfg.ProcessFile(); + ServerCfg.AdvancedOptionsContent = AdvancedOptions.ProcessFile(); ArmaProfile.ArmaProfileContent = ArmaProfile.ProcessFile(); BasicCfg.BasicContent = BasicCfg.ProcessFile(); } From fb605ccfd9fc1e6c059eedb201826f44fc0b90da Mon Sep 17 00:00:00 2001 From: jupster Date: Sat, 5 Jul 2025 13:51:45 +1000 Subject: [PATCH 12/14] Fix indentation in ServerProfile.cs constructor Corrected inconsistent indentation for assignment of AdvancedOptionsContent in the ServerProfile class constructor to improve code readability. --- FASTER/Models/ServerProfile.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FASTER/Models/ServerProfile.cs b/FASTER/Models/ServerProfile.cs index ce222d6..34bb3c3 100644 --- a/FASTER/Models/ServerProfile.cs +++ b/FASTER/Models/ServerProfile.cs @@ -432,7 +432,7 @@ public ServerProfile(string name, bool createFolder = true) ArmaProfile = new Arma3Profile(); BasicCfg = new BasicCfg(); ServerCfg.ServerCfgContent = ServerCfg.ProcessFile(); - ServerCfg.AdvancedOptionsContent = AdvancedOptions.ProcessFile(); + ServerCfg.AdvancedOptionsContent = AdvancedOptions.ProcessFile(); ArmaProfile.ArmaProfileContent = ArmaProfile.ProcessFile(); BasicCfg.BasicContent = BasicCfg.ProcessFile(); ServerCfg.AdvancedOptionsContent = AdvancedOptions.ProcessFile(); From 50ecf0b5ef3ad3ac54b8d626a35e09f4dfd40913 Mon Sep 17 00:00:00 2001 From: jupster Date: Sat, 5 Jul 2025 21:27:18 +1000 Subject: [PATCH 13/14] Fix typos and improve comments in ServerCfg.cs Corrected typos in comments and property change notifications. --- FASTER/Models/ServerCfg.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/FASTER/Models/ServerCfg.cs b/FASTER/Models/ServerCfg.cs index ee967cf..9405f66 100644 --- a/FASTER/Models/ServerCfg.cs +++ b/FASTER/Models/ServerCfg.cs @@ -53,7 +53,7 @@ public class ServerCfg : INotifyPropertyChanged private int armaUnitsTimeout = 30; // Defines how long the player will be stuck connecting and wait for armaUnits data. Player will be notified if timeout elapsed and no units data was received private string forcedDifficulty = "Custom"; // By default forcedDifficulty is only applying Custom - //Arma server only + //Arma Server Only private short verifySignatures = 0; // 0 = Disabled (FASTER Default); 1 = Deprecated Activated ; 2 = Activated (Arma Default) private bool drawingInMap = true; private short disableVoN; // 0 = VoN activated ; 1 = VoN Disabled @@ -78,12 +78,14 @@ public class ServerCfg : INotifyPropertyChanged private string onUnsignedData = "kick (_this select 0)"; private string onUserKicked; + //Mision Settings private bool missionSelectorChecked; private string missionContentOverride; private List _missions = new(); private bool autoInit; private string difficulty = "Custom"; + //Performance private bool maxMemOverride; private uint maxMem = 1024; private bool cpuCountOverride; @@ -283,7 +285,7 @@ public string AllowedFilePatching set { allowedFilePatching = (short)Array.IndexOf(ServerCfgArrays.AllowFilePatchingStrings, value); - RaisePropertyChanged("Password"); + RaisePropertyChanged("AllowedFilePatching"); } } @@ -776,7 +778,7 @@ public class AdvancedOptions : INotifyPropertyChanged { private bool logObjectNotFound = true; // logging enabled private bool skipDescriptionParsing = false; // Parse description.ext - private bool ignoreMissionLoadErrors = false; // Do not ingore errors + private bool ignoreMissionLoadErrors = false; // Do not ignore errors private int queueSizeLogG = 0; // If a specific players message queue is larger than and '#monitor' is running, dump his messages to a logfile for analysis public bool LogObjectNotFound From b8022f46da3735ccdb99ef49223c43cdb34a2957 Mon Sep 17 00:00:00 2001 From: jupster Date: Sun, 6 Jul 2025 17:40:52 +1000 Subject: [PATCH 14/14] Fix assignment of AdvancedOptionsContent in ServerProfile Corrects the assignment to set AdvancedOptionsContent instead of overwriting ServerCfgContent with advanced options in ServerProfile.cs. --- FASTER/Models/ServerProfile.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FASTER/Models/ServerProfile.cs b/FASTER/Models/ServerProfile.cs index 34bb3c3..71a1be1 100644 --- a/FASTER/Models/ServerProfile.cs +++ b/FASTER/Models/ServerProfile.cs @@ -25,7 +25,7 @@ internal static void AddServerProfile(string profileName) var currentProfiles = Properties.Settings.Default.Profiles; var p = new ServerProfile(profileName); p.ServerCfg.ServerCfgContent = p.ServerCfg.ProcessFile(); - p.ServerCfg.ServerCfgContent = p.AdvancedOptions.ProcessFile(); + p.ServerCfg.AdvancedOptionsContent = p.AdvancedOptions.ProcessFile(); p.BasicCfg.BasicContent = p.BasicCfg.ProcessFile(); p.ArmaProfile.ArmaProfileContent = p.ArmaProfile.ProcessFile(); currentProfiles.Add(p);