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

📄 mainunit.pas.svn-base

📁 这是一段游戏修改工具的源代码.ring3功能由dephi开发,驱动是C开发.希望对大家有帮助
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
    procedure freedebugger(var Message: TMessage); message WM_FREEDEBUGGER;
    procedure pointerscanner_addaddress(var Message: TMessage); message WM_COPYDATA;
    procedure Hotkey2(var Message:TMessage); message wm_hotkey2;
    procedure ScanDone(var message: TMessage); message WM_SCANDONE;
    procedure FreezeThem;
    Procedure Edit;
    function paste(simplecopypaste: boolean): integer;
    procedure CopySelectedRecords;
    procedure DeleteRecords;
    procedure Deletegroups(groups: grouptype);
    procedure exceptionhandler(Sender: TObject; E: Exception);
    procedure ResizeScreen;
    procedure SetReadWriteBreakpoint(address: dword; size: dword);
    procedure toggleWindow;
    procedure adjustbringtofronttext;

    procedure scanEpilogue(canceled: boolean);
    procedure CancelbuttonClick(sender: TObject);
    procedure CreateCustomScanButtonClick(sender: TObject);
    procedure EditCustomScanButtonClick(sender: TObject);

    procedure changeScriptCallback(script: string; changed: boolean);

    //property functions
    function GetRoundingType: TRoundingType;
    procedure SetRoundingType(rt: TRoundingType);
    function getScanStart: Dword;
    procedure setScanStart(newscanstart: dword);
    function getScanStop: Dword;
    procedure setScanStop(newscanstop: dword);
    function getFastscan: boolean;
    procedure setFastScan(state: boolean);
    function getScanReadonly: boolean;
    procedure setScanReadOnly(state: boolean);

    function getSelectedCustomScanData: TStringlist;
    function getSelectedCustomScanType: TCustomScanType;
    function getSelectedVariableType: TVariableType;
    procedure setfoundcount(x: int64);


  public
    { Public declarations }
   
    test: single;

    debugproc: boolean;

    oldNumberOfRecords: Integer;
    oldMemrec: array of memoryrecord;
    OldComments: String;
    oldcodelistcount: integer;

    NumberOfRecords: Integer;
    memrec: array of memoryrecord;
    FrozenFvalue: Array of Double;
    FrozenStrings: Array of string;
    FrozenBytes: array of array of byte;

    Hotkeystrings: Array of string;
    Hotkeys: array of integer;

    Selected: Array of Boolean;
    lastselected: Integer;
    LastLastSelected: Integer;
    FirstShiftSelected: Integer; //-1 = no shift pressed before else it contains the record that has been selected


    lastsave: array of memoryrecord;
    lastsavecount: Integer;

    NumberofLines: integer;
    freezedirection: array of TLabel;
    frozenbox:   array of TCheckbox;
    description: array of TLabel;
    address:     array of TLabel;
    ValType:     array of TLabel;
    Value:       array of TLabel;
    Select:      array of TLabel;

    Priority: Dword;
    memimage: TMemorystream;

    canceled: boolean;

    originalheight:integer;
    originalwidth:integer;

    fronttext: string;


    aprilfools: boolean;
    editedsincelastsave: boolean;

    autoattachlist: tstringlist;

    memscan: tmemscan;

    procedure plugintype1click(Sender:tObject);
    procedure AddToRecord(Line: Integer);
    procedure AddAutoAssembleScript(script:string);
    procedure reinterpretaddresses;
    
    procedure Updatelist;
    Procedure UpdateScreen;
    procedure SetWriteBreakpoint(address: dword; size: dword);
    procedure SetReadBreakpoint(address: dword; size: dword);
    procedure setfoundlisthorizontal;
    procedure reserveMem;
    procedure ChangeValue(Itemnr: integer; NewValue:String);
    function  getStringFromRecord(itemid: Integer):string;
    procedure EnableHypermode;
    procedure disableHypermode;
    Procedure UpdateScanType;
    procedure enableGui(isnextscan: boolean);
    procedure disableGui;
    procedure SpawnCancelButton;
    procedure DestroyCancelButton;
    procedure disableautoassemblecheat(i: integer);
    procedure enableautoassemblecheat(i: integer);
    procedure addaddress(description: string; address:dword; const offsets: array of dword; offsetcount: integer; ispointer: boolean; vartype: integer; length: integer; startbit:integer; unicode: boolean); overload;
    procedure addaddress(description: string; address:dword; const offsets: array of dword; offsetcount: integer; ispointer: boolean; vartype: integer; length: integer; startbit:integer; unicode,showashex: boolean); overload;
    property foundcount: int64 read ffoundcount write setfoundcount;
    property RoundingType: TRoundingType read GetRoundingType write SetRoundingType;
    property ScanStart: dword read getScanStart write setScanStart;
    property ScanStop: dword read getScanStop write setScanStop;
    property FastScan: boolean read getFastscan write setFastscan;
    property ScanReadOnly: boolean read getScanReadonly write setScanReadonly;
    property SelectedCustomScanData: Tstringlist read getSelectedCustomScanData;
    property SelectedCustomScanType: TCustomScanType read getSelectedCustomScanType;
    property SelectedVariableType: TVariableType read getSelectedVariableType;
  end;

