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