[251] | 1 | UNIT Unit1;
|
---|
| 2 | INTERFACE
|
---|
| 3 | USES
|
---|
| 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 |
|
---|
| 9 | TYPE
|
---|
| 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 |
|
---|
| 61 | VAR
|
---|
| 62 | Form1: TForm1;
|
---|
| 63 | CharForms: Array[0..ais_controlled] OF TCharForm;
|
---|
| 64 | CharMenus: Array[0..ais_controlled] OF TMenuItem;
|
---|
| 65 | CharOverviewMenu: TMenuItem;
|
---|
| 66 |
|
---|
| 67 | IMPLEMENTATION
|
---|
| 68 |
|
---|
| 69 | {$R *.dfm}
|
---|
| 70 |
|
---|
| 71 | PROCEDURE 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 |
|
---|
| 95 | PROCEDURE TForm1.Menu_ExitClick(Sender: TObject);
|
---|
| 96 | BEGIN
|
---|
| 97 | Close;
|
---|
| 98 | END;
|
---|
| 99 |
|
---|
| 100 | PROCEDURE 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 |
|
---|
| 112 | PROCEDURE 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 |
|
---|
| 158 | PROCEDURE 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 |
|
---|
| 171 | PROCEDURE 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 |
|
---|
| 182 | PROCEDURE 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 |
|
---|
| 302 | PROCEDURE 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 |
|
---|
| 348 | PROCEDURE 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 |
|
---|
| 446 | PROCEDURE 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 |
|
---|
| 494 | PROCEDURE TForm1.InitStuffTimer(Sender: TObject);
|
---|
| 495 | BEGIN
|
---|
| 496 | Create_Settings_Array;
|
---|
| 497 | Form1.Menu_CharsClick(Menu);
|
---|
| 498 | Form1.InitStuff.Enabled:=False;
|
---|
| 499 | END;
|
---|
| 500 |
|
---|
| 501 | PROCEDURE 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 |
|
---|
| 555 | PROCEDURE 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 |
|
---|
| 565 | PROCEDURE 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 |
|
---|
| 576 | PROCEDURE TForm1.Menu_AboutClick(Sender: TObject);
|
---|
| 577 | BEGIN
|
---|
| 578 | IF Form6.Visible THEN Form6.Visible:=False
|
---|
| 579 | ELSE Form6.Visible:=True;
|
---|
| 580 | END;
|
---|
| 581 |
|
---|
| 582 | PROCEDURE 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 |
|
---|
| 597 | PROCEDURE TForm1.WMHotKey(VAR Msg : TWMHotKey);
|
---|
| 598 | BEGIN
|
---|
| 599 | IF Msg.Hotkey=1234 THEN BEGIN
|
---|
| 600 | Form1.Menu_AOTClick(Form1);
|
---|
| 601 | END;
|
---|
| 602 | END;
|
---|
| 603 |
|
---|
| 604 | PROCEDURE 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 |
|
---|
| 611 | PROCEDURE 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 |
|
---|
| 618 | PROCEDURE 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 |
|
---|
| 625 | PROCEDURE 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 |
|
---|
| 632 | PROCEDURE 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 |
|
---|
| 639 | PROCEDURE 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 |
|
---|
| 646 | PROCEDURE 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 |
|
---|
| 653 | END.
|
---|