⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit2.pas

📁 冒险岛吸怪源码UCE的制作材料 用于冒险岛游戏的外挂
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,math,
  StdCtrls,ceclient, ComCtrls, ExtCtrls, Menus, Buttons,clipbrd, XPMan,registry,debugger,cefuncproc,netapis;

resourcestring
  CEnorm = 'Cheat Engine 5.0 client';
  CERegion = 'Cheat Engine 5.0 client - Please wait!';
  CESearch = 'Cheat Engine 5.0 client - Please wait!';
  CERegionSearch = 'Cheat Engine 5.0 client - Please wait!';
  CEWait= 'Cheat Engine 5.0 client - Please wait!';

  strNoDescription='No description';
  strClose='Close';
  strStop='Stop';
  strOk='OK';
//scanoptions
const
  SO_FASTSCAN=$1;
  SO_HEXADECIMAL=$2;
  SO_READONLY=$4;
  SO_FINDONLYONE=$8;
  SO_ISBINARY=$10;
  SO_UNICODE=$20;


type grouptype = array[1..4] of boolean;

type TSkin = record
    Marker:             String[6];
    backgroundimage:    Boolean;
    ProcessTextColor:   TColor;
    Normaltextcolor:    TColor;
    InvertedNormalTextColor: TColor;
    Groupboxcolor:      TColor;
    Backgroundcolor:    TColor;
    Selectedrecordcolor: TColor;
    Selectedrecordcolor2: TColor;
    Textfieldcolor:     TColor;
    Textfieldbackgroundcolor: TColor;

    showHelp:           Boolean;
end;

