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. |