1 | UNIT Unit14;
|
---|
2 | INTERFACE
|
---|
3 | USES
|
---|
4 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
---|
5 | Dialogs, StdCtrls, ExtCtrls, ComCtrls, StrUtils;
|
---|
6 | TYPE
|
---|
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 |
|
---|
24 | VAR
|
---|
25 | Form14: TForm14;
|
---|
26 |
|
---|
27 | IMPLEMENTATION
|
---|
28 | USES Unit1, Unit2, Unit8;
|
---|
29 | {$R *.dfm}
|
---|
30 | VAR lvl_shown:Byte;
|
---|
31 | modelcount:Byte;
|
---|
32 |
|
---|
33 | FUNCTION 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 |
|
---|
41 | PROCEDURE 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 |
|
---|
57 | PROCEDURE 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 |
|
---|
75 | PROCEDURE 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 |
|
---|
82 | PROCEDURE TForm14.updownClick(Sender: TObject; Button: TUDBtnType);
|
---|
83 | BEGIN
|
---|
84 | Form14.edit_char.Text:=IntToStr(updown.Position);
|
---|
85 | END;
|
---|
86 |
|
---|
87 | END.
|
---|