source: OniTrainer/current/Unit1.pas@ 1194

Last change on this file since 1194 was 251, checked in by alloc, 17 years ago
File size: 22.8 KB
Line 
1UNIT Unit1;
2INTERFACE
3USES
4 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
5 Dialogs, StdCtrls, ExtCtrls, ComCtrls, StrUtils, Menus, Registry, Math, Buttons,
6 Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9,
7 Unit10, Unit11, Unit12, Unit13, Unit14, Unit15;
8
9TYPE
10 TForm1 = Class(TForm)
11 connect_timer: TTimer;
12 InitStuff: TTimer;
13 not_running: TLabel;
14 get_values: TTimer;
15 Menu: TMainMenu;
16 Menu_Main: TMenuItem;
17 Menu_AOT: TMenuItem;
18 Menu_Exit: TMenuItem;
19 Menu_Options: TMenuItem;
20 Menu_SetHotKeys: TMenuItem;
21 Menu_FreezeTime: TMenuItem;
22 Menu_Windows: TMenuItem;
23 Menu_Chars: TMenuItem;
24 Menu_Items: TMenuItem;
25 Menu_About: TMenuItem;
26 Menu_RefreshTime: TMenuItem;
27 Patches1: TMenuItem;
28 Menu_Patch_Scriptvars: TMenuItem;
29 Menu_Patch_Movements: TMenuItem;
30 Menu_Patch_Messages: TMenuItem;
31 menu_Anims: TMenuItem;
32 menu_Models: TMenuItem;
33 menu_Spawn: TMenuItem;
34 procedure menu_SpawnClick(Sender: TObject);
35 procedure menu_ModelsClick(Sender: TObject);
36 procedure menu_AnimsClick(Sender: TObject);
37 PROCEDURE Menu_Patch_MovementsClick(Sender: TObject);
38 PROCEDURE Menu_Patch_MessagesClick(Sender: TObject);
39 PROCEDURE Menu_Patch_ScriptvarsClick(Sender: TObject);
40 PROCEDURE Menu_SetHotKeysClick(Sender: TObject);
41 PROCEDURE FormCreate(Sender: TObject);
42 PROCEDURE Menu_AboutClick(Sender: TObject);
43 PROCEDURE Menu_FreezeTimeClick(Sender: TObject);
44 PROCEDURE Menu_RefreshTimeClick(Sender: TObject);
45 PROCEDURE get_valuesTimer(Sender: TObject);
46 PROCEDURE InitStuffTimer(Sender: TObject);
47 PROCEDURE Menu_CharsClick(Sender: TObject);
48 PROCEDURE Menu_ExitClick(Sender: TObject);
49 PROCEDURE Menu_AOTClick(Sender: TObject);
50 PROCEDURE connect_timerTimer(Sender: TObject);
51 PROCEDURE Form1Close(Sender: TObject; var Action: TCloseAction);
52 PROCEDURE Menu_AnyCharClick(Sender: TObject);
53 PROCEDURE Menu_CharOverview(Sender: TObject);
54 PROCEDURE Debug_Click(Sender: TObject);
55 PROCEDURE OpenCloseClick(Sender: TObject);
56 PRIVATE
57 PROCEDURE WMHotKey(VAR Msg : TWMHotKey); MESSAGE WM_HOTKEY;
58 PUBLIC
59 END;
60
61VAR
62 Form1: TForm1;
63 CharForms: Array[0..ais_controlled] OF TCharForm;
64 CharMenus: Array[0..ais_controlled] OF TMenuItem;
65 CharOverviewMenu: TMenuItem;
66
67IMPLEMENTATION
68
69{$R *.dfm}
70
71PROCEDURE TForm1.Menu_AOTClick(Sender: TObject);
72 VAR i:Byte;
73 BEGIN
74 IF Form1.Menu_AOT.Checked THEN BEGIN
75 SetWindowAOT(Form1.Handle,False);
76 FOR i:=0 TO ais_controlled DO SetWindowAOT(CharForms[i].Handle,False);
77 SetWindowAOT(Form5.Handle,False);
78 SetWindowAOT(Form6.Handle,False);
79 SetWindowAOT(Form7.Handle,False);
80 SetWindowAOT(Form9.Handle,False);
81 SetWindowAOT(Form10.Handle,False);
82 Form1.Menu_AOT.Checked:=False;
83 END ELSE BEGIN
84 SetWindowAOT(Form1.Handle,True);
85 FOR i:=0 TO ais_controlled DO SetWindowAOT(CharForms[i].Handle,True);
86 SetWindowAOT(Form5.Handle,True);
87 SetWindowAOT(Form6.Handle,True);
88 SetWindowAOT(Form7.Handle,True);
89 SetWindowAOT(Form9.Handle,True);
90 SetWindowAOT(Form10.Handle,True);
91 Form1.Menu_AOT.Checked:=True;
92 END;
93 END;
94
95PROCEDURE TForm1.Menu_ExitClick(Sender: TObject);
96 BEGIN
97 Close;
98 END;
99
100PROCEDURE TForm1.Form1Close(Sender: TObject; var Action: TCloseAction);
101 BEGIN
102 UnregisterHotkey(Form1.Handle,1234);
103 Form9.UnregisterHotkeys;
104 CloseHandle(_ProcessHandle);
105
106 AssignFile(HotKeysFile,_path+'\hotkeys.cfg');
107 Reset(HotKeysFile);
108 Write(HotKeysFile,HotKeys);
109 CloseFile(HotKeysFile);
110 END;
111
112PROCEDURE TForm1.connect_timerTimer(Sender: TObject);
113 VAR temp:byte_array;
114 i:byte;
115 _height:Word;
116 BEGIN
117 IF _Connected=False THEN BEGIN
118 IF ConnectToProcess=True THEN BEGIN
119 _Connected:=True;
120 Menu_Windows.Enabled:=True;
121 not_running.Visible:=False;
122 IF menu_Anims.Checked THEN Form4.Visible:=False;
123 FOR i:=0 TO ais_controlled DO BEGIN
124 IF CharMenus[i].Checked THEN CharForms[i].Visible:=True;
125 END;
126// IF Menu_Messages.Checked THEN Form4.Visible:=True;
127 _height:=0;
128 FOR i:=1 TO number_main_groups DO BEGIN
129 _height:=_height+MainGroups[i].Count*16+20;
130 MainGroups[i].Item.Visible:=True;
131 END;
132 Form1.Height:=_height+44;
133 Form9.DrawTable;
134 END;
135 END ELSE BEGIN
136 temp:=ReadMem($10F50, 4);
137 IF temp[250]=123 THEN BEGIN
138 _Connected:=False;
139 Form1.Caption:='OniTrainer v'+version;
140 lvlnumber:=0;
141 Menu_Windows.Enabled:=False;
142 not_running.Visible:=True;
143 FOR i:=0 TO ais_controlled DO BEGIN
144 CharForms[i].Visible:=False;
145 END;
146 FOR i:=1 TO number_main_groups DO BEGIN
147 MainGroups[i].Item.Visible:=False;
148 END;
149 Form4.Visible:=False;
150 Form7.Visible:=False;
151// Form4.Visible:=False;
152 Form1.Height:=73;
153 Form9.UnregisterHotkeys;
154 END;
155 END;
156 END;
157
158PROCEDURE TForm1.Menu_AnyCharClick(Sender: TObject);
159 VAR charnumber:Byte;
160 BEGIN
161 charnumber:=StrToInt(MidStr(TMenuItem(Sender).Name, 5, 10));
162 IF CharMenus[charnumber].Checked=False THEN BEGIN
163 CharMenus[charnumber].Checked:=True;
164 CharForms[charnumber].Visible:=True;
165 END ELSE BEGIN
166 CharMenus[charnumber].Checked:=False;
167 CharForms[charnumber].Visible:=False;
168 END;
169 END;
170
171PROCEDURE TForm1.Menu_CharOverview(Sender: TObject);
172 BEGIN
173 IF CharOverviewMenu.Checked THEN BEGIN
174 CharOverviewMenu.Checked:=False;
175 Form7.Visible:=False;
176 END ELSE BEGIN
177 CharOverviewMenu.Checked:=True;
178 Form7.Visible:=True;
179 END;
180 END;
181
182PROCEDURE TForm1.Menu_CharsClick(Sender: TObject);
183 VAR i,j:Byte;
184 _top:Word;
185 tempitem:TMenuItem;
186 BEGIN
187 IF _charformsinitialized=False THEN BEGIN
188 _charformsinitialized:=True;
189 FOR i:=0 TO High(CharMenus) DO BEGIN
190 CharMenus[i]:=TMenuItem.Create(Self);
191 CharMenus[i].Name:='Char'+IntToStr(i);
192 IF i=0 THEN CharMenus[i].Caption:='&Player'
193 ELSE BEGIN
194 IF i<10 THEN CharMenus[i].Caption:='AI&'+IntToStr(i);
195 IF i=10 THEN CharMenus[i].Caption:='AI1&0';
196 IF i>10 THEN CharMenus[i].Caption:='AI'+IntToStr(i);
197 END;
198 IF i=0 THEN BEGIN
199 Menu.Items.Find('Windows').Find('Characters').Add(CharMenus[i]);
200 tempitem:=TMenuItem.Create(Self);
201 tempitem.Caption:='-';
202 tempitem.Name:='spacer';
203 Menu.Items.Find('Windows').Find('Characters').Add(tempitem);
204 CharOverviewMenu:=TMenuItem.Create(Self);
205 CharOverviewMenu.Name:='CharOverviewMenu';
206 CharOverviewMenu.Caption:='&CharOverview';
207 CharOverviewMenu.OnClick:=Menu_CharOverview;
208 CharOverviewMenu.ShortCut:=ShortCut(Word('O'),[ssCtrl]);
209 Menu.Items.Find('Windows').Find('Characters').Add(CharOverviewMenu);
210 END ELSE BEGIN
211 IF ((i-1) MOD 10)=0 THEN BEGIN
212 CharMenus[i].Break:=mbBarBreak;
213 END;
214 Menu.Items.Find('Windows').Find('Characters').Add(CharMenus[i]);
215 END;
216 CharMenus[i].OnClick:=Menu_AnyCharClick;
217 END;
218 FOR i:=0 TO ais_controlled DO BEGIN
219 Application.CreateForm(TCharForm,CharForms[i]);
220 CharForms[i].Name:='Char'+IntToStr(i);
221 IF i=0 THEN CharForms[i].Caption:='Player (Char'+IntToStr(i)+')'
222 ELSE CharForms[i].Caption:='AI'+IntToStr(i)+' (Char'+IntToStr(i)+')';
223 FOR j:=1 TO number_char_groups DO BEGIN
224 WITH CharGroups[i][j] DO BEGIN
225 name:=CharGroupsStuff[j].name;
226 Count:=0;
227 Item:=TGroupbox.Create(CharForms[i]);
228 Item.Caption:=name;
229 Item.Name:='Group'+IntToStr(j);
230 Item.Width:=CharForms[i].Width-6;
231 CharForms[i].InsertControl(Item);
232 OpenClose:=TSpeedButton.Create(Item);
233 OpenClose.AllowAllUp:=True;
234 OpenClose.GroupIndex:=j;
235 OpenClose.Flat:=True;
236 OpenClose.Glyph.LoadFromResourceName(HInstance,'ARROWS');
237 OpenClose.Layout:=blGlyphTop;
238 OpenClose.Margin:=0;
239 OpenClose.NumGlyphs:=4;
240 OpenClose.Transparent:=False;
241 OpenClose.Name:='OpenClose'+IntToStr(j);
242 OpenClose.Top:=0;
243 OpenClose.Left:=Item.Width-20;
244 OpenClose.Height:=13;
245 OpenClose.Width:=17;
246 OpenClose.OnClick:=CharForms[i].OpenCloseClick;
247 Item.InsertControl(OpenClose);
248 END;
249 END;
250 WITH CharData[i] DO BEGIN
251 FOR j:=1 TO number_items DO BEGIN
252 WITH Items[j] DO BEGIN
253 struct:=CharDataStuff[j].struct;
254 offset:=CharDataStuff[j].offset;
255 data_type:=CharDataStuff[j].data_type;
256 range:=CharDataStuff[j].range;
257 group:=CharDataStuff[j].group;
258 Inc(CharGroups[i][group].Count);
259 name:=CharDataStuff[j].name;
260 hint:=CharDataStuff[j].hint;
261 Item_Freeze:=TCheckBox.Create(CharGroups[i][group].Item);
262 Item_Freeze.Caption:=name;
263 Item_Freeze.Hint:=hint;
264 Item_Freeze.ShowHint:=True;
265 Item_Freeze.Name:='Char'+IntToStr(j);
266 Item_Freeze.Height:=19;
267 Item_Freeze.Top:=CharGroups[i][group].Count*19-4;
268 Item_Freeze.Left:=4;
269 Item_Freeze.Width:=220;
270 CharGroups[i][group].Item.InsertControl(Item_Freeze);
271 Item_Edit:=TEdit.Create(CharGroups[i][group].Item);
272 Item_Edit.AutoSize:=False;
273 Item_Edit.Hint:=hint;
274 Item_Edit.ShowHint:=True;
275 Item_Edit.Name:='Edit'+IntToStr(j);
276 Item_Edit.Top:=CharGroups[i][group].Count*19-5;
277 Item_Edit.Left:=230;
278 Item_Edit.Height:=18;
279 Item_Edit.Width:=CharGroups[i][group].Item.Width-Item_Edit.Left-4;
280 Item_Edit.OnChange:=CharForms[i].EditClick;
281 //Item_Edit.Text:=IntToStr(Decode_Int(ReadMem(edit_address, 1)));
282 CharGroups[i][group].Item.InsertControl(Item_Edit);
283 END;
284 END;
285 END;
286 _top:=1;
287 FOR j:=1 TO number_char_groups DO BEGIN
288 WITH CharGroups[i][j] DO BEGIN
289 Item.Top:=_top;
290 Item.Height:=Count*19+20;
291 _top:=_top+Item.Height;
292 END;
293 END;
294 CharForms[i].memo.Top:=_top+4;
295 CharForms[i].memo.Width:=CharForms[i].Width-8;
296 CharForms[i].Height:=CharForms[i].memo.Top+charforms[i].memo.height+26;
297 END;
298 Application.CreateForm(TForm9, Form9);
299 END;
300 END;
301
302PROCEDURE TForm1.Debug_Click(Sender: TObject);
303 VAR debugnumber:Byte;
304 bytes:Byte;
305 tempint:integer;
306 tempfloat:single;
307 buffer:byte_array;
308 BEGIN
309 debugnumber:=StrToInt(MidStr(TComponent(Sender).Name, 6, 10));
310 IF MidStr(TComponent(Sender).Name, 1, 5)='DEdit' THEN BEGIN
311 WITH Settings[debugnumber] DO BEGIN
312 IF NOT updating THEN BEGIN
313 CASE edit_type OF
314 1..4:BEGIN
315 bytes:=edit_type;
316 IF TryStrToInt(TEdit(Sender).Text,tempint) THEN BEGIN
317 IF tempint>=Floor(Power(256,bytes)) THEN tempint:=Floor(Power(256,bytes))-1;
318 IF tempint<0 THEN tempint:=0;
319 TEdit(Sender).Text:=IntToStr(tempint);
320 WriteMem(edit_address,bytes,Encode_Int(tempint));
321 END;
322 END;
323 5: BEGIN
324 bytes:=4;
325 IF TryStrToFloat(TEdit(Sender).Text,tempfloat) THEN BEGIN
326 IF Pos('(degrees)',TEdit(Sender).hint)>0 THEN tempfloat:=tempfloat*pi/180;
327 WriteMem(edit_address,bytes,Encode_Float(tempfloat));
328 END;
329 END;
330 6: BEGIN
331 bytes:=Length(TEdit(Sender).Text)+1;
332 WriteMem(edit_address,bytes,Encode_Str(TEdit(Sender).Text,bytes));
333 END;
334 END;
335 END;
336 END;
337 END ELSE BEGIN
338 IF Settings[debugnumber].Item_Checkbox.Checked=False THEN BEGIN
339 buffer[0]:=0;
340 WriteMem(Settings[debugnumber].Address,1,buffer);
341 END ELSE BEGIN
342 buffer[0]:=1;
343 WriteMem(Settings[debugnumber].Address,1,buffer);
344 END;
345 END;
346 END;
347
348PROCEDURE Create_Settings_Array;
349 VAR i:Byte;
350 _top:Word;
351 BEGIN
352 IF _charformsinitialized=False THEN BEGIN
353 FOR i:=1 TO number_main_groups DO BEGIN
354 WITH MainGroups[i] DO BEGIN
355 name:=MainGroupsStuff[i].name;
356 Count:=0;
357 Item:=TGroupbox.Create(Form1);
358 Item.Caption:=name;
359 Item.Name:='Group'+IntToStr(i);
360 Item.Width:=Form1.Width-6;
361 Item.Visible:=False;
362 Form1.InsertControl(Item);
363 OpenClose:=TSpeedButton.Create(Item);
364 OpenClose.AllowAllUp:=True;
365 OpenClose.GroupIndex:=i;
366 OpenClose.Flat:=True;
367 OpenClose.Glyph.LoadFromResourceName(HInstance,'ARROWS');
368 OpenClose.Layout:=blGlyphTop;
369 OpenClose.Margin:=0;
370 OpenClose.NumGlyphs:=4;
371 OpenClose.Transparent:=False;
372 OpenClose.Name:='OpenClose'+IntToStr(i);
373 OpenClose.Top:=0;
374 OpenClose.Left:=Item.Width-20;
375 OpenClose.Height:=13;
376 OpenClose.Width:=17;
377 OpenClose.OnClick:=Form1.OpenCloseClick;
378 Item.InsertControl(OpenClose);
379 END;
380 END;
381 FOR i:=1 TO number_settings DO BEGIN
382 WITH Settings[i] DO BEGIN
383 address:=SettingsStuff[i].address;
384 group:=SettingsStuff[i].group;
385 has_box:=SettingsStuff[i].has_box;
386 has_edit:=SettingsStuff[i].has_edit;
387 Inc(MainGroups[group].Count);
388 Item_Checkbox:=TCheckBox.Create(MainGroups[group].Item);
389 Item_Checkbox.Caption:=SettingsStuff[i].caption;
390 IF has_box THEN BEGIN
391 Item_Checkbox:=TCheckBox.Create(MainGroups[group].Item);
392 Item_Checkbox.Caption:=SettingsStuff[i].caption;
393 Item_Checkbox.hint:=SettingsStuff[i].hint;
394 Item_Checkbox.ShowHint:=True;
395 Item_Checkbox.Name:='Debug'+IntToStr(i);
396 Item_Checkbox.Height:=16;
397 Item_Checkbox.Top:=MainGroups[group].Count*16-4;
398 Item_Checkbox.Left:=8;
399 Item_Checkbox.Width:=170;
400 Item_Checkbox.OnClick:=Form1.Debug_Click;
401 MainGroups[group].Item.InsertControl(Item_Checkbox);
402 END ELSE BEGIN
403 Item_Label:=TLabel.Create(MainGroups[group].Item);
404 Item_Label.Caption:=SettingsStuff[i].caption;
405 Item_Label.Hint:=SettingsStuff[i].hint;
406 Item_Label.ShowHint:=True;
407 Item_Label.Name:='Debug'+IntToStr(i);
408 Item_Label.AutoSize:=False;
409 Item_Label.Height:=16;
410 Item_Label.Top:=MainGroups[group].Count*16-4;
411 Item_Label.Left:=27;
412 Item_Label.Width:=150;
413 MainGroups[group].Item.InsertControl(Item_Label);
414 END;
415 IF has_edit THEN BEGIN
416 edit_address:=SettingsStuff[i].edit_address;
417 edit_type:=SettingsStuff[i].edit_type;
418 Item_Edit:=TEdit.Create(MainGroups[group].Item);
419 Item_Edit.AutoSize:=False;
420 IF SettingsStuff[i].edit_hint='' THEN
421 Item_Edit.Hint:=SettingsStuff[i].hint
422 ELSE Item_Edit.Hint:=SettingsStuff[i].edit_hint;
423 Item_Edit.ShowHint:=True;
424 Item_Edit.Name:='DEdit'+IntToStr(i);
425 Item_Edit.Top:=MainGroups[group].Count*16-6;
426 Item_Edit.Left:=180;
427 Item_Edit.Height:=16;
428 Item_Edit.Width:=MainGroups[group].Item.Width-Item_Edit.Left-4;
429 Item_Edit.OnChange:=Form1.Debug_Click;
430 Item_Edit.Text:='';
431 MainGroups[group].Item.InsertControl(Item_Edit);
432 END;
433 END;
434 END;
435 _top:=1;
436 FOR i:=1 TO number_main_groups DO BEGIN
437 WITH MainGroups[i] DO BEGIN
438 Item.Top:=_top;
439 Item.Height:=Count*16+20;
440 _top:=_top+Item.Height;
441 END;
442 END;
443 END;
444 END;
445
446PROCEDURE TForm1.OpenCloseClick(Sender: TObject);
447 VAR number,i:Byte;
448 _top:Word;
449 BEGIN
450 number:=StrToInt(MidStr(TSpeedButton(Sender).Name, 10, 10));
451 IF MainGroups[number].OpenClose.Down THEN BEGIN
452 MainGroups[number].Item.Height:=20;
453 FOR i:=1 TO number_settings DO BEGIN
454 WITH Settings[i] DO BEGIN
455 IF group=number THEN BEGIN
456 IF has_box THEN Item_Checkbox.Visible:=False
457 ELSE Item_Label.Visible:=False;
458 IF has_edit THEN Item_Edit.Visible:=False;
459 break;
460 END;
461 END;
462 END;
463 _top:=1;
464 FOR i:=1 TO number_main_groups DO BEGIN
465 WITH MainGroups[i] DO BEGIN
466 Item.Top:=_top;
467 _top:=_top+Item.Height;
468 END;
469 END;
470 Form1.Height:=_top+44;
471 END ELSE BEGIN
472 MainGroups[number].Item.Height:=MainGroups[number].Count*16+20;
473 FOR i:=1 TO number_settings DO BEGIN
474 WITH Settings[i] DO BEGIN
475 IF group=number THEN BEGIN
476 IF has_box THEN Item_Checkbox.Visible:=True
477 ELSE Item_Label.Visible:=True;
478 IF has_edit THEN Item_Edit.Visible:=True;
479 break;
480 END;
481 END;
482 END;
483 _top:=1;
484 FOR i:=1 TO number_main_groups DO BEGIN
485 WITH MainGroups[i] DO BEGIN
486 Item.Top:=_top;
487 _top:=_top+Item.Height;
488 END;
489 END;
490 Form1.Height:=_top+44;
491 END;
492 END;
493
494PROCEDURE TForm1.InitStuffTimer(Sender: TObject);
495 BEGIN
496 Create_Settings_Array;
497 Form1.Menu_CharsClick(Menu);
498 Form1.InitStuff.Enabled:=False;
499 END;
500
501PROCEDURE TForm1.get_valuesTimer(Sender: TObject);
502 VAR i,bytes:byte;
503 tempstring:String[2];
504 tempfloat:Single;
505 BEGIN
506 IF _connected THEN BEGIN
507 FOR i:=1 TO number_settings DO BEGIN
508 WITH Settings[i] DO BEGIN
509 IF has_edit THEN BEGIN
510 IF NOT Item_Edit.Focused THEN BEGIN
511 updating:=True;
512 CASE edit_type OF
513 1..4: bytes:=edit_type;
514 5: bytes:=4;
515 6: bytes:=100;
516 ELSE bytes:=0;
517 END;
518 _temp:=ReadMem(edit_address,bytes);
519 CASE edit_type OF
520 1..4: Item_Edit.Text:=IntToStr(Decode_Int(_temp));
521 5: BEGIN
522 tempfloat:=Decode_Float(_temp);
523 IF Pos('(degrees)',Item_Edit.hint)>0 THEN tempfloat:=(tempfloat/pi)*180;
524 Item_Edit.Text:=FloatToStr(tempfloat);
525 END;
526 6: Item_Edit.Text:=Decode_Str(_temp);
527 END;
528 updating:=False;
529 END;
530 END;
531 IF has_box THEN BEGIN
532 IF Decode_Int(ReadMem(address,1))=1 THEN
533 Item_checkbox.Checked:=True
534 ELSE
535 Item_checkbox.Checked:=False;
536 END;
537 END;
538 END;
539 tempstring:=Decode_Str(ReadMem($10F00,2));
540 FOR i:=0 TO 14 DO BEGIN
541 IF lvl_mappings[i]=tempstring THEN BEGIN
542 IF lvlnumber<>i THEN BEGIN
543 lvlnumber:=i;
544 Form1.Caption:='OniTrainer v'+version+' (Current level: '+IntToStr(lvlnumber)+')';
545 END;
546 break;
547 END;
548 END;
549 FOR i:=0 TO ais_controlled DO
550 IF _ais_active[i] THEN CharMenus[i].Enabled:=True
551 ELSE CharMenus[i].Enabled:=False;
552 END;
553 END;
554
555PROCEDURE TForm1.Menu_RefreshTimeClick(Sender: TObject);
556 BEGIN
557 Form1.Menu_FreezeTime.Enabled:=False;
558 Form1.Menu_RefreshTime.Enabled:=False;
559 Form5.Caption:='Set RefreshTimer';
560 Form5.timer_label.Caption:='Set interval to refresh data (1/1000 seconds):';
561 Form5.timer_edit.Text:=IntToStr(Form1.get_values.Interval);
562 Form5.Visible:=True;
563 END;
564
565PROCEDURE TForm1.Menu_FreezeTimeClick(Sender: TObject);
566 BEGIN
567 Form1.Menu_FreezeTime.Enabled:=False;
568 Form1.Menu_RefreshTime.Enabled:=False;
569 Form5.Caption:='Set FreezeTimer';
570 Form5.timer_label.Caption:='Set interval to write data (1/1000 seconds):';
571 Form5.timer_edit.Text:=IntToStr(CharForms[0].timer_freeze.Interval);
572 Form5.Visible:=True;
573 Form5.timer_edit.SetFocus;
574 END;
575
576PROCEDURE TForm1.Menu_AboutClick(Sender: TObject);
577 BEGIN
578 IF Form6.Visible THEN Form6.Visible:=False
579 ELSE Form6.Visible:=True;
580 END;
581
582PROCEDURE TForm1.FormCreate(Sender: TObject);
583 VAR start:Word;
584 BEGIN
585 Form1.Caption:='OniTrainer v'+version;
586 Form1.Height:=73;
587 RegisterHotkey(Form1.Handle,1234,MOD_CONTROL,$41 {'A'});
588
589 _path:=Application.ExeName;
590 start:=1;
591 WHILE (PosEx('\',_path,start)>0) DO BEGIN
592 start:=PosEx('\',_path,start)+1;
593 END;
594 _path:=MidStr(_path,1,start-2);
595 END;
596
597PROCEDURE TForm1.WMHotKey(VAR Msg : TWMHotKey);
598 BEGIN
599 IF Msg.Hotkey=1234 THEN BEGIN
600 Form1.Menu_AOTClick(Form1);
601 END;
602 END;
603
604PROCEDURE TForm1.Menu_SetHotKeysClick(Sender: TObject);
605 BEGIN
606 IF Form9.Visible THEN Form9.Visible:=False
607 ELSE Form9.Visible:=True;
608 IF Form9.Visible THEN Form9.SetFocus;
609 END;
610
611PROCEDURE TForm1.Menu_Patch_ScriptvarsClick(Sender: TObject);
612 BEGIN
613 Menu_Patch_Scriptvars.Checked:=NOT Menu_Patch_Scriptvars.Checked;
614 Form11.Visible:=Menu_Patch_Scriptvars.Checked;
615 IF Form11.Visible THEN Form11.SetFocus;
616 END;
617
618PROCEDURE TForm1.Menu_Patch_MessagesClick(Sender: TObject);
619 BEGIN
620 Menu_Patch_Messages.Checked:=NOT Menu_Patch_Messages.Checked;
621 Form12.Visible:=Menu_Patch_Messages.Checked;
622 IF Form12.Visible THEN Form12.SetFocus;
623 END;
624
625PROCEDURE TForm1.Menu_Patch_MovementsClick(Sender: TObject);
626 BEGIN
627 Menu_Patch_Movements.Checked:=NOT Menu_Patch_Movements.Checked;
628 Form13.Visible:=Menu_Patch_Movements.Checked;
629 IF Form13.Visible THEN Form13.SetFocus;
630 END;
631
632PROCEDURE TForm1.menu_AnimsClick(Sender: TObject);
633 BEGIN
634 menu_Anims.Checked:=NOT menu_Anims.Checked;
635 Form4.Visible:=menu_Anims.Checked;
636 IF Form4.Visible THEN Form4.SetFocus;
637 END;
638
639PROCEDURE TForm1.menu_ModelsClick(Sender: TObject);
640 BEGIN
641 menu_Models.Checked:=NOT menu_Models.Checked;
642 Form14.Visible:=menu_Models.Checked;
643 IF Form14.Visible THEN Form14.SetFocus;
644 END;
645
646PROCEDURE TForm1.menu_SpawnClick(Sender: TObject);
647 BEGIN
648 menu_Spawn.Checked:=NOT menu_Spawn.Checked;
649 Form15.Visible:=menu_Spawn.Checked;
650 IF Form15.Visible THEN Form15.SetFocus;
651 END;
652
653END.
Note: See TracBrowser for help on using the repository browser.