root/trunk/initer.cpp

Revision 12, 118.0 kB (checked in by sagrer, 8 months ago)
  • Добавлен пункт меню для закрытия текущего открытого моба.
  • Исправлена ошибка, проявлявшаяся в некоторых случаях если начать крутить ориентатор при не выделенном в дереве реальном объекте.
  • При любом закрытии активного моба, в т.ч. при выходе из программы если файл был изменен - появляется вопрос о том что делать с измененным файлом.
  • Добавлен svn-clean.cmd для удаления неверсифицированных файлов в рабочей копии.
Line 
1 ///////////////////////////////////////////////////////////
2 //                      MobSurgeon                       //
3 //          Ðåäàêòîð mob-îâ äëÿ Ïðîêëÿòûõ Çåìåëü         //
4 //           Copyright (C) 2005-2007 Gipat Group         //
5 //              Ðàñïðîñòðàíÿåòñÿ íà óñëîâèÿõ             //
6 //    Gipat Group's opened EI-editor-utility license     //
7 //                      âåðñèè 1.0                       //
8 //                                                       //
9 //                  www.gipatgroup.org                   //
10 ///////////////////////////////////////////////////////////
11
12 //Ê ðàáîòå íàä äàííûì ôàéëîì ïðèëîæèëè ðóêè, íîãè.... êîðî÷å àôôòàðû:
13 // 1) Sagrer (sagrer@yandex.ru)
14
15 ////////////////////////////////////////////////////////////////////////
16
17 //---------------------------------------------------------------------------
18
19
20 #pragma hdrstop
21
22 #include "initer.h"
23 #include "forms.hpp"
24 #include "MainForm.h"
25 #include "MySys.hpp"
26 #include "math.h"
27
28
29 //---------------------------------------------------------------------------
30
31 #pragma package(smart_init)
32
33 //Ïåðåìåííûå-íàñòðîéêè, êîòîðûå áóäóò ñàâèòüñÿ â ini
34 //[Main]
35 bool UseTMobThreads;     //Èñïîëüçîâàòü ëè íèòêè ïðè ðàáîòå ñ TMob;
36 Integer SaveAttempts;    //Êîëè÷åñòâî ïîâòîðíûõ ïîïûòîê ïîñëå íåóäà÷íîãî ñàâà.
37 String WorkPath;         //Ðàáî÷èé ïóòü.
38 bool MakeAutoBackups;    //Äåëàòü àâòîìàòè÷åñêèå áåêàïû...
39 String SearchStr;        //Ñòðîêà äëÿ ïîèñêà...
40 String RepStr;           //Ñòðîêà äëÿ çàìåíû...
41 bool MakeReplace;     //Äåëàòü ëè çàìåíó ïðè ïîèñêå\çàìåíå.
42 //[MassChangeOpts]
43 bool MC_KR_Param_Name1CB_ini;
44 bool MC_KR_Param_Name2CB_ini;
45 bool MC_KR_Param_ScriptVariableNameCB_ini;
46 bool MC_KR_Param_Model3dCB_ini;
47 bool MC_KR_Param_FirstTextureCB_ini;
48 bool MC_KR_Param_SecondTextureCB_ini;
49 bool MC_KR_Param_PlayerNumberCB_ini;
50 bool MC_KR_Coords_PramouglCB_ini;
51 bool MC_KR_Coords_KrugCB_ini;
52 bool MC_KR_Type_UnitCB_ini;
53 bool MC_KR_Type_ObjectCB_ini;
54 bool MC_KR_Type_LeverCB_ini;
55 bool MC_KR_Type_TrapCB_ini;
56 bool MC_KR_Type_FlameCB_ini;
57 bool MC_KR_Type_Particle1CB_ini;
58 bool MC_KR_Type_Particle2CB_ini;
59 bool MC_KR_Type_Particle3CB_ini;
60 bool MC_AS_Obj_DelRB_ini;
61 bool MC_AS_Obj_CopyRB_ini;
62 bool MC_AS_Obj_MoveRB_ini;
63 bool MC_AS_Obj_ReplaceCB_ini;
64 bool MC_AS_Params_Name1CB_ini;
65 bool MC_AS_Params_Name2CB_ini;
66 bool MC_AS_Params_ScriptVariableNameCB_ini;
67 bool MC_AS_Params_Model3dCB_ini;
68 bool MC_AS_Params_FirstTextureCB_ini;
69 bool MC_AS_Params_SecondTextureCB_ini;
70 bool MC_AS_Params_OffsetCB_ini;
71 bool MC_AS_Params_PlayerNumberCB_ini;
72 bool MC_AS_Obj_OnlyParamsRB_ini;
73 String MC_KR_Param_Name1Ed_ini;
74 String MC_KR_Param_Name2Ed_ini;
75 String MC_KR_Param_ScriptVariableNameEd_ini;
76 String MC_KR_Param_Model3dEd_ini;
77 String MC_KR_Param_FirstTextureEd_ini;
78 String MC_KR_Param_SecondTextureEd_ini;
79 String MC_KR_Param_PlayerNumberEd_ini;
80 String MC_KR_Coords_Pramougl_X1Ed_ini;
81 String MC_KR_Coords_Pramougl_Y1Ed_ini;
82 String MC_KR_Coords_Pramougl_X2Ed_ini;
83 String MC_KR_Coords_Pramougl_Y2Ed_ini;
84 String MC_KR_Coords_Krug_XEd_ini;
85 String MC_KR_Coords_Krug_YEd_ini;
86 String MC_KR_Coords_Krug_RadEd_ini;
87 String MC_AS_Obj_TargetMobEd_ini;
88 String MC_AS_Params_Name1Ed_ini;
89 String MC_AS_Params_Name2Ed_ini;
90 String MC_AS_Params_ScriptVariableNameEd_ini;
91 String MC_AS_Params_Model3dEd_ini;
92 String MC_AS_Params_FirstTextureEd_ini;
93 String MC_AS_Params_SecondTextureEd_ini;
94 String MC_AS_Params_OffsetXEd_ini;
95 String MC_AS_Params_OffsetYEd_ini;
96 String MC_AS_Params_PlayerNumberEd_ini;
97
98 //Òèïà ãëîáàëüíûå ïåðåìåííûå...;
99 TVerInfoTxtFormat *VitInfo;
100 String ProgPath, MobFileName;
101 TMob *MobInMem1, *TargetMob;
102 bool MobLoaded, SearchDialCanceled, MakeSLBlockInterf, MobModified;
103 TIniFile *MainIni;
104
105 void AppInit()  //Ñðàáàòûâàåò äî RUN
106 {
107   //Ñîáñíî - òóò íàäî âûïîëíèòü ðàçíûå ïîëåçíûå äåéñòâèÿ :).
108   //êîòîðûå íàäî ñäåëàòü äî íà÷àëà îáðàáîòêè ñîîáùåíèé.
109
110   //Èíèöèàëèçîâàòü ïåðåìåííûå...
111   MobLoaded = false;
112   MobModified = false;
113   MobFileName = "";
114   MakeSLBlockInterf = true;
115
116   //Ïîëó÷èòü èíôó î âåðñèè...
117   VitInfo = new TVerInfoTxtFormat;
118   VitInfo->Ver1 = MobSurgeon_Ver1;
119   VitInfo->Ver2 = MobSurgeon_Ver2;
120   VitInfo->Ver3 = MobSurgeon_Ver3;
121   VitInfo->Ver4 = MobSurgeon_Ver4;
122   VitInfo->Status = MobSurgeon_Status;
123   VitInfo->RCNum = MobSurgeon_RCNum;
124
125   //Ïîëó÷èòü ïóòü ê ïðîãå...
126   ProgPath = ExtractFilePath(Application->ExeName);
127   //ShowMessage(ProgPath);
128
129   //Çàãðóçèòü èíôó èç ini...
130   MainIni = new TIniFile(ProgPath+IniFileName);  //Ñîçäàòü îáúåêò êëàññà è ïðèâÿçàòüñÿ ê ôàéëó...
131   //Åñëè ôàéë êîíôèãà åùå íå ñóùåñòâóåò - ñîçäàòü.
132   if (FileExists(ProgPath+IniFileName) == false)
133   {
134     SetStandProgSetts();
135     SaveProgSetts();
136   }
137   else
138   {
139     //Åñëè ôàéë ñóùåñòâóåò - ãðóçàíóòü åãî :).
140     LoadProgSetts();
141   };
142
143   //Ñîçäàòü êëàññ äëÿ ìîáà.
144   MobInMem1 = new TMob;
145
146 };
147
148 void AppDeInit()   //Ñðàáàòûâàåò ïîñëå RUN
149 {
150   //Íó òèïà òóò - òî ÷òî âûïîëíÿåòñÿ ïî çàâðåøåíèþ ðàáîòû
151   //- êîãäà óæå îáðàáîòêà ñîîáùåíèé îñòàíîâëåíà.
152   SaveProgSetts();  //Çàôèêñèðîâàòü èçìåíåíèÿ â èíèøíèêå ïåðåä óáèâàíèåì.
153
154   //Óáðàòü ìóñîð
155   delete VitInfo;
156   delete MobInMem1;
157   delete MainIni;
158 };
159
160 void SetStandProgSetts()
161 //Ýòà ôóíêöèÿ ãåíåðèò ñòàíäàðòíûé íàáîð íàñòðîåê ïðîãè.
162 {
163   //Ïî áîëüøåé ÷àñòè - ïðîñòî ñêîïèðîâàòü çíà÷åíèÿ ñòàíäàðòíûõ êîíñòàíò...
164   //[Main]
165   UseTMobThreads = StandUseTMobThreads;
166   SaveAttempts = StandSaveAttempts;
167   WorkPath = ProgPath;
168   MakeAutoBackups = StandMakeAutoBackups;
169   SearchStr = StandSearchStr;
170   RepStr = StandRepStr;
171   MakeReplace = StandMakeReplace;
172   //[MassChangeOpts]
173   MC_KR_Param_Name1CB_ini = Stand_MC_KR_Param_Name1CB_ini;
174   MC_KR_Param_Name2CB_ini = Stand_MC_KR_Param_Name2CB_ini;
175   MC_KR_Param_ScriptVariableNameCB_ini = Stand_MC_KR_Param_ScriptVariableNameCB_ini;
176   MC_KR_Param_Model3dCB_ini = Stand_MC_KR_Param_Model3dCB_ini;
177   MC_KR_Param_FirstTextureCB_ini = Stand_MC_KR_Param_FirstTextureCB_ini;
178   MC_KR_Param_SecondTextureCB_ini = Stand_MC_KR_Param_SecondTextureCB_ini;
179   MC_KR_Coords_PramouglCB_ini = Stand_MC_KR_Coords_PramouglCB_ini;
180   MC_KR_Coords_KrugCB_ini = Stand_MC_KR_Coords_KrugCB_ini;
181   MC_KR_Type_UnitCB_ini = Stand_MC_KR_Type_UnitCB_ini;
182   MC_KR_Type_ObjectCB_ini = Stand_MC_KR_Type_ObjectCB_ini;
183   MC_KR_Type_LeverCB_ini = Stand_MC_KR_Type_LeverCB_ini;
184   MC_KR_Type_TrapCB_ini = Stand_MC_KR_Type_TrapCB_ini;
185   MC_KR_Type_FlameCB_ini = Stand_MC_KR_Type_FlameCB_ini;
186   MC_KR_Type_Particle1CB_ini = Stand_MC_KR_Type_Particle1CB_ini;
187   MC_KR_Type_Particle2CB_ini = Stand_MC_KR_Type_Particle2CB_ini;
188   MC_KR_Type_Particle3CB_ini = Stand_MC_KR_Type_Particle3CB_ini;
189   MC_AS_Obj_DelRB_ini = Stand_MC_AS_Obj_DelRB_ini;
190   MC_AS_Obj_CopyRB_ini = Stand_MC_AS_Obj_CopyRB_ini;
191   MC_AS_Obj_MoveRB_ini = Stand_MC_AS_Obj_MoveRB_ini;
192   MC_AS_Obj_ReplaceCB_ini = Stand_MC_AS_Obj_ReplaceCB_ini;
193   MC_AS_Params_Name1CB_ini = Stand_MC_AS_Params_Name1CB_ini;
194   MC_AS_Params_Name2CB_ini = Stand_MC_AS_Params_Name2CB_ini;
195   MC_AS_Params_ScriptVariableNameCB_ini = Stand_MC_AS_Params_ScriptVariableNameCB_ini;
196   MC_AS_Params_Model3dCB_ini = Stand_MC_AS_Params_Model3dCB_ini;
197   MC_AS_Params_FirstTextureCB_ini = Stand_MC_AS_Params_FirstTextureCB_ini;
198   MC_AS_Params_SecondTextureCB_ini = Stand_MC_AS_Params_SecondTextureCB_ini;
199   MC_AS_Params_OffsetCB_ini = Stand_MC_AS_Params_OffsetCB_ini;
200   MC_AS_Obj_OnlyParamsRB_ini = Stand_MC_AS_Obj_OnlyParamsRB_ini;
201   MC_KR_Param_Name1Ed_ini = Stand_MC_KR_Param_Name1Ed_ini;
202   MC_KR_Param_Name2Ed_ini = Stand_MC_KR_Param_Name2Ed_ini;
203   MC_KR_Param_ScriptVariableNameEd_ini = Stand_MC_KR_Param_ScriptVariableNameEd_ini;
204   MC_KR_Param_Model3dEd_ini = Stand_MC_KR_Param_Model3dEd_ini;
205   MC_KR_Param_FirstTextureEd_ini = Stand_MC_KR_Param_FirstTextureEd_ini;
206   MC_KR_Param_SecondTextureEd_ini = Stand_MC_KR_Param_SecondTextureEd_ini;
207   MC_KR_Coords_Pramougl_X1Ed_ini = Stand_MC_KR_Coords_Pramougl_X1Ed_ini;
208   MC_KR_Coords_Pramougl_Y1Ed_ini = Stand_MC_KR_Coords_Pramougl_Y1Ed_ini;
209   MC_KR_Coords_Pramougl_X2Ed_ini = Stand_MC_KR_Coords_Pramougl_X2Ed_ini;
210   MC_KR_Coords_Pramougl_Y2Ed_ini = Stand_MC_KR_Coords_Pramougl_Y2Ed_ini;
211   MC_KR_Coords_Krug_XEd_ini = Stand_MC_KR_Coords_Krug_XEd_ini;
212   MC_KR_Coords_Krug_YEd_ini = Stand_MC_KR_Coords_Krug_YEd_ini;
213   MC_KR_Coords_Krug_RadEd_ini = Stand_MC_KR_Coords_Krug_RadEd_ini;
214   MC_AS_Obj_TargetMobEd_ini = Stand_MC_AS_Obj_TargetMobEd_ini;
215   MC_AS_Params_Name1Ed_ini = Stand_MC_AS_Params_Name1Ed_ini;
216   MC_AS_Params_Name2Ed_ini = Stand_MC_AS_Params_Name2Ed_ini;
217   MC_AS_Params_ScriptVariableNameEd_ini = Stand_MC_AS_Params_ScriptVariableNameEd_ini;
218   MC_AS_Params_Model3dEd_ini = Stand_MC_AS_Params_Model3dEd_ini;
219   MC_AS_Params_FirstTextureEd_ini = Stand_MC_AS_Params_FirstTextureEd_ini;
220   MC_AS_Params_SecondTextureEd_ini = Stand_MC_AS_Params_SecondTextureEd_ini;
221   MC_AS_Params_OffsetXEd_ini = Stand_MC_AS_Params_OffsetXEd_ini;
222   MC_AS_Params_OffsetYEd_ini = Stand_MC_AS_Params_OffsetYEd_ini;
223  
224 };
225
226 void LoadProgSetts()
227 //Ýòà ôóíêöèÿ ãðóçèò íàñòðîéêè èç èíèøíèêà.
228 {
229   //Ïîñìîòðåòü êàêàÿ âåðñèÿ åòîãî èíèøíèêà.
230   Integer IniRealVer;
231   IniRealVer = MainIni->ReadInteger("Main","IniFileVer",NULL);
232
233   //Åñëè âåðñèÿ ñòàðîâàòà - òî äîâåñòè èíèøíèê äî íóæíîãî âèäà :).
234   if (IniRealVer < IniFileVer)
235   {
236     //Â çàâèñèìîñòè îò âåðñèè..... ïîñëåäîâàòåëüíàÿ äîâîäêà...
237     if (IniRealVer == 1)
238     {
239       MakeAutoBackups = StandMakeAutoBackups;
240       MainIni->WriteBool("Main","MakeAutoBackups",MakeAutoBackups);
241
242       MainIni->WriteInteger("Main","IniFileVer",2);
243       IniRealVer = 2;
244       MainIni->UpdateFile(); //Çàôèêñèðîâàòü èçìåíåíèÿ íà ñëó÷àé win9x.
245     };
246
247     if (IniRealVer == 2)
248     {
249       SearchStr = StandSearchStr;
250       RepStr = StandRepStr;
251       MakeReplace = StandMakeReplace;
252       MainIni->WriteString("Main","SearchStr",SearchStr);
253       MainIni->WriteString("Main","RepStr",RepStr);
254       MainIni->WriteBool("Main","MakeReplace",MakeReplace);
255
256       MainIni->WriteInteger("Main","IniFileVer",3);
257       IniRealVer = 3;
258       MainIni->UpdateFile(); //Çàôèêñèðîâàòü èçìåíåíèÿ íà ñëó÷àé win9x.
259     };
260
261     if (IniRealVer == 3)
262     {
263       //[MassChangeOpts]
264       MC_KR_Param_Name1CB_ini = Stand_MC_KR_Param_Name1CB_ini;
265       MC_KR_Param_Name2CB_ini = Stand_MC_KR_Param_Name2CB_ini;
266       MC_KR_Param_ScriptVariableNameCB_ini = Stand_MC_KR_Param_ScriptVariableNameCB_ini;
267       MC_KR_Param_Model3dCB_ini = Stand_MC_KR_Param_Model3dCB_ini;
268       MC_KR_Param_FirstTextureCB_ini = Stand_MC_KR_Param_FirstTextureCB_ini;
269       MC_KR_Param_SecondTextureCB_ini = Stand_MC_KR_Param_SecondTextureCB_ini;
270       MC_KR_Coords_PramouglCB_ini = Stand_MC_KR_Coords_PramouglCB_ini;
271       MC_KR_Coords_KrugCB_ini = Stand_MC_KR_Coords_KrugCB_ini;
272       MC_KR_Type_UnitCB_ini = Stand_MC_KR_Type_UnitCB_ini;
273       MC_KR_Type_ObjectCB_ini = Stand_MC_KR_Type_ObjectCB_ini;
274       MC_KR_Type_LeverCB_ini = Stand_MC_KR_Type_LeverCB_ini;
275       MC_KR_Type_TrapCB_ini = Stand_MC_KR_Type_TrapCB_ini;
276       MC_KR_Type_FlameCB_ini = Stand_MC_KR_Type_FlameCB_ini;
277       MC_KR_Type_Particle1CB_ini = Stand_MC_KR_Type_Particle1CB_ini;
278       MC_KR_Type_Particle2CB_ini = Stand_MC_KR_Type_Particle2CB_ini;
279       MC_KR_Type_Particle3CB_ini = Stand_MC_KR_Type_Particle3CB_ini;
280       MC_AS_Obj_DelRB_ini = Stand_MC_AS_Obj_DelRB_ini;
281       MC_AS_Obj_CopyRB_ini = Stand_MC_AS_Obj_CopyRB_ini;
282       MC_AS_Obj_MoveRB_ini = Stand_MC_AS_Obj_MoveRB_ini;
283       MC_AS_Obj_ReplaceCB_ini = Stand_MC_AS_Obj_ReplaceCB_ini;
284       MC_AS_Params_Name1CB_ini = Stand_MC_AS_Params_Name1CB_ini;
285       MC_AS_Params_Name2CB_ini = Stand_MC_AS_Params_Name2CB_ini;
286       MC_AS_Params_ScriptVariableNameCB_ini = Stand_MC_AS_Params_ScriptVariableNameCB_ini;
287       MC_AS_Params_Model3dCB_ini = Stand_MC_AS_Params_Model3dCB_ini;
288       MC_AS_Params_FirstTextureCB_ini = Stand_MC_AS_Params_FirstTextureCB_ini;
289       MC_AS_Params_SecondTextureCB_ini = Stand_MC_AS_Params_SecondTextureCB_ini;
290       MC_AS_Params_OffsetCB_ini = Stand_MC_AS_Params_OffsetCB_ini;
291       MC_KR_Param_Name1Ed_ini = Stand_MC_KR_Param_Name1Ed_ini;
292       MC_KR_Param_Name2Ed_ini = Stand_MC_KR_Param_Name2Ed_ini;
293       MC_KR_Param_ScriptVariableNameEd_ini = Stand_MC_KR_Param_ScriptVariableNameEd_ini;
294       MC_KR_Param_Model3dEd_ini = Stand_MC_KR_Param_Model3dEd_ini;
295       MC_KR_Param_FirstTextureEd_ini = Stand_MC_KR_Param_FirstTextureEd_ini;
296       MC_KR_Param_SecondTextureEd_ini = Stand_MC_KR_Param_SecondTextureEd_ini;
297       MC_KR_Coords_Pramougl_X1Ed_ini = Stand_MC_KR_Coords_Pramougl_X1Ed_ini;
298       MC_KR_Coords_Pramougl_Y1Ed_ini = Stand_MC_KR_Coords_Pramougl_Y1Ed_ini;
299       MC_KR_Coords_Pramougl_X2Ed_ini = Stand_MC_KR_Coords_Pramougl_X2Ed_ini;
300       MC_KR_Coords_Pramougl_Y2Ed_ini = Stand_MC_KR_Coords_Pramougl_Y2Ed_ini;
301       MC_KR_Coords_Krug_XEd_ini = Stand_MC_KR_Coords_Krug_XEd_ini;
302       MC_KR_Coords_Krug_YEd_ini = Stand_MC_KR_Coords_Krug_YEd_ini;
303       MC_KR_Coords_Krug_RadEd_ini = Stand_MC_KR_Coords_Krug_RadEd_ini;
304       MC_AS_Obj_TargetMobEd_ini = Stand_MC_AS_Obj_TargetMobEd_ini;
305       MC_AS_Params_Name1Ed_ini = Stand_MC_AS_Params_Name1Ed_ini;
306       MC_AS_Params_Name2Ed_ini = Stand_MC_AS_Params_Name2Ed_ini;
307       MC_AS_Params_ScriptVariableNameEd_ini = Stand_MC_AS_Params_ScriptVariableNameEd_ini;
308       MC_AS_Params_Model3dEd_ini = Stand_MC_AS_Params_Model3dEd_ini;
309       MC_AS_Params_FirstTextureEd_ini = Stand_MC_AS_Params_FirstTextureEd_ini;
310       MC_AS_Params_SecondTextureEd_ini = Stand_MC_AS_Params_SecondTextureEd_ini;
311       MC_AS_Params_OffsetXEd_ini = Stand_MC_AS_Params_OffsetXEd_ini;
312       MC_AS_Params_OffsetYEd_ini = Stand_MC_AS_Params_OffsetYEd_ini;
313
314       MainIni->WriteBool("MassChangeOpts","MC_KR_Param_Name1CB_ini",MC_KR_Param_Name1CB_ini);
315       MainIni->WriteBool("MassChangeOpts","MC_KR_Param_Name2CB_ini",MC_KR_Param_Name2CB_ini);
316       MainIni->WriteBool("MassChangeOpts","MC_KR_Param_ScriptVariableNameCB_ini",MC_KR_Param_ScriptVariableNameCB_ini);
317       MainIni->WriteBool("MassChangeOpts","MC_KR_Param_Model3dCB_ini",MC_KR_Param_Model3dCB_ini);
318       MainIni->WriteBool("MassChangeOpts","MC_KR_Param_FirstTextureCB_ini",MC_KR_Param_FirstTextureCB_ini);
319       MainIni->WriteBool("MassChangeOpts","MC_KR_Param_SecondTextureCB_ini",MC_KR_Param_SecondTextureCB_ini);
320       MainIni->WriteBool("MassChangeOpts","MC_KR_Coords_PramouglCB_ini",MC_KR_Coords_PramouglCB_ini);
321       MainIni->WriteBool("MassChangeOpts","MC_KR_Coords_KrugCB_ini",MC_KR_Coords_KrugCB_ini);
322       MainIni->WriteBool("MassChangeOpts","MC_KR_Type_UnitCB_ini",MC_KR_Type_UnitCB_ini);
323       MainIni->WriteBool("MassChangeOpts","MC_KR_Type_ObjectCB_ini",MC_KR_Type_ObjectCB_ini);
324       MainIni->WriteBool("MassChangeOpts","MC_KR_Type_LeverCB_ini",MC_KR_Type_LeverCB_ini);
325       MainIni->WriteBool("MassChangeOpts","MC_KR_Type_TrapCB_ini",MC_KR_Type_TrapCB_ini);
326       MainIni->WriteBool("MassChangeOpts","MC_KR_Type_FlameCB_ini",MC_KR_Type_FlameCB_ini);
327       MainIni->WriteBool("MassChangeOpts","MC_KR_Type_Particle1CB_ini",MC_KR_Type_Particle1CB_ini);
328       MainIni->WriteBool("MassChangeOpts","MC_KR_Type_Particle2CB_ini",MC_KR_Type_Particle2CB_ini);
329       MainIni->WriteBool("MassChangeOpts","MC_KR_Type_Particle3CB_ini",MC_KR_Type_Particle3CB_ini);
330       MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_DelRB_ini",MC_AS_Obj_DelRB_ini);
331       MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_CopyRB_ini",MC_AS_Obj_CopyRB_ini);
332       MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_MoveRB_ini",MC_AS_Obj_MoveRB_ini);
333       MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_ReplaceCB_ini",MC_AS_Obj_ReplaceCB_ini);
334       MainIni->WriteBool("MassChangeOpts","MC_AS_Params_Name1CB_ini",MC_AS_Params_Name1CB_ini);
335       MainIni->WriteBool("MassChangeOpts","MC_AS_Params_Name2CB_ini",MC_AS_Params_Name2CB_ini);
336       MainIni->WriteBool("MassChangeOpts","MC_AS_Params_ScriptVariableNameCB_ini",MC_AS_Params_ScriptVariableNameCB_ini);
337       MainIni->WriteBool("MassChangeOpts","MC_AS_Params_Model3dCB_ini",MC_AS_Params_Model3dCB_ini);
338       MainIni->WriteBool("MassChangeOpts","MC_AS_Params_FirstTextureCB_ini",MC_AS_Params_FirstTextureCB_ini);
339       MainIni->WriteBool("MassChangeOpts","MC_AS_Params_SecondTextureCB_ini",MC_AS_Params_SecondTextureCB_ini);
340       MainIni->WriteBool("MassChangeOpts","MC_AS_Params_OffsetCB_ini",MC_AS_Params_OffsetCB_ini);
341       MainIni->WriteString("MassChangeOpts","MC_KR_Param_Name1Ed_ini",MC_KR_Param_Name1Ed_ini);
342       MainIni->WriteString("MassChangeOpts","MC_KR_Param_Name2Ed_ini",MC_KR_Param_Name2Ed_ini);
343       MainIni->WriteString("MassChangeOpts","MC_KR_Param_ScriptVariableNameEd_ini",MC_KR_Param_ScriptVariableNameEd_ini);
344       MainIni->WriteString("MassChangeOpts","MC_KR_Param_Model3dEd_ini",MC_KR_Param_Model3dEd_ini);
345       MainIni->WriteString("MassChangeOpts","MC_KR_Param_FirstTextureEd_ini",MC_KR_Param_FirstTextureEd_ini);
346       MainIni->WriteString("MassChangeOpts","MC_KR_Param_SecondTextureEd_ini",MC_KR_Param_SecondTextureEd_ini);
347       MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Pramougl_X1Ed_ini",MC_KR_Coords_Pramougl_X1Ed_ini);
348       MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Pramougl_Y1Ed_ini",MC_KR_Coords_Pramougl_Y1Ed_ini);
349       MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Pramougl_X2Ed_ini",MC_KR_Coords_Pramougl_X2Ed_ini);
350       MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Pramougl_Y2Ed_ini",MC_KR_Coords_Pramougl_Y2Ed_ini);
351       MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Krug_XEd_ini",MC_KR_Coords_Krug_XEd_ini);
352       MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Krug_YEd_ini",MC_KR_Coords_Krug_YEd_ini);
353       MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Krug_RadEd_ini",MC_KR_Coords_Krug_RadEd_ini);
354       MainIni->WriteString("MassChangeOpts","MC_AS_Obj_TargetMobEd_ini",MC_AS_Obj_TargetMobEd_ini);
355       MainIni->WriteString("MassChangeOpts","MC_AS_Params_Name1Ed_ini",MC_AS_Params_Name1Ed_ini);
356       MainIni->WriteString("MassChangeOpts","MC_AS_Params_Name2Ed_ini",MC_AS_Params_Name2Ed_ini);
357       MainIni->WriteString("MassChangeOpts","MC_AS_Params_ScriptVariableNameEd_ini",MC_AS_Params_ScriptVariableNameEd_ini);
358       MainIni->WriteString("MassChangeOpts","MC_AS_Params_Model3dEd_ini",MC_AS_Params_Model3dEd_ini);
359       MainIni->WriteString("MassChangeOpts","MC_AS_Params_FirstTextureEd_ini",MC_AS_Params_FirstTextureEd_ini);
360       MainIni->WriteString("MassChangeOpts","MC_AS_Params_SecondTextureEd_ini",MC_AS_Params_SecondTextureEd_ini);
361       MainIni->WriteString("MassChangeOpts","MC_AS_Params_OffsetXEd_ini",MC_AS_Params_OffsetXEd_ini);
362       MainIni->WriteString("MassChangeOpts","MC_AS_Params_OffsetYEd_ini",MC_AS_Params_OffsetYEd_ini);
363      
364       MainIni->WriteInteger("Main","IniFileVer",4);
365       IniRealVer = 4;
366       MainIni->UpdateFile(); //Çàôèêñèðîâàòü èçìåíåíèÿ íà ñëó÷àé win9x.
367     };
368
369     if (IniRealVer == 4)
370     {
371       //[MassChangeOpts]
372       MC_AS_Obj_OnlyParamsRB_ini = Stand_MC_AS_Obj_OnlyParamsRB_ini;
373
374       MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_OnlyParamsRB_ini",MC_AS_Obj_OnlyParamsRB_ini);
375
376       MainIni->WriteInteger("Main","IniFileVer",5);
377       IniRealVer = 5;
378       MainIni->UpdateFile(); //Çàôèêñèðîâàòü èçìåíåíèÿ íà ñëó÷àé win9x.
379     };
380
381     if (IniRealVer == 5)
382     {
383       //[MassChangeOpts]
384       MC_KR_Param_PlayerNumberCB_ini = Stand_MC_KR_Param_PlayerNumberCB_ini;
385       MC_AS_Params_PlayerNumberCB_ini = Stand_MC_AS_Params_PlayerNumberCB_ini;
386       MC_KR_Param_PlayerNumberEd_ini = Stand_MC_KR_Param_PlayerNumberEd_ini;
387       MC_AS_Params_PlayerNumberEd_ini = Stand_MC_AS_Params_PlayerNumberEd_ini;
388
389       MainIni->WriteBool("MassChangeOpts","MC_KR_Param_PlayerNumberCB_ini",MC_KR_Param_PlayerNumberCB_ini);
390       MainIni->WriteBool("MassChangeOpts","MC_AS_Params_PlayerNumberCB_ini",MC_AS_Params_PlayerNumberCB_ini);
391       MainIni->WriteString("MassChangeOpts","MC_KR_Param_PlayerNumberEd_ini",MC_KR_Param_PlayerNumberEd_ini);
392       MainIni->WriteString("MassChangeOpts","MC_AS_Params_PlayerNumberEd_ini",MC_AS_Params_PlayerNumberEd_ini);
393
394       MainIni->WriteInteger("Main","IniFileVer",6);
395       IniRealVer = 6;
396       MainIni->UpdateFile(); //Çàôèêñèðîâàòü èçìåíåíèÿ íà ñëó÷àé win9x.
397     };
398
399   };
400
401   //Òåïåðü - ñîáñíî ïðî÷èòàòü :).
402   //[Main]
403   UseTMobThreads = MainIni->ReadBool("Main","UseTMobThreads",NULL);
404   SaveAttempts = MainIni->ReadInteger("Main","SaveAttempts",NULL);
405   WorkPath = MainIni->ReadString("Main","WorkPath",NULL);
406   MakeAutoBackups = MainIni->ReadBool("Main","MakeAutoBackups",NULL);
407   SearchStr = MainIni->ReadString("Main","SearchStr",NULL);
408   RepStr = MainIni->ReadString("Main","RepStr",NULL);
409   MakeReplace = MainIni->ReadBool("Main","MakeReplace",NULL);
410   //[MassChangeOpts]
411   MC_KR_Param_Name1CB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Param_Name1CB_ini",NULL);
412   MC_KR_Param_Name2CB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Param_Name2CB_ini",NULL);
413   MC_KR_Param_ScriptVariableNameCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Param_ScriptVariableNameCB_ini",NULL);
414   MC_KR_Param_Model3dCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Param_Model3dCB_ini",NULL);
415   MC_KR_Param_FirstTextureCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Param_FirstTextureCB_ini",NULL);
416   MC_KR_Param_SecondTextureCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Param_SecondTextureCB_ini",NULL);
417   MC_KR_Param_PlayerNumberCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Param_PlayerNumberCB_ini",NULL);
418   MC_KR_Coords_PramouglCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Coords_PramouglCB_ini",NULL);
419   MC_KR_Coords_KrugCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Coords_KrugCB_ini",NULL);
420   MC_KR_Type_UnitCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Type_UnitCB_ini",NULL);
421   MC_KR_Type_ObjectCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Type_ObjectCB_ini",NULL);
422   MC_KR_Type_LeverCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Type_LeverCB_ini",NULL);
423   MC_KR_Type_TrapCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Type_TrapCB_ini",NULL);
424   MC_KR_Type_FlameCB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Type_FlameCB_ini",NULL);
425   MC_KR_Type_Particle1CB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Type_Particle1CB_ini",NULL);
426   MC_KR_Type_Particle2CB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Type_Particle2CB_ini",NULL);
427   MC_KR_Type_Particle3CB_ini = MainIni->ReadBool("MassChangeOpts","MC_KR_Type_Particle3CB_ini",NULL);
428   MC_AS_Obj_DelRB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Obj_DelRB_ini",NULL);
429   MC_AS_Obj_CopyRB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Obj_CopyRB_ini",NULL);
430   MC_AS_Obj_MoveRB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Obj_MoveRB_ini",NULL);
431   MC_AS_Obj_ReplaceCB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Obj_ReplaceCB_ini",NULL);
432   MC_AS_Params_Name1CB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Params_Name1CB_ini",NULL);
433   MC_AS_Params_Name2CB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Params_Name2CB_ini",NULL);
434   MC_AS_Params_ScriptVariableNameCB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Params_ScriptVariableNameCB_ini",NULL);
435   MC_AS_Params_Model3dCB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Params_Model3dCB_ini",NULL);
436   MC_AS_Params_FirstTextureCB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Params_FirstTextureCB_ini",NULL);
437   MC_AS_Params_SecondTextureCB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Params_SecondTextureCB_ini",NULL);
438   MC_AS_Params_PlayerNumberCB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Params_PlayerNumberCB_ini",NULL);
439   MC_AS_Params_OffsetCB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Params_OffsetCB_ini",NULL);
440   MC_AS_Obj_OnlyParamsRB_ini = MainIni->ReadBool("MassChangeOpts","MC_AS_Obj_OnlyParamsRB_ini",NULL);
441   MC_KR_Param_Name1Ed_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Param_Name1Ed_ini",NULL);
442   MC_KR_Param_Name2Ed_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Param_Name2Ed_ini",NULL);
443   MC_KR_Param_ScriptVariableNameEd_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Param_ScriptVariableNameEd_ini",NULL);
444   MC_KR_Param_Model3dEd_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Param_Model3dEd_ini",NULL);
445   MC_KR_Param_FirstTextureEd_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Param_FirstTextureEd_ini",NULL);
446   MC_KR_Param_SecondTextureEd_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Param_SecondTextureEd_ini",NULL);
447   MC_KR_Param_PlayerNumberEd_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Param_PlayerNumberEd_ini",NULL);
448   MC_KR_Coords_Pramougl_X1Ed_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Coords_Pramougl_X1Ed_ini",NULL);
449   MC_KR_Coords_Pramougl_Y1Ed_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Coords_Pramougl_Y1Ed_ini",NULL);
450   MC_KR_Coords_Pramougl_X2Ed_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Coords_Pramougl_X2Ed_ini",NULL);
451   MC_KR_Coords_Pramougl_Y2Ed_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Coords_Pramougl_Y2Ed_ini",NULL);
452   MC_KR_Coords_Krug_XEd_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Coords_Krug_XEd_ini",NULL);
453   MC_KR_Coords_Krug_YEd_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Coords_Krug_YEd_ini",NULL);
454   MC_KR_Coords_Krug_RadEd_ini = MainIni->ReadString("MassChangeOpts","MC_KR_Coords_Krug_RadEd_ini",NULL);
455   MC_AS_Obj_TargetMobEd_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Obj_TargetMobEd_ini",NULL);
456   MC_AS_Params_Name1Ed_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_Name1Ed_ini",NULL);
457   MC_AS_Params_Name2Ed_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_Name2Ed_ini",NULL);
458   MC_AS_Params_ScriptVariableNameEd_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_ScriptVariableNameEd_ini",NULL);
459   MC_AS_Params_Model3dEd_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_Model3dEd_ini",NULL);
460   MC_AS_Params_FirstTextureEd_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_FirstTextureEd_ini",NULL);
461   MC_AS_Params_SecondTextureEd_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_SecondTextureEd_ini",NULL);
462   MC_AS_Params_OffsetXEd_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_OffsetXEd_ini",NULL);
463   MC_AS_Params_OffsetYEd_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_OffsetYEd_ini",NULL);
464   MC_AS_Params_PlayerNumberEd_ini = MainIni->ReadString("MassChangeOpts","MC_AS_Params_PlayerNumberEd_ini",NULL);
465 };
466
467 void SaveProgSetts()
468 //Ýòà ôóíêöèÿ ñàâèò íàñòðîéêè â èíèøíèê.
469 {
470   //Çàïèõàòü â èíèøíèê çíà÷åíèÿ :).
471   //[Main]
472   MainIni->WriteInteger("Main","IniFileVer",IniFileVer);
473   MainIni->WriteString("Main","LastProgrVer",VitInfo->GenerateDotsVersionString());  //Åòî âåðñèÿ ïðîãðàììû êîòîðàÿ "â ïðîøëûé ðàç" ñàâèëà ôàéë.
474   MainIni->WriteBool("Main","UseTMobThreads",UseTMobThreads);
475   MainIni->WriteInteger("Main","SaveAttempts",SaveAttempts);
476   MainIni->WriteString("Main","WorkPath",WorkPath);
477   MainIni->WriteBool("Main","MakeAutoBackups",MakeAutoBackups);
478   MainIni->WriteString("Main","SearchStr",SearchStr);
479   MainIni->WriteString("Main","RepStr",RepStr);
480   MainIni->WriteBool("Main","MakeReplace",MakeReplace);
481   //[MassChangeOpts]
482   MainIni->WriteBool("MassChangeOpts","MC_KR_Param_Name1CB_ini",MC_KR_Param_Name1CB_ini);
483   MainIni->WriteBool("MassChangeOpts","MC_KR_Param_Name2CB_ini",MC_KR_Param_Name2CB_ini);
484   MainIni->WriteBool("MassChangeOpts","MC_KR_Param_ScriptVariableNameCB_ini",MC_KR_Param_ScriptVariableNameCB_ini);
485   MainIni->WriteBool("MassChangeOpts","MC_KR_Param_Model3dCB_ini",MC_KR_Param_Model3dCB_ini);
486   MainIni->WriteBool("MassChangeOpts","MC_KR_Param_FirstTextureCB_ini",MC_KR_Param_FirstTextureCB_ini);
487   MainIni->WriteBool("MassChangeOpts","MC_KR_Param_SecondTextureCB_ini",MC_KR_Param_SecondTextureCB_ini);
488   MainIni->WriteBool("MassChangeOpts","MC_KR_Param_PlayerNumberCB_ini",MC_KR_Param_PlayerNumberCB_ini);
489   MainIni->WriteBool("MassChangeOpts","MC_KR_Coords_PramouglCB_ini",MC_KR_Coords_PramouglCB_ini);
490   MainIni->WriteBool("MassChangeOpts","MC_KR_Coords_KrugCB_ini",MC_KR_Coords_KrugCB_ini);
491   MainIni->WriteBool("MassChangeOpts","MC_KR_Type_UnitCB_ini",MC_KR_Type_UnitCB_ini);
492   MainIni->WriteBool("MassChangeOpts","MC_KR_Type_ObjectCB_ini",MC_KR_Type_ObjectCB_ini);
493   MainIni->WriteBool("MassChangeOpts","MC_KR_Type_LeverCB_ini",MC_KR_Type_LeverCB_ini);
494   MainIni->WriteBool("MassChangeOpts","MC_KR_Type_TrapCB_ini",MC_KR_Type_TrapCB_ini);
495   MainIni->WriteBool("MassChangeOpts","MC_KR_Type_FlameCB_ini",MC_KR_Type_FlameCB_ini);
496   MainIni->WriteBool("MassChangeOpts","MC_KR_Type_Particle1CB_ini",MC_KR_Type_Particle1CB_ini);
497   MainIni->WriteBool("MassChangeOpts","MC_KR_Type_Particle2CB_ini",MC_KR_Type_Particle2CB_ini);
498   MainIni->WriteBool("MassChangeOpts","MC_KR_Type_Particle3CB_ini",MC_KR_Type_Particle3CB_ini);
499   MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_DelRB_ini",MC_AS_Obj_DelRB_ini);
500   MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_CopyRB_ini",MC_AS_Obj_CopyRB_ini);
501   MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_MoveRB_ini",MC_AS_Obj_MoveRB_ini);
502   MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_ReplaceCB_ini",MC_AS_Obj_ReplaceCB_ini);
503   MainIni->WriteBool("MassChangeOpts","MC_AS_Params_Name1CB_ini",MC_AS_Params_Name1CB_ini);
504   MainIni->WriteBool("MassChangeOpts","MC_AS_Params_Name2CB_ini",MC_AS_Params_Name2CB_ini);
505   MainIni->WriteBool("MassChangeOpts","MC_AS_Params_ScriptVariableNameCB_ini",MC_AS_Params_ScriptVariableNameCB_ini);
506   MainIni->WriteBool("MassChangeOpts","MC_AS_Params_Model3dCB_ini",MC_AS_Params_Model3dCB_ini);
507   MainIni->WriteBool("MassChangeOpts","MC_AS_Params_FirstTextureCB_ini",MC_AS_Params_FirstTextureCB_ini);
508   MainIni->WriteBool("MassChangeOpts","MC_AS_Params_SecondTextureCB_ini",MC_AS_Params_SecondTextureCB_ini);
509   MainIni->WriteBool("MassChangeOpts","MC_AS_Params_OffsetCB_ini",MC_AS_Params_OffsetCB_ini);
510   MainIni->WriteBool("MassChangeOpts","MC_AS_Params_PlayerNumberCB_ini",MC_AS_Params_PlayerNumberCB_ini);
511   MainIni->WriteBool("MassChangeOpts","MC_AS_Obj_OnlyParamsRB_ini",MC_AS_Obj_OnlyParamsRB_ini);
512   MainIni->WriteString("MassChangeOpts","MC_KR_Param_Name1Ed_ini",MC_KR_Param_Name1Ed_ini);
513   MainIni->WriteString("MassChangeOpts","MC_KR_Param_Name2Ed_ini",MC_KR_Param_Name2Ed_ini);
514   MainIni->WriteString("MassChangeOpts","MC_KR_Param_ScriptVariableNameEd_ini",MC_KR_Param_ScriptVariableNameEd_ini);
515   MainIni->WriteString("MassChangeOpts","MC_KR_Param_Model3dEd_ini",MC_KR_Param_Model3dEd_ini);
516   MainIni->WriteString("MassChangeOpts","MC_KR_Param_FirstTextureEd_ini",MC_KR_Param_FirstTextureEd_ini);
517   MainIni->WriteString("MassChangeOpts","MC_KR_Param_SecondTextureEd_ini",MC_KR_Param_SecondTextureEd_ini);
518   MainIni->WriteString("MassChangeOpts","MC_KR_Param_PlayerNumberEd_ini",MC_KR_Param_PlayerNumberEd_ini);
519   MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Pramougl_X1Ed_ini",MC_KR_Coords_Pramougl_X1Ed_ini);
520   MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Pramougl_Y1Ed_ini",MC_KR_Coords_Pramougl_Y1Ed_ini);
521   MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Pramougl_X2Ed_ini",MC_KR_Coords_Pramougl_X2Ed_ini);
522   MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Pramougl_Y2Ed_ini",MC_KR_Coords_Pramougl_Y2Ed_ini);
523   MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Krug_XEd_ini",MC_KR_Coords_Krug_XEd_ini);
524   MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Krug_YEd_ini",MC_KR_Coords_Krug_YEd_ini);
525   MainIni->WriteString("MassChangeOpts","MC_KR_Coords_Krug_RadEd_ini",MC_KR_Coords_Krug_RadEd_ini);
526   MainIni->WriteString("MassChangeOpts","MC_AS_Obj_TargetMobEd_ini",MC_AS_Obj_TargetMobEd_ini);
527   MainIni->WriteString("MassChangeOpts","MC_AS_Params_Name1Ed_ini",MC_AS_Params_Name1Ed_ini);
528   MainIni->WriteString("MassChangeOpts","MC_AS_Params_Name2Ed_ini",MC_AS_Params_Name2Ed_ini);
529   MainIni->WriteString("MassChangeOpts","MC_AS_Params_ScriptVariableNameEd_ini",MC_AS_Params_ScriptVariableNameEd_ini);
530   MainIni->WriteString("MassChangeOpts","MC_AS_Params_Model3dEd_ini",MC_AS_Params_Model3dEd_ini);
531   MainIni->WriteString("MassChangeOpts","MC_AS_Params_FirstTextureEd_ini",MC_AS_Params_FirstTextureEd_ini);
532   MainIni->WriteString("MassChangeOpts","MC_AS_Params_SecondTextureEd_ini",MC_AS_Params_SecondTextureEd_ini);
533   MainIni->WriteString("MassChangeOpts","MC_AS_Params_OffsetXEd_ini",MC_AS_Params_OffsetXEd_ini);
534   MainIni->WriteString("MassChangeOpts","MC_AS_Params_OffsetYEd_ini",MC_AS_Params_OffsetYEd_ini);
535   MainIni->WriteString("MassChangeOpts","MC_AS_Params_PlayerNumberEd_ini",MC_AS_Params_PlayerNumberEd_ini);
536   MainIni->UpdateFile(); //Çàôèêñèðîâàòü èçìåíåíèÿ íà ñëó÷àé win9x.
537 };
538
539 bool OpenMobComm(const AnsiString FileName)
540 //Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè îòêðûòèè ìîáà.
541 {
542   //Ïåðåìåííûå
543   bool LoadResult = false, MakeLoad = false, NodeFound = false;
544   String FName;
545   int i, CurrNodeID;
546   TTreeNode *CurrNode;
547
548   if (FileName != "NULL")
549   {
550     //Åñëè â ïàðàìåòðå áûë ïåðåäàí ôàéë...
551     MakeLoad = true;
552     FName = FileName;
553   }
554   else
555   {
556     //Íàäî ñïðîñèòü ó þçâåðÿ...
557     //Çàäàòü ïóòü ïî êîòîðîìó èñêàòü ôàéë...
558     MainF->OpenDialog1->InitialDir = WorkPath;
559     if (MainF->OpenDialog1->Execute())
560     {
561       //Åñëè äèàëîã âûïîëíèëñÿ - ôàéë ìîæíî îòêðûâàòü.
562       FName = MainF->OpenDialog1->FileName;
563       MakeLoad = true;
564     };
565   };
566
567   if (MakeLoad == true)
568   {
569     //Åñëè ìîæíî îòêðûâàòü - òî íàäî îòêðûâàòü :).
570
571     //Ïðîâåðèòü, åñòü ëè òàêîé ôàéë...
572     if ( FileExists(FName) != true )
573     {
574       //Íåìà... à ìîæåò ôàéë áåç ðàñøèðåíèÿ?
575
576       if (ExtractFileExt(FName) == "")
577       {
578         //Äåéñòâèòåëüíî, íåìà ðàñøèðåíèÿ - äîáàâèì....
579         FName += ".mob";
580       };
581
582     };
583
584     if ( FileExists(FName) == true )
585     {
586       //Åñëè ôàéë ñóùåñòâóåò - íàäî ïîïûòàòüñÿ îòêðûòü.
587       // íà÷àëå - çàïîìíèòü èñïîëüçîâàííûé ïóòü :).
588       WorkPath = ExtractFilePath(FName);
589       SaveProgSetts();
590
591       //Çàêðûòü ñòàðûé ìîá.
592       if (CloseMobComm() == true)
593       {
594         MobInMem1->UsingThread = UseTMobThreads;  //Îòêðûâàòü ëè â îòäåëüíîé íèòêå.
595         MobInMem1->LogEd = MainF->LogEd;
596
597         //È ãðóçèòü ñ áëîêèðîâêîé èíòåðôåéñà...
598         if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf();
599         LoadResult = MobInMem1->LoadMob(FName);
600         if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf();
601
602         if (MobInMem1->UsingThread == false)
603         {
604           //Åñëè ãðóçèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã.
605           if (MainF->MainF_PK->ActivePage->Name == "LogSh")
606           {
607             MainF->LogEd->SetFocus();
608           };
609           MainF->LogEd->Lines->Add(MobInMem1->FullLogStr);
610         };
611
612         //Òèïà çàïîìíèòü èìÿ ôàéëà, åñëè çàãðóçêà áûëà óñïåøíîé...
613         if (LoadResult == true)
614         {
615           MobFileName = FName;
616           MobLoaded = true;  //È åññíî ïîìåòèòü ÷òî ìîá çàãðóæåí.
617           MobModified = false;   //Îòìåòèòü ÷òî ïîêà â ìîá èçìåíåíèé íå âíîñèëîñü.
618
619           //Çàãðóçèòü èíôó ìîáà â èíòåðôåéñ ïðîãè...
620
621           //Ñêðèïò.
622           MainF->ScriptEd->Lines->Clear();
623           MainF->ScriptEd->Text = MobInMem1->ScriptText;
624
625           //Îáúåêòû â ðåäàêòîð îáúåêòîâ...
626           MainF->MobObjectsChanged();
627         }//if (LoadResult == true)
628         else
629         {
630           //Åñëè çàãðóçèòüñÿ íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì.
631           MainF->MainF_PK->ActivePage = MainF->LogSh;
632         };
633       };//if (CloseMobComm() == true)
634     }//if ( FileExists(FName) == true )
635     else
636     {
637       //Åñëè íåìà òàêîãî ôàéëà.
638       //Ñêàæåì þçâåðþ îá åíòîì...
639       MainF->LogEd->Lines->Add("");
640       MainF->LogEd->Lines->Add("Íå óäàëîñü îáíàðóæèòü ôàéëî "+FName);
641       MainF->LogEd->Lines->Add("Òèïî àáëîì, íå çàãðóçèëîñÿ íèõåðà.");
642       MainF->MainF_PK->ActivePage = MainF->LogSh;
643     };
644
645     //Îáíîâèòü îñíîâíîé èíòåðôåéñ :).
646     MainF->UpdateMainInterf();
647
648   };
649
650   //Âåðíóòü ðåçóëüòàò
651   return LoadResult;
652 };
653
654 bool SaveMobComm()
655 //Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè ñåéâå ìîáà.
656 {
657   //Ïåðåìåííûå
658   bool Result = false;
659
660   //Äëÿ íà÷àëà ïðîâåðèì - åñòü ëè óæå ôàéë ìîáà ñ òàêèì èìåíåì...
661   if (FileExists(MobFileName) == true)
662   {
663     //Óæå åñòü ôàéë ñ òàêèì èìåíåì.
664     SaveInterfInfo();   //Ñîõðàíèòü èíôó èç èíòåðôåéñà...
665  
666     MobInMem1->UsingThread = UseTMobThreads;  //Ñåéâèòü ëè â îòäåëüíîé íèòêå.
667     MobInMem1->SaveAttempts = SaveAttempts;  //Êîëè÷åñòâî ïîïûòîê ñàâà ïîñëå ñáîÿ...
668     MobInMem1->LogEd = MainF->LogEd;
669     //È çàñàâèòü ñ áëîêèðîâêîé èíòåðôåéñà...
670     if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf();
671     //Åñëè íàäî äåëàòü áåêàïû - çàáåêàïèòü...
672     if (MakeAutoBackups == true) MakeAutoBackup(MobFileName);
673     Result = MobInMem1->SaveMob(MobFileName);
674     if (Result == true)
675     {
676       //Óñïåøíûé ñåéâ - îòìåòèòü ÷òî ìîá íå ìîäèôèöèðîâàí.
677       MainF->SetMobNotModified();
678     }
679     else
680     {
681       //Åñëè çàñàâèòü íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì.
682       MainF->MainF_PK->ActivePage = MainF->LogSh;
683     };
684     if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf();
685
686     if (MobInMem1->UsingThread == false)
687     {
688       //Åñëè ñàâèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã.
689       if (MainF->MainF_PK->ActivePage->Name == "LogSh")
690       {
691         MainF->LogEd->SetFocus();
692       };
693       MainF->LogEd->Lines->Add(MobInMem1->FullLogStr);
694     };
695   }
696   else
697   {
698     //Ôèãíÿ êàêàÿ-òî. Íåòó òàêîãî ôàéëà. Áóäåì ñîõðàíÿòü ïî ïðèíöèïó SaveAs.
699     Result = SaveAsMobComm();
700   };
701
702   //Âåðíóòü ðåçóëüòàò.
703   return Result;
704 };
705
706 bool SaveAsMobComm()
707 //Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè ïîïûòêå ñîõðàíèòü ìîá ïîä äðóãèì èìåíåì.
708 {
709
710   bool ManipResult = false;
711   bool AllOk = true;
712
713   //Çàäàòü íà÷àëüíûé ïóòü...
714   MainF->OpenDialog1->InitialDir = WorkPath;
715   if (MainF->SaveDialog1->Execute())
716   {
717     //Åñëè þçâåðü óêàçàë èìÿ ôàéëà â äèàëîãå ñîõðàíåíèÿ.
718     String FName = MainF->SaveDialog1->FileName;
719     //Çàïîìíèòü èñïîëüçîâàííûé ïóòü :).
720     WorkPath = ExtractFilePath(FName);
721     SaveProgSetts();
722
723     //Ïðîâåðèòü åñòü ëè ó èìåíè ôàéëà ðàñøèðåíèå...
724     if ( ExtractFileExt(FName) == "" )
725     {
726       //Íåìà ðàñøèðåíèÿ - íàäî äîáàâèòü...
727       FName += ".mob";
728     };
729
730     if (FileExists(FName) == true)
731     {
732       //Ñïðîñèòü ó þçâåðÿ, äåéñòâèòåëüíî ëè îí õî÷åò ïåðåçàïèñàòü ýòîò ôàéë...
733       if (MessageBox(Application->Handle,("Óêàçàííûé Âàìè ôàéë "+FName+" óæå ñóùåñòâóåò. Ïåðåçàïèñàòü åãî?").c_str(),MobSurgeon_AppName.c_str(),MB_YESNO|MB_ICONWARNING) == ID_YES)
734       {
735         //Þçâåðü ðàçðåøèë ïåðåçàïèñü. Êëàññ ìîáà ñàì âñå ïåðåçàïèøåò - ïðîñòî äåëàåì ñåéâ :)
736       }
737       else
738       {
739         //Åñëè íå ðàçðåøèë - ñòàâèì çàïðåò:
740         AllOk = false;
741       };
742     };
743
744     if (AllOk == true)
745     {
746       //Åñëè âñå â ïîðÿäêå - ìîæíî ñåéâèòü.
747       SaveInterfInfo();   //Ñîõðàíèòü èíôó èç èíòåðôåéñà...
748       MobInMem1->UsingThread = UseTMobThreads;  //Ñàâèòü ëè â îòäåëüíîé íèòêå.
749       MobInMem1->SaveAttempts = SaveAttempts;  //Êîëè÷åñòâî ïîïûòîê ñàâà ïîñëå ñáîÿ...
750       MobInMem1->LogEd = MainF->LogEd;
751       //È çàñàâèòü ñ áëîêèðîâêîé èíòåðôåéñà...
752       if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf();
753       //Åñëè íàäî äåëàòü áåêàïû - çàáåêàïèòü...
754       if (MakeAutoBackups == true) MakeAutoBackup(FName);
755       ManipResult = MobInMem1->SaveMob(FName);
756       if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf();
757
758       if (ManipResult == true)
759       {
760         //Åñëè ñåéâ áûë óñïåøíûì - çàïîìíèòü íîâîå èìÿ ìîáà.
761         MobFileName = FName;
762         //Îòìåòèòü ÷òî ìîá íå ìîäèôèöèðîâàí è îáíîâèòü èíòåðôåéñ.
763         MainF->SetMobNotModified();
764       }
765       else
766       {
767         //Åñëè çàñàâèòü íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì.
768         MainF->MainF_PK->ActivePage = MainF->LogSh;
769       };
770
771       if (MobInMem1->UsingThread == false)
772       {
773         //Åñëè ñàâèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã.
774         if (MainF->MainF_PK->ActivePage->Name == "LogSh")
775         {
776           MainF->LogEd->SetFocus();
777         };
778         MainF->LogEd->Lines->Add(MobInMem1->FullLogStr);
779       };
780      
781     };
782
783   };
784
785   //Âåðíóòü ðåçóëüòàò
786   return ManipResult;
787 };
788
789 bool CloseMobComm()
790 //Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè çàêðûòèè ìîáà.
791 {
792   //Ïåðåìåííûå
793   int QuestionAnswer;
794   bool AllOk = true, Result = false;
795
796   if (MobLoaded == true)
797   {
798     //Åñëè åñòü ÷åãî çàêðûâàòü åññíî ).
799     if (MobModified == true)
800     {
801       //Ìîá áûë èçìåíåí - ñïðîñèòü ÷åãî äåëàòü.
802       QuestionAnswer = MessageBox(Application->Handle,("Ôàéë "+ExtractFileName(MobFileName)+" íå áûë ñîõðàíåí. Ñîõðàíèòü åãî ïåðåä çàêðûòèåì?").c_str(),MobSurgeon_AppName.c_str(),MB_YESNOCANCEL|MB_ICONQUESTION);
803       //Òåïåðü â çàâèñèìîñòè îò îòâåòà...
804       if (QuestionAnswer == IDYES)
805       {
806         //Ñêàçàíî ñîõðàíèòü - ñîõðàíèì ìîá...
807         do
808         {
809           AllOk = SaveMobComm();
810           if (AllOk == false)
811           {
812             //Ïî êàêîé-ëèáî ïðè÷èíå ñîõðàíèòü ôàéë íå óäàëîñü - ñïðîñèì ÷åãî äåëàòü.
813             QuestionAnswer = MessageBox(Application->Handle,("Ôàéë "+ExtractFileName(MobFileName)+" ñîõðàíèòü íå óäàëîñü. Ïîâòîðèòü ïîïûòêó?").c_str(),MobSurgeon_AppName.c_str(),MB_YESNOCANCEL|MB_ICONERROR);
814             //Ñìîòðèì ÷åãî îòâåòèëè.
815             //IDYES - íè÷åãî íå äåëàòü ò.ê. AllOk == false è çíà÷èò áóäåò åùå 1 ïîïûòêà ñåéâà.
816             if (QuestionAnswer == IDNO)
817             {
818               //Çàáèòü è ïðîäîëæèòü.
819               AllOk = true;
820             }
821             else if (QuestionAnswer == IDCANCEL)
822             {
823               //Çàáèòü è îòìåíèòü.
824               AllOk = true;
825               Result = true;  //Âðåìåííî ïîëüçóåìñÿ ïåðåìåííîé íå ïî íàçíà÷åíèþ - ðåçàëüò çäåñü äîëæíà áûòü åùå false è ýòî ïðèçíàê íåíîðìàëüíîñòè, íà êîòîðóþ íèæå ñðåàãèðóþò.
826             };
827           };
828         } while (AllOk == false);
829
830         if ((AllOk == true) && (Result == true))
831         {
832           //×åãî-òî íå òàê - ýòî ïðèçíàê ÷òî AllOk íà ñàìîì äåëå false.
833           //Âåðíåì âñå êàê åñòü.
834           AllOk = false;
835           Result = false;
836         };
837       }
838       else if (QuestionAnswer == IDCANCEL)
839       {
840         //Ñêàçàíî îòìåíèòü - âñå îòìåíÿåì íàôåã.
841         AllOk = false;
842       };
843     };//if (MobModified == true)
844
845     //Ñìîòðèì - åñëè âñå â ïîðÿäêå - çàêðûâàåì ìîá.
846     if (AllOk == true)
847     {
848       //Ñîáñíî çàêðûâàåì.
849       MobInMem1->UnloadMob();
850       MobLoaded = false;
851       MobModified = false;
852       MobFileName = "";
853       //Îáíîâèòü èíòåðôåéñ ïðîãè...
854       MainF->ScriptEd->Lines->Clear();
855       MainF->MobObjectsChanged();
856       MainF->UpdateMainInterf();
857       //Done.
858       Result = true;
859     };
860   }//if (MobLoaded == true)
861   else
862   {
863     //Åñëè ìîá íå áûë çàãðóæåí - ñ÷èòàòü ÷òî ðåçóëüòàò true.
864     Result = true;
865   };
866
867   //Âåðíóòü ðåçóëüòàò
868   return Result;
869 };
870
871 void SaveInterfInfo()
872 //Ýòà ôóíêöèÿ ñîõðàíÿåò èíôó èç èíòåðôåéñà â êëàññ ìîáà...
873 {
874   //Ñîõðàíèòü ñêðèïò...
875   MobInMem1->ScriptText = Win2UnixLBText(MainF->ScriptEd->Text);
876 };
877
878 AnsiString ExtractFileNameNoExt(const AnsiString FileName)
879 //Ïîëó÷àåò èìÿ ôàéëà áåç ðàñøèðåíèÿ.
880 {
881   AnsiString TempStr1, TempStr2, Result;
882   TempStr1 = ExtractFileName(FileName);
883   TempStr2 = ExtractFileExt(FileName);
884   Result.SetLength(TempStr1.Length()-TempStr2.Length());
885   memcpy(&Result[1],&TempStr1[1],TempStr1.Length()-TempStr2.Length());
886   return Result;
887 };
888
889 void MakeUserBackup(const AnsiString FileName)
890 //Äåëàåò ñîçíàòåëüíûé áåêàï.
891 {
892   AnsiString BackupFileName = "";
893   bool AllowOverwrite = false, AllOk = true;
894
895   // íà÷àëå - ñãåíåðèòü èìÿ äëÿ áåêàïíîãî ôàéëà.
896   BackupFileName = FileName + ".bak.mob";
897
898   //Ïðîâåðèòü, ñóùåñòâóåò ëè óæå òàêîé ôàéë...
899   if (FileExists(BackupFileName) == true)
900   {
901     if (MessageBox(Application->Handle,("Ôàéë "+BackupFileName+" óæå ñóùåñòâóåò. Ïåðåçàïèñàòü åãî?").c_str(),MobSurgeon_AppName.c_str(),MB_YESNO|MB_ICONWARNING) == ID_YES)
902     {
903       //Þçâåðü ðàçðåøèë ïåðåçàïèñü.
904       AllowOverwrite = true;
905     }
906
907     else AllOk = false;
908   };
909   //Åñëè âñå îê òî ñêîïèðîâàòü áåêàïèðóåìûé ôàéë :).
910   if (AllOk == true)
911   {
912     if (CopyFile(FileName.c_str(),BackupFileName.c_str(),!AllowOverwrite) == true)
913     {
914       // ñëó÷àå óäà÷íîãî áåêàïà - âûâåñòè â ëîã èíôó î òèïà óñïåõå :).
915       MainF->LogEd->Lines->Add("------------------------------");
916       MainF->LogEd->Lines->Add("Óñïåøíî ñäåëàí áåêàï â ôàéë "+BackupFileName);
917       MainF->LogEd->Lines->Add("");
918
919     }
920     else
921     {
922       // ñëó÷å íåóäà÷è - íå òîëüêî âûâåñòè èíôó â ëîã, íî è ïîêàçàòü òàá ñ ëîãîì.
923       MainF->LogEd->Lines->Add("------------------------------");
924       MainF->LogEd->Lines->Add("Ñäåëàòü áåêàï â ôàéë "+BackupFileName+" íå óäàëîñü!");
925       MainF->LogEd->Lines->Add("");
926       MainF->MainF_PK->ActivePage = MainF->LogSh;
927     };
928   }
929   else
930   {
931     MainF->LogEd->Lines->Add("------------------------------");
932     MainF->LogEd->Lines->Add("Áåêàï â ôàéë "+BackupFileName+" îòìåíåí!");
933     MainF->LogEd->Lines->Add("");
934   };
935 };
936
937 void MakeAutoBackup(const AnsiString FileName)
938 //Äåëàåò àâòîìàòè÷åñêèé áåêàï.
939 {
940   AnsiString BackupFileName = "";
941
942   // íà÷àëå - ñãåíåðèòü èìÿ äëÿ áåêàïíîãî ôàéëà.
943   BackupFileName = FileName + ".auto.bak.mob";
944
945   //Ñêîïèðîâàòü áåêàïèðóåìûé ôàéë :).
946   if (CopyFile(FileName.c_str(),BackupFileName.c_str(),false) == true)
947   {
948     // ñëó÷àå óäà÷íîãî áåêàïà - âûâåñòè â ëîã èíôó î òèïà óñïåõå :).
949     MainF->LogEd->Lines->Add("------------------------------");
950     MainF->LogEd->Lines->Add("Óñïåøíî ñäåëàí áåêàï â ôàéë "+BackupFileName);
951     MainF->LogEd->Lines->Add("");
952
953   }
954   else
955   {
956     // ñëó÷å íåóäà÷è - íå òîëüêî âûâåñòè èíôó â ëîã, íî è ïîêàçàòü òàá ñ ëîãîì.
957     MainF->LogEd->Lines->Add("------------------------------");
958     MainF->LogEd->Lines->Add("Ñäåëàòü áåêàï â ôàéë "+BackupFileName+" íå óäàëîñü!");
959     MainF->LogEd->Lines->Add("");
960     MainF->MainF_PK->ActivePage = MainF->LogSh;
961   };
962 };
963
964
965 //////////////////////////////////////////
966 //       Äîïîëíèòåëüíûå ôóíêöèè         //
967 //////////////////////////////////////////
968
969 AnsiString Win2UnixLBText(AnsiString& InputStr)
970 //Êîíâåðòèò òåêñò â ñòðîêå ÷òîá òàì áûë þíèõîâûé òèï ïåðåíîñà ñòðîê...
971 {
972   //Ïåðåìåííûå
973   AnsiString Result = "";
974   __int64 i = 0, j = 0;
975
976   if (InputStr.Length() != 0)
977   {
978     //Åñëè â ñòðîêå ÷åãîòî åñòü - ïåðåêðîìñàòü åå íàõ :).
979     Result.SetLength(InputStr.Length());
980     do
981     {
982       i = i+1;
983       if (InputStr[i] != char(0x0D))
984       {
985         j = j+1;
986         memcpy(&Result[j],&InputStr[i],1);
987       };
988     }
989     while (i != InputStr.Length());
990     Result.SetLength(j);
991   };
992
993   //Ñîáñíî âåðíóòü òî ÷òî ïîëó÷èëîñÿ :).
994   return Result;
995 };
996
997 bool CheckMCFormValues()
998 //Ïðîâåðÿåò ïðàâèëüíîñòü ââåäåííûõ íàñòðîåê ìàññ÷åíäæà.
999 {
1000   const String RugVirazh="Òàâàðèùñ÷ êàìàíäèð, øîæ âû äåëàåòå òî? Íåïðàâèëüíî ââåäåíî çíà÷åíèå ïîëÿ ";
1001   //Ïåðåìåííûå
<