@@ -131,7 +131,8 @@ private void OnNewFileEntered()
131131 //004A89DC - A3 E8465800 - mov[MENUS.EXE + 1846E8],eax
132132 detectAddress1 = 0xa7dd3 ;
133133 detectAddress2 = 0xa7ddc ;
134- detectAddressPatch = 0xa7dd7 ;
134+ detectAddressPatch = 0xa7dd7 ;
135+ trainingEffectAddress = 0xe0000 ;
135136 detect1 = new byte [ ] { 0xfc , 0xff , 0x8b , 0x10 } ;
136137 detect2 = new byte [ ] { 0xa3 , 0xe8 , 0x46 , 0x58 } ;
137138 break ;
@@ -204,91 +205,81 @@ private void buttonUnpatch_Click(object sender, EventArgs e)
204205 OnNewFileEntered ( ) ;
205206
206207 }
207-
208+ string [ ] headerEn = new string [ ] {
209+ "200 Times" , "Speed" , "Agility" , "Acceleration" , "Stamina" , "Strength" , "Fitness" , "Shooting" , "Passing" , "Heading" , "Control" , "Dribbling" ,
210+ "Coolness" , "Awareness" , "TackleDetermination" , "TackleSkill" , "Flair" , "Kicking" , "Throwing" , "Handling" ,
211+ "ThrowIn" , "Leadership" , "Consistency" , "Determination" , "Greed" , "Form" , "Morale" , "Energy"
212+ } ;
213+ string [ ] headerZh = new string [ ] {
214+ "200次" , "速度" , "敏捷" , "加速" , "耐力" , "力量" , "健康" , "射门" , "传球" , "头球" , "控球" , "盘带" ,
215+ "冷静" , "意识" , "盯人" , "铲球" , "才华" , "踢球" , "掷球" , "救球" ,
216+ "边线球" , "领导" , "稳定" , "逆风" , "贪婪" , "状态" , "士气" , "体力"
217+ } ;
208218 private void buttonShowTrainingEffects_Click ( object sender , EventArgs e )
209219 {
210220 try
211221 {
222+ string [ ] headers ;
212223 FileInfo fi = new FileInfo ( textBox1 . Text ) ;
213224 switch ( fi . Length )
214225 {
215226 case 1378816 :
216227 trainingEffectAddress = 0xe2aa0 ;
217- var fileBytes = File . ReadAllBytes ( textBox1 . Text ) ;
218- float [ ] trainingEffectFloat = new float [ 27 * 19 ] ;
219- Buffer . BlockCopy ( fileBytes , trainingEffectAddress , trainingEffectFloat , 0 , trainingEffectFloat . Length * 4 ) ;
220- if ( fileBytes . Length < trainingEffectAddress )
221- {
222- MessageBox . Show ( "不支持的游戏版本 (Unsupported Game Version)" ) ;
223- return ;
224- }
225- using ( SaveFileDialog sfd = new SaveFileDialog ( ) )
228+ headers = headerZh ;
229+ break ;
230+ case 1135104 :
231+ headers = headerEn ;
232+ trainingEffectAddress = 0xe0000 ; break ;
233+ default :
234+ MessageBox . Show ( "不支持的游戏版本 (Unsupported Game Version)" ) ;
235+ return ;
236+ }
237+ var fileBytes = File . ReadAllBytes ( textBox1 . Text ) ;
238+ float [ ] trainingEffectFloat = new float [ 27 * 19 ] ;
239+ Buffer . BlockCopy ( fileBytes , trainingEffectAddress , trainingEffectFloat , 0 , trainingEffectFloat . Length * 4 ) ;
240+ if ( fileBytes . Length < trainingEffectAddress )
241+ {
242+ MessageBox . Show ( "不支持的游戏版本 (Unsupported Game Version)" ) ;
243+ return ;
244+ }
245+ using ( SaveFileDialog sfd = new SaveFileDialog ( ) )
246+ {
247+ sfd . FileName = "trainingEffects.csv" ;
248+ sfd . Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*" ;
249+ sfd . Title = "选择训练效果数据保存路径(Select player data export location)" ;
250+ if ( sfd . ShowDialog ( ) == DialogResult . OK )
251+ {
252+ CsvConfiguration config = new CsvConfiguration ( ) ;
253+ config . Encoding = Encoding . UTF8 ;
254+ config . CultureInfo = new CultureInfo ( "zh-hans" ) ;
255+ using ( var writer = new StreamWriter ( sfd . FileName , false , Encoding . UTF8 ) )
256+ using ( var csv = new CsvWriter ( writer , config ) )
226257 {
227- sfd . FileName = "trainingEffects.csv" ;
228- sfd . Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*" ;
229- sfd . Title = "选择训练效果数据保存路径(Select player data export location)" ;
230- if ( sfd . ShowDialog ( ) == DialogResult . OK )
258+ foreach ( var item in headers )
231259 {
232- CsvConfiguration config = new CsvConfiguration ( ) ;
233- config . Encoding = Encoding . UTF8 ;
234- config . CultureInfo = new CultureInfo ( "zh-hans" ) ;
235- using ( var writer = new StreamWriter ( sfd . FileName , false , Encoding . UTF8 ) )
236- using ( var csv = new CsvWriter ( writer , config ) )
260+ csv . WriteField ( item ) ;
261+ }
262+ csv . NextRecord ( ) ;
263+ for ( int i = 0 ; i < ( int ) TrainingScheduleType . TrainingMatch + 1 ; i ++ )
264+ {
265+ csv . WriteField ( Enum . GetName ( typeof ( TrainingScheduleType ) , i ) ) ;
266+ for ( int j = 0 ; j < 27 ; j ++ )
237267 {
238- csv . WriteField ( "200次" ) ;
239- csv . WriteField ( "速度" ) ;
240- csv . WriteField ( "敏捷" ) ;
241- csv . WriteField ( "加速" ) ;
242- csv . WriteField ( "耐力" ) ;
243- csv . WriteField ( "力量" ) ;
244- csv . WriteField ( "健康" ) ;
245- csv . WriteField ( "射门" ) ;
246- csv . WriteField ( "传球" ) ;
247- csv . WriteField ( "头球" ) ;
248- csv . WriteField ( "控球" ) ;
249- csv . WriteField ( "盘带" ) ;
250- csv . WriteField ( "冷静" ) ;
251- csv . WriteField ( "意识" ) ;
252- csv . WriteField ( "盯人" ) ;
253- csv . WriteField ( "铲球" ) ;
254- csv . WriteField ( "才华" ) ;
255- csv . WriteField ( "踢球" ) ;
256- csv . WriteField ( "掷球" ) ;
257- csv . WriteField ( "救球" ) ;
258- csv . WriteField ( "边线球" ) ;
259- csv . WriteField ( "领导" ) ;
260- csv . WriteField ( "稳定" ) ;
261- csv . WriteField ( "逆风" ) ;
262- csv . WriteField ( "贪婪" ) ;
263- csv . WriteField ( "状态" ) ;
264- csv . WriteField ( "士气" ) ;
265- csv . WriteField ( "体力" ) ;
266- csv . NextRecord ( ) ;
267- for ( int i = 0 ; i < ( int ) TrainingScheduleType . TrainingMatch + 1 ; i ++ )
268- {
269- csv . WriteField ( Enum . GetName ( typeof ( TrainingScheduleType ) , i ) ) ;
270- for ( int j = 0 ; j < 27 ; j ++ )
271- {
272- var fieldValue = trainingEffectFloat [ i * 27 + j ] * 200 ;
273- if ( fieldValue == 0 )
274- csv . WriteField ( string . Empty ) ;
275- else
276- csv . WriteField ( fieldValue ) ;
277- }
278- csv . NextRecord ( ) ;
279- }
268+ var fieldValue = trainingEffectFloat [ i * 27 + j ] * 200 ;
269+ if ( fieldValue == 0 )
270+ csv . WriteField ( string . Empty ) ;
271+ else
272+ csv . WriteField ( fieldValue ) ;
280273 }
281- ProcessStartInfo psi = new ProcessStartInfo ( ) ;
282- psi . UseShellExecute = true ;
283- psi . FileName = sfd . FileName ;
284- Process . Start ( psi ) ;
274+ csv . NextRecord ( ) ;
285275 }
286276 }
287- break ;
288- default :
289- MessageBox . Show ( "不支持的游戏版本 (Unsupported Game Version)" ) ;
290- return ;
291- }
277+ ProcessStartInfo psi = new ProcessStartInfo ( ) ;
278+ psi . UseShellExecute = true ;
279+ psi . FileName = sfd . FileName ;
280+ Process . Start ( psi ) ;
281+ }
282+ }
292283 }
293284 catch ( Exception ex )
294285 {
0 commit comments