[251] | 1 | UNIT Unit15;
|
---|
| 2 | INTERFACE
|
---|
| 3 | USES
|
---|
| 4 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
---|
| 5 | Dialogs, StdCtrls, ExtCtrls, ComCtrls, StrUtils;
|
---|
| 6 | TYPE
|
---|
| 7 | TForm15 = Class(TForm)
|
---|
| 8 | Label2: TLabel;
|
---|
| 9 | list: TListBox;
|
---|
| 10 | check_ai: TCheckBox;
|
---|
| 11 | GroupBox1: TGroupBox;
|
---|
| 12 | check_atPlayer: TRadioButton;
|
---|
| 13 | check_atCoords: TRadioButton;
|
---|
| 14 | edit_player_x: TEdit;
|
---|
| 15 | lbl_player_x: TLabel;
|
---|
| 16 | edit_player_y: TEdit;
|
---|
| 17 | lbl_player_y: TLabel;
|
---|
| 18 | edit_player_z: TEdit;
|
---|
| 19 | lbl_player_z: TLabel;
|
---|
| 20 | edit_coords_x: TEdit;
|
---|
| 21 | lbl_coords_x: TLabel;
|
---|
| 22 | lbl_coords_y: TLabel;
|
---|
| 23 | edit_coords_y: TEdit;
|
---|
| 24 | lbl_coords_z: TLabel;
|
---|
| 25 | edit_coords_z: TEdit;
|
---|
| 26 | btn_create: TButton;
|
---|
| 27 | tim_check: TTimer;
|
---|
| 28 | check_multiple: TCheckBox;
|
---|
| 29 | edit_multiple: TEdit;
|
---|
| 30 | GroupBox2: TGroupBox;
|
---|
| 31 | Label1: TLabel;
|
---|
| 32 | Label3: TLabel;
|
---|
| 33 | procedure check_multipleClick(Sender: TObject);
|
---|
| 34 | procedure check_atCoordsClick(Sender: TObject);
|
---|
| 35 | PROCEDURE check_atPlayerClick(Sender: TObject);
|
---|
| 36 | PROCEDURE btn_createClick(Sender: TObject);
|
---|
| 37 | PROCEDURE tim_checkTimer(Sender: TObject);
|
---|
| 38 | PROCEDURE FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
---|
| 39 | PRIVATE
|
---|
| 40 | PUBLIC
|
---|
| 41 | END;
|
---|
| 42 |
|
---|
| 43 | VAR
|
---|
| 44 | Form15: TForm15;
|
---|
| 45 |
|
---|
| 46 | IMPLEMENTATION
|
---|
| 47 | USES Unit1, Unit2, Unit8,Unit11;
|
---|
| 48 | {$R *.dfm}
|
---|
| 49 | VAR
|
---|
| 50 | lvl_shown:Byte;
|
---|
| 51 |
|
---|
| 52 | FUNCTION patch_loader_loaded:Boolean;
|
---|
| 53 | CONST check_for:LongWord=$0010656EE9;
|
---|
| 54 | address_at:LongWord=$4228ED;
|
---|
| 55 | BEGIN
|
---|
| 56 | IF Decode_Int(ReadMem(address_at,4))=check_for THEN result:=True
|
---|
| 57 | ELSE result:=False;
|
---|
| 58 | END;
|
---|
| 59 |
|
---|
| 60 | PROCEDURE TForm15.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
---|
| 61 | BEGIN
|
---|
| 62 | Self.Visible:=False;
|
---|
| 63 | CanClose:=False;
|
---|
| 64 | Form1.menu_Spawn.Checked:=False;
|
---|
| 65 | END;
|
---|
| 66 |
|
---|
| 67 | PROCEDURE TForm15.tim_checkTimer(Sender: TObject);
|
---|
| 68 | VAR i,modelcount:Byte;
|
---|
| 69 | BEGIN
|
---|
| 70 | IF _connected AND (lvlnumber>0) AND patch_loader_loaded THEN BEGIN
|
---|
| 71 | IF lvl_shown<>lvlnumber THEN BEGIN
|
---|
| 72 | list.Items.Clear;
|
---|
| 73 | modelcount:=Decode_Int(ReadMem($10F05,1));
|
---|
| 74 | FOR i:=0 TO modelcount-1 DO BEGIN
|
---|
| 75 | list.Items.Add('Model'+IntToStr(i+1)+' ('+IntToStr(Decode_Int(ReadMem($10F20+i*4,4)))+')');
|
---|
| 76 | END;
|
---|
| 77 | lvl_shown:=lvlnumber;
|
---|
| 78 | END;
|
---|
| 79 | END ELSE BEGIN
|
---|
| 80 | list.Items.Clear;
|
---|
| 81 | lvl_shown:=0;
|
---|
| 82 | END;
|
---|
| 83 | END;
|
---|
| 84 |
|
---|
| 85 | PROCEDURE TForm15.btn_createClick(Sender: TObject);
|
---|
| 86 | VAR x,y,z:Single;
|
---|
| 87 | address_trigger:LongWord;
|
---|
| 88 | address_counter:LongWord;
|
---|
| 89 | start_count:Byte;
|
---|
| 90 | base_name:String;
|
---|
| 91 | ai:Byte;
|
---|
| 92 | BEGIN
|
---|
| 93 | IF _connected AND (lvlnumber>0) AND patch_loader_loaded THEN BEGIN
|
---|
| 94 | //VALIDATIONS!
|
---|
| 95 | IF Form15.check_atPlayer.Checked THEN BEGIN
|
---|
| 96 | END;
|
---|
| 97 | IF Form15.check_atCoords.Checked THEN BEGIN
|
---|
| 98 | END;
|
---|
| 99 | IF Form15.check_ai.Checked THEN ai:=2
|
---|
| 100 | ELSE ai:=1;
|
---|
| 101 | address_trigger:=Decode_Int(ReadMem(address_script_var_pointer,4))+3*$10E0;
|
---|
| 102 | address_counter:=Decode_Int(ReadMem(address_script_var_pointer,4))+4*$10E0;
|
---|
| 103 | start_count:=Decode_Int(ReadMem(address_counter,1));
|
---|
| 104 | base_name:='spawned';
|
---|
| 105 | IF Form15.check_multiple.Checked THEN BEGIN
|
---|
| 106 | REPEAT
|
---|
| 107 | WriteMem(address_trigger,1,Encode_Int(ai));
|
---|
| 108 | Sleep(100);
|
---|
| 109 | UNTIL Decode_Int(ReadMem(address_counter,1))=(start_count+StrToInt(Form15.edit_multiple.Text));
|
---|
| 110 | END ELSE WriteMem(address_trigger,1,Encode_Int(ai));
|
---|
| 111 | END ELSE BEGIN
|
---|
| 112 | IF _connected AND (lvlnumber>0) THEN BEGIN
|
---|
| 113 | MessageBox(Form15.Handle,PChar('Oni.exe is not patched.'),PChar('Error'),MB_OK);
|
---|
| 114 | END;
|
---|
| 115 | END;
|
---|
| 116 | END;
|
---|
| 117 |
|
---|
| 118 | PROCEDURE TForm15.check_atPlayerClick(Sender: TObject);
|
---|
| 119 | BEGIN
|
---|
| 120 | Form15.lbl_player_x.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 121 | Form15.lbl_player_y.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 122 | Form15.lbl_player_z.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 123 | Form15.edit_player_x.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 124 | Form15.edit_player_y.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 125 | Form15.edit_player_z.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 126 | Form15.lbl_coords_x.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 127 | Form15.lbl_coords_y.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 128 | Form15.lbl_coords_z.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 129 | Form15.edit_coords_x.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 130 | Form15.edit_coords_y.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 131 | Form15.edit_coords_z.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 132 | END;
|
---|
| 133 |
|
---|
| 134 | PROCEDURE TForm15.check_atCoordsClick(Sender: TObject);
|
---|
| 135 | BEGIN
|
---|
| 136 | Form15.lbl_player_x.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 137 | Form15.lbl_player_y.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 138 | Form15.lbl_player_z.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 139 | Form15.edit_player_x.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 140 | Form15.edit_player_y.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 141 | Form15.edit_player_z.Enabled:=Form15.check_atPlayer.Checked;
|
---|
| 142 | Form15.lbl_coords_x.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 143 | Form15.lbl_coords_y.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 144 | Form15.lbl_coords_z.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 145 | Form15.edit_coords_x.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 146 | Form15.edit_coords_y.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 147 | Form15.edit_coords_z.Enabled:=Form15.check_atCoords.Checked;
|
---|
| 148 | END;
|
---|
| 149 |
|
---|
| 150 | PROCEDURE TForm15.check_multipleClick(Sender: TObject);
|
---|
| 151 | BEGIN
|
---|
| 152 | Form15.edit_multiple.Enabled:=Form15.check_multiple.Checked;
|
---|
| 153 | END;
|
---|
| 154 |
|
---|
| 155 | END.
|
---|