var
  MainForm: TMainForm;
  ToggleWindows: TTogglewindows;

implementation

uses mainunit2,ProcessWindowUnit, MemoryBrowserFormUnit, TypePopup,
  AddAddress, HotKeys, standaloneunit, aboutunit,
  CommentsUnit, formsettingsunit, Changeoffsetunit, FoundCodeUnit, advancedoptionsunit,
  formScanningUnit, formDifferentBitSizeUnit,OpenSave,
  formMemoryTrainerUnit, MemoryTrainerDesignUnit, formhotkeyunit,
  formAddressChangeUnit, formmemoryregionsunit,formPointerOrPointeeUnit,
  frmhotkeyconfigunit, frmProcessWatcherUnit, formProcessInfo, frmautoinjectunit,
  PasteTableentryFRM, pointerscannerfrm, PointerscannerSettingsFrm,
  InjectedpointerscanornotFRM, frmGDTunit, frmFunctionlistUnit;

{$R *.DFM}

var ncol: TColor;
procedure TFlash.Col;
begin
  mainform.panel7.Color:=ncol;
end;

procedure TFlash.Execute;
var red,green: byte;
    decreasered: boolean;
begin
{$ifndef ceasinjecteddll}
  freeonterminate:=true; 
  decreasered:=true;
  red:=254;
  green:=0;
  while not terminated do
  begin
    if decreasered then
    begin
      dec(red,2);
      inc(green,2);
      if green>=250 then decreasered:=false;
    end
    else
    begin
      inc(red,2);
      dec(green,2);
      if red>=254 then
        decreasered:=true;
    end;
    ncol:=(green shl 8)+red;
    synchronize(col); //sigh (without it works too, but at least with this I know for sure it works.

    sleep(10);
  end;

{$endif}
  mainform.Panel7.Color:=clBtnFace;
end;

constructor TToggleWindows.Create(CreateSuspended: Boolean);
begin
  freeonterminate:=true;
  inherited Create(CreateSuspended);
end;

procedure TToggleWindows.Execute;
begin
  toggleotherwindows;
  togglewindows:=nil;
end;

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.
//mainform.pix
  MMInfo:=ptr(message.LParam);
  if pixelsperinch=96 then
  begin
    MMInfo.ptMinTrackSize:=point(490,460);
  end;
end;

procedure TFcontrol.wmMouseWheel(var msg: TWMMousewheel);
var k: word;

begin
  //move down message

  if msg.WheelDelta>0 then
    k:=vk_up
  else
    k:=vk_down;

  mainform.FControlKeyDown(self, k,[]);
end;

procedure TMainform.Hotkey2(var Message:TMessage);
var i:integer;
    a,b: single;
    s: string;
