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