2011-07-04 19:52:53 +00:00
unit Unit2;
{$MODE Delphi}
interface
uses
LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, LResources;
type
{ TForm2 }
TForm2 = class( TForm)
Memo1: TMemo;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
Timer1: TTimer;
SpeedButton1: TSpeedButton;
procedure Button3Click( Sender: TObject) ;
procedure FormClose( Sender: TObject; var Action: TCloseAction) ;
procedure Button2Click( Sender: TObject) ;
procedure FormCreate( Sender: TObject) ;
procedure Timer1Timer( Sender: TObject) ;
procedure Button1Click( Sender: TObject) ;
procedure FormCloseQuery( Sender: TObject; var CanClose: Boolean ) ;
procedure SpeedButton1Click( Sender: TObject) ;
private
{ Private declarations }
health: integer ;
public
{ Public declarations }
end ;
var
Form2: TForm2;
implementation
uses Unit3;
2012-01-04 10:31:22 +00:00
resourcestring
2012-05-19 13:36:23 +00:00
rsAwYouReDeathLetMeReviveYou = 'Aw, you' 're dead! Let me revive you' ;
2012-01-04 10:31:22 +00:00
rsStep2ExactValueScanningPW = 'Step 2: Exact Value scanning (PW=' ;
rsQuittingOnStep2ThisIsTheEasiestStepThereIsFindHeal = 'Quitting on step2? This is the easiest step there is. Find health, change health, done.... Sure you '
+ 'want to quit?' ;
2015-12-24 19:26:48 +01:00
rsLOSER = 'BOO' ;
2012-01-04 10:31:22 +00:00
rsTutorialStep2=
2015-08-11 02:12:28 -04:00
'Now that you have opened the tutorial with Cheat Engine let' 's get on with the next step.' + #13 #10 +
2015-08-12 10:51:09 +02:00
'' + #13 #10 +
2015-08-11 02:12:28 -04:00
'You can see at the bottom of this window is the text Health: xxx' + #13 #10 +
2012-01-04 10:31:22 +00:00
'Each time you click ' 'Hit me' ' your health gets decreased.' + #13 #10 +
'' + #13 #10 +
'To get to the next step you have to find this value and change it to 1000' + #13 #10 +
'' + #13 #10 +
'To find the value there are different ways, but I' 'll tell you about the easiest, ' 'Exact Value' ':' + #13 #10 +
2015-08-11 02:12:28 -04:00
'First make sure value type is set to at least 2-bytes or 4-bytes. 1-byte will also work, but you' 'll run into an easy to fix' +
' problem when you' 've found the address and want to change it. The 8-byte may perhaps works if the' +
' bytes after the address are 0, but I wouldn' 't take the bet.' + #13 #10 +
2012-01-04 10:31:22 +00:00
'Single, double, and the other scans just don' 't work, because they store the value in a different way.' + #13 #10 +
'' + #13 #10 +
'When the value type is set correctly, make sure the scantype is set to ' 'Exact Value' '' + #13 #10 +
'Then fill in the number your health is in the value box. And click ' 'First Scan' '' + #13 #10 +
2014-06-02 02:27:46 +00:00
'After a while (if you have a extremely slow pc) the scan is done and the results are shown in the list on the' +
2015-08-11 02:12:28 -04:00
' left' + #13 #10 +
2012-01-04 10:31:22 +00:00
'' + #13 #10 +
2014-06-02 02:27:46 +00:00
'If you find more than 1 address and you don' 't know for sure which address it is, click ' 'Hit me' ', fill in the new' +
2015-08-11 02:12:28 -04:00
' health value into the value box, and click ' 'Next Scan' '' + #13 #10 +
2012-01-04 10:31:22 +00:00
'repeat this until you' 're sure you' 've found it. (that includes that there' 's only 1 address in the list.....)' + #13 #10 +
'' + #13 #10 +
2014-06-02 02:27:46 +00:00
'Now double click the address in the list on the left. This makes the address pop-up in the list at the bottom,' +
2015-08-11 02:12:28 -04:00
' showing you the current value.' + #13 #10 +
2012-01-04 10:31:22 +00:00
'Double click the value, (or select it and press enter), and change the value to 1000.' + #13 #10 +
'' + #13 #10 +
'If everything went ok the next button should become enabled, and you' 're ready for the next step.' + #13 #10 +
'' + #13 #10 +
'' + #13 #10 +
'Note:' + #13 #10 +
'If you did anything wrong while scanning, click "New Scan" and repeat the scanning again.' + #13 #10 +
'Also, try playing around with the value and click ' 'hit me' '' ;
2011-07-04 19:52:53 +00:00
type TTester= class( TThread)
procedure execute; override ;
end ;
procedure TTester. execute;
begin
while form2. health< > 6 6 6 do
asm
nop
nop
nop
nop
nop
end ;
end ;
procedure TForm2. FormClose( Sender: TObject; var Action: TCloseAction) ;
begin
application. Terminate;
end ;
procedure TForm2. Button3Click( Sender: TObject) ;
begin
TTester. create( false ) ;
TTester. create( false ) ;
end ;
procedure TForm2. Button2Click( Sender: TObject) ;
begin
health: = health- ( 1 + random( 5 ) ) ;
label1. Caption: = inttostr( health) ;
if health< 0 then
begin
2012-01-04 10:31:22 +00:00
showmessage( rsAwYouReDeathLetMeReviveYou) ;
2011-07-04 19:52:53 +00:00
health: = 1 0 0 ;
label1. Caption: = inttostr( health) ;
end ;
end ;
procedure TForm2. FormCreate( Sender: TObject) ;
begin
2012-01-04 10:31:22 +00:00
memo1. lines. text : = rsTutorialStep2;
memo1. Lines. Insert( 0 , rsStep2ExactValueScanningPW+ inttostr( 0 ) + inttostr( 9 0 4 5 3 ) + ')' ) ;
2011-07-04 19:52:53 +00:00
memo1. SelStart: = 0 ;
health: = 1 0 0 ;
2012-01-04 10:31:22 +00:00
2011-07-04 19:52:53 +00:00
end ;
procedure TForm2. Timer1Timer( Sender: TObject) ;
begin
if health= 1 0 0 0 then
begin
button1. Enabled: = true ;
timer1. enabled: = false ;
end ;
end ;
procedure TForm2. Button1Click( Sender: TObject) ;
begin
hide;
form3: = TForm3. create( self) ;
2014-06-02 02:27:46 +00:00
form3. width: = width;
form3. height: = height;
form3. left: = left;
form3. top: = top;
2011-07-04 19:52:53 +00:00
form3. show;
end ;
procedure TForm2. FormCloseQuery( Sender: TObject; var CanClose: Boolean ) ;
begin
2012-01-04 10:31:22 +00:00
canclose: = MessageDlg( rsQuittingOnStep2ThisIsTheEasiestStepThereIsFindHeal, mtconfirmation, [ mbyes, mbno] , 0 ) = mryes;
2011-07-04 19:52:53 +00:00
end ;
procedure TForm2. SpeedButton1Click( Sender: TObject) ;
begin
2012-01-04 10:31:22 +00:00
showmessage( rsLOSER) ;
2011-07-04 19:52:53 +00:00
button1. Click;
end ;
initialization
{$i Unit2.lrs}
{$i Unit2.lrs}
end .