begin
  case message.WParam of
    0:
    begin
      //popup/hide CE
      if advancedoptions.Pausebutton.Down then
      begin
        errorbeep;
        exit;
      end;

      beep;

      if formsettings.cbHideAllWindows.checked then
      begin
        ToggleWindow;

        if formsettings.cbCenterOnPopup.checked then
          if not allwindowsareback then
            setwindowpos(mainform.Handle,HWND_NOTOPMOST,(screen.Width div 2)-(mainform.Width div 2),(screen.Height div 2)-(mainform.height div 2),mainform.Width,mainform.Height,SWP_NOZORDER or SWP_NOACTIVATE);

        if not allwindowsareback then application.BringToFront else
          setforegroundwindow(lastforeground);

        adjustbringtofronttext;
        exit;
      end;

      application.BringToFront;
      SetForegroundWindow(mainform.Handle);

      mainform.SetFocus;

      if formsettings.cbCenterOnPopup.checked then
        setwindowpos(mainform.Handle,HWND_NOTOPMOST,(screen.Width div 2)-(mainform.Width div 2),(screen.Height div 2)-(mainform.height div 2),mainform.Width,mainform.Height,SWP_NOZORDER or SWP_NOACTIVATE);

      formstyle:=fsStayOnTop;
    end;

    1: //Pause
    begin
      with advancedoptions do
      begin
        pausedbyhotkey:=true;
        pausebutton.down:=not pausebutton.down;
        pausebutton.Click;
        pausedbyhotkey:=false;
      end;
    end;

    2: //speedhack
    begin
      if cbSpeedhack.Enabled then
      begin
        beep;
        cbSpeedhack.checked:=not cbSpeedhack.Checked;
      end;
    end;

    //3..7=set speedhack speed
    3:
    begin
      if cbspeedhack.enabled then
      begin
        cbspeedhack.Checked:=true;
        if cbspeedhack.checked then
        begin
          edit2.Text:=format('%.2f',[speedhackspeed1.speed]);
          edit1.Text:=inttostr(speedhackspeed1.sleeptime);
          btnSetSpeedhack.Click;
        end;
      end;
    end;

    4:
    begin
      if cbspeedhack.enabled then
      begin
        cbspeedhack.Checked:=true;
        if cbspeedhack.checked then
        begin
          edit2.Text:=format('%.2f',[speedhackspeed2.speed]);
          edit1.Text:=inttostr(speedhackspeed2.sleeptime);
          btnSetSpeedhack.Click;
        end;
      end;
    end;

    5:
    begin
      if cbspeedhack.enabled then
      begin
        cbspeedhack.Checked:=true;
        if cbspeedhack.checked then
        begin
          edit2.Text:=format('%.2f',[speedhackspeed3.speed]);
          edit1.Text:=inttostr(speedhackspeed3.sleeptime);
          btnSetSpeedhack.Click;
        end;
      end;
    end;

    6:
    begin
      if cbspeedhack.enabled then
      begin
        cbspeedhack.Checked:=true;
        if cbspeedhack.checked then
        begin
          edit2.Text:=format('%.2f',[speedhackspeed4.speed]);
          edit1.Text:=inttostr(speedhackspeed4.sleeptime);
          btnSetSpeedhack.Click;
        end;
      end;
    end;

    7:
    begin
      if cbspeedhack.enabled then
      begin
        cbspeedhack.Checked:=true;
        if cbspeedhack.checked then
        begin
          edit2.Text:=format('%.2f',[speedhackspeed5.speed]);
          edit1.Text:=inttostr(speedhackspeed5.sleeptime);
          btnSetSpeedhack.Click;
        end;
      end;
    end;

    8:
    begin
      //increase speed
      try
        if cbspeedhack.Enabled then
        begin
          cbspeedhack.Checked:=true;
          if cbspeedhack.Checked then
          begin
            a:=strtofloat(edit2.text);
            a:=a+speedupdelta;
            edit2.Text:=format('%.2f',[a]);
            btnSetSpeedhack.Click;
          END;
        end;
      except

      end;
    end;


    9:
    begin
      //decrease speed
      try
        if cbspeedhack.Enabled then
        begin
          cbspeedhack.Checked:=true;
          if cbspeedhack.Checked then
          begin
            b:=strtofloat(edit2.text);
            b:=b-slowdowndelta;
            edit2.Text:=format('%.2f',[b]);
            btnSetSpeedhack.Click;
          end;
        end;
      except

      end;
    end;

    10..18: //Change type (if possible)
    begin
      if vartype.Enabled then
        vartype.itemindex:=message.WParam-3
      else
      begin
        errorbeep;
      end;
    end;

    19://new scan
    begin
      if not newscan.Enabled then exit; //only when no process is opened
      if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning

      i:=vartype.ItemIndex;

      if newscan.Caption=strNewScan then
        newscan.Click; //start new scan

      vartype.ItemIndex:=i;
      vartype.OnChange(vartype); //set previous type
    end;

    20: //new scan Exact value
    begin

      if not newscan.Enabled then exit;
      if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning
      i:=vartype.itemindex;
      s:=scanvalue.Text;
      if s='' then exit;      

      if newscan.Caption=strNewScan then
        newscan.Click; //start new scan

      vartype.ItemIndex:=i;
      vartype.OnChange(vartype); //set previous type

      scanvalue.Text:=s;
      newscan.Click;
    end;

    21: //new scan unknown initial value
    begin
      if not newscan.Enabled then exit;
      if (formscanning<>nil) and (formscanning.Visible) then exit; //it's scanning

⌨️ 快捷键说明

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