[251] | 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.
|
---|