type
  TMainForm = class(TForm)
    Splitter1: TSplitter;
    Panel1: TPanel;
    Panel2: TPanel;
    SortByFrozenButton: TButton;
    SortByDescriptionButton: TButton;
    SortByAddressButton: TButton;
    SortByTypeButton: TButton;
    SortByValueButton: TButton;
    Panel3: TPanel;
    Label30: TLabel;
    Label29: TLabel;
    Label12: TLabel;
    Label27: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label13: TLabel;
    Label18: TLabel;
    Label23: TLabel;
    Label28: TLabel;
    Label3: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label14: TLabel;
    Label17: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    Label39: TLabel;
    Label40: TLabel;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    ScrollBar1: TScrollBar;
    Panel4: TPanel;
    advancedbutton: TSpeedButton;
    CommentButton: TSpeedButton;
    Panel5: TPanel;
    ProcessLabel: TLabel;
    FoundLabel: TLabel;
    ScanText: TLabel;
    Label4: TLabel;
    Label8: TLabel;
    LoadButton: TSpeedButton;
    SaveButton: TSpeedButton;
    SpeedButton1: TSpeedButton;
    Logo: TImage;
    Label6: TLabel;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    FControl: TEdit;
    FoundList: TListBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Dos: TRadioButton;
    Windows: TRadioButton;
    Readonly: TCheckBox;
    FromAddress: TMemo;
    ToAddress: TMemo;
    cbFastScan: TCheckBox;
    NewScan: TButton;
    NextScanButton: TButton;
    ScanType: TComboBox;
    VarType: TComboBox;
    Button3: TButton;
    Button1: TButton;
    ProgressBar1: TProgressBar;
    HexadecimalCheckbox: TCheckBox;
    UndoScan: TButton;
    rbBit: TRadioButton;
    rbDec: TRadioButton;
    scanvalue: TEdit;
    cbCaseSensitive: TCheckBox;
    PopupMenu2: TPopupMenu;
    Deletethisrecord1: TMenuItem;
    Browsethismemoryregion1: TMenuItem;
    SetHotkey1: TMenuItem;
    Freezealladdresses2: TMenuItem;
    Unfreezealladdresses1: TMenuItem;
    N5: TMenuItem;
    Setbreakpoint1: TMenuItem;
    Findoutwhatreadsfromthisaddress1: TMenuItem;
    sep1: TMenuItem;
    Calculatenewvaluepart21: TMenuItem;
    N4: TMenuItem;
    Cut1: TMenuItem;
    Copy1: TMenuItem;
    Paste1: TMenuItem;
    N1: TMenuItem;
    Groupoption1: TMenuItem;
    Settonogroup1: TMenuItem;
    N2: TMenuItem;
    Settogroup11: TMenuItem;
    Settogroup21: TMenuItem;
    Settogroup31: TMenuItem;
    Settogroup41: TMenuItem;
    N3: TMenuItem;
    Sortaddressesbygroup1: TMenuItem;
    PopupMenu1: TPopupMenu;
    Browsethismemoryarrea1: TMenuItem;
    Removeselectedaddresses1: TMenuItem;
    Selectallitems1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    TopDisabler: TTimer;
    emptypopup: TPopupMenu;
    ccpmenu: TPopupMenu;
    Cut2: TMenuItem;
    Copy2: TMenuItem;
    Paste2: TMenuItem;
    StatusBar1: TStatusBar;
    cbSpeedhack: TCheckBox;
    Label52: TLabel;
    Edit2: TEdit;
    Edit1: TEdit;
    Label51: TLabel;
    btnSetSpeedhack: TButton;
    CheckBox8: TCheckBox;
    RadioButton3: TRadioButton;
    Findoutwhataccessesthisaddress1: TMenuItem;
    FreezeTimer: TTimer;
    UpdateTimer: TTimer;
    UpdateFoundlisttimer: TTimer;
    cbUnicode: TCheckBox;
    Label5: TLabel;
    Label7: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpeedButton1Click(Sender: TObject);
    procedure DosClick(Sender: TObject);
    procedure WindowsClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure VarTypeChange(Sender: TObject);
    procedure ScanTypeChange(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure Deletethisrecord1Click(Sender: TObject);
    procedure ScrollBar1Change(Sender: TObject);
    procedure NewScanClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Layoutsettings1Click(Sender: TObject);
    procedure NextScanButtonClick(Sender: TObject);
    procedure ValueClick(Sender: TObject);
    procedure CommentButtonMouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure SpeedButton2Click(Sender: TObject);
    procedure CommentButtonClick(Sender: TObject);
    procedure SaveButtonClick(Sender: TObject);
    procedure LoadButtonClick(Sender: TObject);
    procedure FControlEnter(Sender: TObject);
    procedure FControlExit(Sender: TObject);
    procedure Label28Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure AddressClick(Sender: TObject);
    procedure Typeclick(Sender: TObject);
    procedure FControlKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FControlKeyPress(Sender: TObject; var Key: Char);
    procedure Cut1Click(Sender: TObject);
    procedure Copy1Click(Sender: TObject);
    procedure Paste1Click(Sender: TObject);
    procedure Calculatenewvaluepart21Click(Sender: TObject);
    procedure PopupMenu2Popup(Sender: TObject);
    procedure SettogroupXClick(Sender: TObject);
    procedure Settonogroup1Click(Sender: TObject);
    procedure Freezealladdresses2Click(Sender: TObject);
    procedure Unfreezealladdresses1Click(Sender: TObject);
    procedure Panel1Resize(Sender: TObject);
    procedure Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure slectItem(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure CheckBox2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ScrollBar1Enter(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Browsethismemoryarrea1Click(Sender: TObject);
    procedure Browsethismemoryregion1Click(Sender: TObject);
    procedure scanvalueKeyPress(Sender: TObject; var Key: Char);
    procedure CheckBox8Click(Sender: TObject);
    procedure cbSpeedhackClick(Sender: TObject);
    procedure btnSetSpeedhackClick(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure Setbreakpoint1Click(Sender: TObject);
    procedure Findoutwhatreadsfromthisaddress1Click(Sender: TObject);
    procedure Findoutwhataccessesthisaddress1Click(Sender: TObject);
    procedure advancedbuttonClick(Sender: TObject);
    procedure Label5Click(Sender: TObject);
    procedure Label7Click(Sender: TObject);
  private
    { Private declarations }
    numberoflines: integer;
    frozenbox:   array of TCheckbox;
    description: array of TLabel;
    address:     array of TLabel;
    ValType:     array of TLabel;
    Value:       array of TLabel;
    Select:      array of TLabel;

    oldwidth,oldheight: integer;
    newaddress: Dword;
    isbit: boolean;

    old8087CW: word;

    procedure LoadDefaultSkin;
    procedure copySelectedRecords;
    procedure Paste;
    procedure setfoundlisthorizontal;
    procedure WMGetMinMaxInfo(var Message: TMessage); message WM_GETMINMAXINFO;
    procedure SetWriteBreakpoint(address:dword;size: integer);
    procedure SetReadBreakpoint(address:dword;size: integer);
    procedure SetReadWriteBreakpoint(address:dword;size: integer);
    
  public
    { Public declarations }
    Advanced: boolean;
    ProcessOpened: boolean;

    max: integer;
    buffersize: dword;


    opening: string;

    numberofrecords,oldNumberOfRecords,oldcodelistcount: Integer;
    memrec: array of Memoryrecord;

    oldmemrec: array of Memoryrecord;
    oldcomments: string;

    values: array of String[255];
    Hotkeystrings: Array of string;
    Hotkeys: array of integer;


    selected: array of Boolean;
    lastselected: Integer;
    LastLastSelected: Integer;
    FirstShiftSelected: Integer;

    lag: Integer;

    skin:       TSkin;
    MemImage:   TMemoryStream;
    CheatEngineDir: String;
    updatetimerspeed,freezetimerspeed: integer;

    Procedure AddToRecord(line:Integer);
    procedure updatescreen;
    procedure Updateskin;
    procedure Deleterecords;
    procedure Deletegroups(groups: grouptype);
    procedure UpdateScantype;
    procedure UpdateList;
    procedure ShowValues;
    function CheckIfSaved: boolean;
    procedure Resync;
    procedure ReserveMem;

    procedure Addaddress(description: string; address:dword; const offsets: array of dword; offsetcount: integer; ispointer: boolean; vartype: integer; length: integer; startbit:integer; unicode,showashex: boolean);
  end;

var
  MainForm: TMainForm;
  Skip_PAGE_NOCACHE: Boolean;

implementation

uses processwindow, Unit1, changetimerunit, TypePopup, addformunit,
  commentsunit, layoutunit, Unit3, Standaloneunit, Changeoffsetunit,
  formsettingsunit, MemoryBrowserFormUnit,formscanningunit,opensave,
  FoundCodeUnit, AdvancedOptionsUnit,mainunit2;

{$R *.DFM}


procedure TMainForm.WMGetMinMaxInfo(var Message: TMessage);
var MMInfo: ^MINMAXINFO;
begin //the constraint function of the form behaves weird when draging from the top or left side, so I have to do this myself.
  MMInfo:=ptr(message.LParam);
  MMInfo.ptMinTrackSize:=point(515,501);
end;

procedure TMainform.ShowValues;
var i,rec: integer;
begin
  for i:=0 to numberoflines-1 do
  begin
    rec:=scrollbar1.Position+i;
    if rec<numberofrecords then
    begin
      value[i].Caption:=values[rec];
    end;
  end;
end;

procedure TMainform.setfoundlisthorizontal;
var i,maxwidth,chars,maxchars: integer;
begin
  maxwidth:=0;
  maxchars:=0;

  for i:=0 to foundlist.Items.Count-1 do
  begin
    chars:=length(foundlist.Items[i]); //faster than 2 time retrieving
    if chars>maxchars then
    begin
      maxchars:=chars;
    end;
  end;

  foundlist.ScrollWidth:=8*maxchars;
end;

procedure TMainForm.ReserveMem;
begin
  setlength(memrec,numberofrecords);
  setlength(values,NumberOfRecords);
  setlength(selected,numberofrecords);
  setlength(hotkeystrings,NumberOfRecords);
  setlength(Hotkeys,numberofrecords);
end;

procedure TMainForm.resync;
var i,j,datasend: integer;
begin
  output[0]:=6;   //clear record list
  sendbuf(1);


  //put all adresses back
  for i:=0 to numberofrecords-1 do
  begin
    //if (i mod 2000)=0 then sleep(lag*4);  //resync should be made safe so a lof of sleeping...
    output[0]:=CS_AddAddress;
    pdword(@output[1])^:=memrec[i].Address;

    case memrec[i].VarType of
      0: output[5]:=1;
      1: output[5]:=2;
      2: output[5]:=4;
      3: output[5]:=4;
      4: output[5]:=8;
      5: output[5]:=memrec[i].bitlength div 8+1;
      6: output[5]:=8;
      7: output[5]:=memrec[i].Bit;
      8: output[5]:=memrec[i].bit;
    end;

    sendbuf(6);
  end;

  //and freeze the frozen ones
  //the client should have received the values before the desync

  for i:=0 to numberofrecords-1 do
  begin
    if memrec[i].Frozen then
    begin
      if (values[i]<>'NYA') and (values[i]<>'??') then
      begin
        output[0]:=CS_FREEZEADDRESS;  //freeze address
        pword(@output[1])^:=i;
        sendbuf(3);
      end;
    end;
  end;

end;

procedure TMainForm.copySelectedRecords;
var clip: TClipboard;
    textform: string;
    i:  Integer;
begin
  //
  clip:=TClipboard.Create;
  textform:='CETables-';

//  textform:='aaa'+chr(13)+'FFFFFF'+chr(13)+'DWORD'+chr(13); there can only be an CR when hex editing the savetable.
  for i:=0 to numberofrecords-1 do
  begin
    if selected[i] then
      textform:=textform+memrec[i].Description+chr(13)+'$'+IntTohex(memrec[i].Address,8)+chr(13)+IntToStr(memrec[i].VarType)+chr(13);
  end;
  clip.SetTextBuf(pchar(textform));  //text address type

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -