source: OniTrainer/current/Unit14.pas@ 888

Last change on this file since 888 was 251, checked in by alloc, 17 years ago
File size: 2.5 KB
RevLine 
[251]1UNIT Unit14;
2INTERFACE
3USES
4 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
5 Dialogs, StdCtrls, ExtCtrls, ComCtrls, StrUtils;
6TYPE
7 TForm14 = Class(TForm)
8 Label1: TLabel;
9 Label2: TLabel;
10 edit_char: TEdit;
11 list: TListBox;
12 updown: TUpDown;
13 tim_lvlcheck: TTimer;
14 PROCEDURE updownClick(Sender: TObject; Button: TUDBtnType);
15 PROCEDURE FormCloseQuery(Sender: TObject; var CanClose: Boolean);
16 PROCEDURE tim_lvlcheckTimer(Sender: TObject);
17 PROCEDURE listClick(Sender: TObject);
18 PRIVATE
19 { Private declarations }
20 PUBLIC
21 { Public declarations }
22 END;
23
24VAR
25 Form14: TForm14;
26
27IMPLEMENTATION
28USES Unit1, Unit2, Unit8;
29{$R *.dfm}
30VAR lvl_shown:Byte;
31 modelcount:Byte;
32
33FUNCTION patch_loader_loaded:Boolean;
34 CONST check_for:LongWord=$0010656EE9;
35 address_at:LongWord=$4228ED;
36 BEGIN
37 IF Decode_Int(ReadMem(address_at,4))=check_for THEN result:=True
38 ELSE result:=False;
39 END;
40
41PROCEDURE TForm14.listClick(Sender: TObject);
42 VAR model:LongWord;
43 struct1:LongWord;
44 BEGIN
45 IF _connected AND (lvlnumber>0) AND patch_loader_loaded THEN BEGIN
46 model:=Decode_Int(ReadMem($10F20+Form14.list.ItemIndex*4,4));
47 struct1:=Decode_Int(ReadMem(PointerStruct1PointerArray1,4));
48 struct1:=Decode_Int(ReadMem(struct1+4*StrToInt(Form14.edit_char.Text),4));
49 WriteMem(struct1+$00C,4,Encode_Int(model));
50 END ELSE BEGIN
51 IF _connected AND (lvlnumber>0) THEN BEGIN
52 MessageBox(Form14.Handle,PChar('Oni.exe is not patched.'),PChar('Error'),MB_OK);
53 END;
54 END;
55 END;
56
57PROCEDURE TForm14.tim_lvlcheckTimer(Sender: TObject);
58 VAR i:Byte;
59 BEGIN
60 IF _connected AND (lvlnumber>0) AND patch_loader_loaded THEN BEGIN
61 IF lvl_shown<>lvlnumber THEN BEGIN
62 list.Items.Clear;
63 modelcount:=Decode_Int(ReadMem($10F05,1));
64 FOR i:=0 TO modelcount-1 DO BEGIN
65 list.Items.Add('Model'+IntToStr(i+1)+' ('+IntToHex(Decode_Int(ReadMem($10F20+i*4,4)),8)+')');
66 END;
67 lvl_shown:=lvlnumber;
68 END;
69 END ELSE BEGIN
70 list.Items.Clear;
71 lvl_shown:=0;
72 END;
73 END;
74
75PROCEDURE TForm14.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
76 BEGIN
77 Self.Visible:=False;
78 CanClose:=False;
79 Form1.menu_Models.Checked:=False;
80 END;
81
82PROCEDURE TForm14.updownClick(Sender: TObject; Button: TUDBtnType);
83 BEGIN
84 Form14.edit_char.Text:=IntToStr(updown.Position);
85 END;
86
87END.
Note: See TracBrowser for help on using the repository browser.