@@ -27,11 +27,6 @@ public Main()
2727 this . Theme = MetroFramework . MetroThemeStyle . Light ;
2828 }
2929
30- /*
31- * TODO LIST
32- * Change servername on new clients with encrypted Server.dat (Maybe the best option is find the String of first Server in Server.dat (Decrypting it with the tool in the oc forum) in memory and remplace this with the custom string of LoaderConfig.SelectedServer.ServerName
33- * */
34-
3530 private void Main_Load ( object sender , EventArgs e )
3631 {
3732 LoaderConfig = Core . GetLoaderConfig ( ) ;
@@ -100,64 +95,106 @@ private void SetServerStatus()
10095
10196 private void BtnStart_Click ( object sender , EventArgs e )
10297 {
103- if ( LoaderConfig == null ) return ;
104- if ( cbxServers . SelectedItem == null ) return ;
105- SelectedServer = LoaderConfig . Servers . Where ( x => x . ServerName == cbxServers . SelectedItem . ToString ( ) ) . FirstOrDefault ( ) ;
106- if ( SelectedServer != null )
98+ try
10799 {
108- // Save Last Selected
100+ if ( LoaderConfig == null ) return ;
101+ if ( cbxServers . SelectedItem == null ) return ;
109102 SelectedServer = LoaderConfig . Servers . Where ( x => x . ServerName == cbxServers . SelectedItem . ToString ( ) ) . FirstOrDefault ( ) ;
110- LoaderConfig . DefaultServer = SelectedServer ;
111- Core . SaveLoaderConfig ( LoaderConfig ) ;
112- if ( File . Exists ( HookINI ) )
113- {
114- File . Delete ( HookINI ) ;
115- }
116- // Create first the config used by DLL
117- File . WriteAllText ( HookINI , "[OpenConquerHook]"
118- + Environment . NewLine + "HOST=" + SelectedServer . LoginHost
119- + Environment . NewLine + "GAMEHOST=" + SelectedServer . GameHost
120- + Environment . NewLine + "PORT=" + SelectedServer . LoginPort
121- + Environment . NewLine + "GAMEPORT=" + SelectedServer . GamePort
122- + Environment . NewLine + "SERVERNAME=" + SelectedServer . ServerName
123- + Environment . NewLine + "ENABLE_HOSTNAME=" + ( SelectedServer . EnableHostName ? "1" : "0" )
124- + Environment . NewLine + "HOSTNAME=" + SelectedServer . Hostname
125- + Environment . NewLine + "SERVER_VERSION=" + SelectedServer . ServerVersion
126- ) ;
127- Core . LogWritter . Write ( "Created the Hook Configuration" ) ;
128- // Modify Setup of client
129- string SetupIniPath = Path . Combine ( Directory . GetCurrentDirectory ( ) , "ini" , "GameSetup.ini" ) ;
130- IniManager parser = new IniManager ( SetupIniPath , "ScreenMode" ) ;
131- parser . Write ( "ScreenMode" , "FullScrType" , LoaderConfig . FullScreen ? "0" : "1" ) ;
132- if ( LoaderConfig . HighResolution )
103+ if ( SelectedServer != null )
133104 {
134- parser . Write ( "ScreenMode" , "ScrWidth" , "1024" ) ;
135- parser . Write ( "ScreenMode" , "ScrHeight" , "768" ) ;
136- /*
137- * ScreenModeRecord
138- * 0 = 800x600, windowed
139- 1 = 800x600, full-screen
140- 2 = 1024x768, windowed
141- 3 = 1024x768, full-screen
142- * */
143- parser . Write ( "ScreenMode" , "ScreenModeRecord" , LoaderConfig . FullScreen ? "3" : "2" ) ;
144- }
145- else
146- {
147- parser . Write ( "ScreenMode" , "ScrWidth" , "800" ) ;
148- parser . Write ( "ScreenMode" , "ScrHeight" , "600" ) ;
149- /*
150- * ScreenModeRecord
151- * 0 = 800x600, windowed
152- 1 = 800x600, full-screen
153- 2 = 1024x768, windowed
154- 3 = 1024x768, full-screen
155- * */
156- parser . Write ( "ScreenMode" , "ScreenModeRecord" , LoaderConfig . FullScreen ? "1" : "0" ) ;
105+ // Save Last Selected
106+ SelectedServer = LoaderConfig . Servers . Where ( x => x . ServerName == cbxServers . SelectedItem . ToString ( ) ) . FirstOrDefault ( ) ;
107+ LoaderConfig . DefaultServer = SelectedServer ;
108+ Core . SaveLoaderConfig ( LoaderConfig ) ;
109+ if ( File . Exists ( HookINI ) )
110+ {
111+ File . Delete ( HookINI ) ;
112+ }
113+ if ( LoaderConfig . ServernameChange )
114+ {
115+ if ( SelectedServer . ServerNameMemoryAddress != null && SelectedServer . ServerNameMemoryAddress . Length >= 8 ) // Detect valid memory address
116+ {
117+ // Nothing to do. Using the specified custom memory address
118+ }
119+ else
120+ {
121+ // Set default recommended for each range of versions
122+ if ( SelectedServer . ServerVersion < 5600 )
123+ {
124+ SelectedServer . ServerNameMemoryAddress = "0x005726DC" ;
125+ }
126+ if ( SelectedServer . ServerVersion >= 5600 )
127+ {
128+ SelectedServer . ServerNameMemoryAddress = "0x0097FAB8" ;
129+ }
130+ if ( SelectedServer . ServerVersion >= 5700 )
131+ {
132+ SelectedServer . ServerNameMemoryAddress = "0x009BEA00" ;
133+ }
134+ if ( SelectedServer . ServerVersion >= 6000 )
135+ {
136+ SelectedServer . ServerNameMemoryAddress = "0x00A56348" ;
137+ }
138+ if ( SelectedServer . ServerVersion >= 6600 )
139+ {
140+ SelectedServer . ServerNameMemoryAddress = "0x00CD7240" ;
141+ }
142+ }
143+ }
144+ else
145+ {
146+ SelectedServer . ServerNameMemoryAddress = "0" ;
147+ }
148+ // Create first the config used by DLL
149+ File . WriteAllText ( HookINI , "[OpenConquerHook]"
150+ + Environment . NewLine + "HOST=" + SelectedServer . LoginHost
151+ + Environment . NewLine + "GAMEHOST=" + SelectedServer . GameHost
152+ + Environment . NewLine + "PORT=" + SelectedServer . LoginPort
153+ + Environment . NewLine + "GAMEPORT=" + SelectedServer . GamePort
154+ + Environment . NewLine + "SERVERNAME=" + SelectedServer . ServerName
155+ + Environment . NewLine + "ENABLE_HOSTNAME=" + ( SelectedServer . EnableHostName ? "1" : "0" )
156+ + Environment . NewLine + "HOSTNAME=" + SelectedServer . Hostname
157+ + Environment . NewLine + "SERVER_VERSION=" + SelectedServer . ServerVersion
158+ + Environment . NewLine + "SERVERNAME_MEMORYADDRESS=" + SelectedServer . ServerNameMemoryAddress
159+ ) ;
160+ Core . LogWritter . Write ( "Created the Hook Configuration" ) ;
161+ // Modify Setup of client
162+ string SetupIniPath = Path . Combine ( Directory . GetCurrentDirectory ( ) , "ini" , "GameSetup.ini" ) ;
163+ IniManager parser = new IniManager ( SetupIniPath , "ScreenMode" ) ;
164+ parser . Write ( "ScreenMode" , "FullScrType" , LoaderConfig . FullScreen ? "0" : "1" ) ;
165+ if ( LoaderConfig . HighResolution )
166+ {
167+ parser . Write ( "ScreenMode" , "ScrWidth" , "1024" ) ;
168+ parser . Write ( "ScreenMode" , "ScrHeight" , "768" ) ;
169+ /*
170+ * ScreenModeRecord
171+ * 0 = 800x600, windowed
172+ 1 = 800x600, full-screen
173+ 2 = 1024x768, windowed
174+ 3 = 1024x768, full-screen
175+ * */
176+ parser . Write ( "ScreenMode" , "ScreenModeRecord" , LoaderConfig . FullScreen ? "3" : "2" ) ;
177+ }
178+ else
179+ {
180+ parser . Write ( "ScreenMode" , "ScrWidth" , "800" ) ;
181+ parser . Write ( "ScreenMode" , "ScrHeight" , "600" ) ;
182+ /*
183+ * ScreenModeRecord
184+ * 0 = 800x600, windowed
185+ 1 = 800x600, full-screen
186+ 2 = 1024x768, windowed
187+ 3 = 1024x768, full-screen
188+ * */
189+ parser . Write ( "ScreenMode" , "ScreenModeRecord" , LoaderConfig . FullScreen ? "1" : "0" ) ;
190+ }
191+ worker . RunWorkerAsync ( ) ;
157192 }
158- worker . RunWorkerAsync ( ) ;
193+ } catch ( Exception ex )
194+ {
195+ Core . LogWritter . Write ( "Error found: " + ex ) ;
159196 }
160- }
197+ }
161198
162199 private void Worker_DoWork ( object sender , System . ComponentModel . DoWorkEventArgs e )
163200 {
0 commit comments