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

📄 unit2.pas

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

end;




procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Connectform.close;
end;

procedure TMainForm.SpeedButton1Click(Sender: TObject);
var FName: String;
    expectedFilename: String;
    i: integer;
begin
  proceswindow:=TProceswindow.Create(self);
  if ProcesWindow.ShowModal=mrOk then
  begin
    if numberofrecords>0 then
    begin
      if messagedlg('Keep the current address list?', mtConfirmation, [mbYes, mbNo], 0)=mrNo then
      begin
        Comments.Memo1.Lines.Text:='';
        Numberofrecords:=0;
        Updatescreen;
      end else updatelist;
    end;

    if (copy(processlabel.caption,length(processlabel.caption)-11,12)='WINOA386.MOD') or
       (copy(processlabel.caption,pos('-',processlabel.caption)+1,13)='MS-DOS Prompt') then
    begin
      fromaddress.text:='80000000';
      toaddress.text:='BFFFFFFF';
      dos.checked:=true;
    end else
    begin
      FromAddress.text:='00400000';
      ToAddress.text:='7FFFFFFF';
      windows.checked:=true;
    end;

    //-------------NEW SCAN


    foundlabel.Caption:='0';
    foundlist.Clear;

    newscan.Caption:='First Scan';

    Groupbox1.Enabled:=true;
    for i:=0 to groupbox1.ControlCount-1 do
      groupbox1.Controls[i].Enabled:=true;

    scanvalue.Enabled:=true;
    newscan.Enabled:=true;
    nextscanbutton.Enabled:=false;
    vartype.Enabled:=true;
    scantype.Enabled:=true;
    scantext.enabled:=true;
    label4.enabled:=true;
    label8.Enabled:=true;
    HexadecimalCheckbox.Enabled:=true;

    scanvalue.visible:=true;
    scantext.Visible:=true;
    scanvalue.text:='';
    checkbox8.Enabled:=true;
    cbspeedhack.Enabled:=true;


    Updatescantype;
    Scantype.ItemIndex:=0;



    //-----------------------
    //Get the expectedFilename
    //-----------------------
    if savedialog1.Filename<>'' then exit;
    if opendialog1.Filename<>'' then exit;

    Fname:=copy(processlabel.caption,pos('-',processlabel.caption)+1,length(processLabel.caption));

  if FName[length(FName)-3]='.' then  //it's a filename
    expectedFilename:=copy(FName,1,length(FName)-4)
  else //it's a normal title;
    expectedFilename:=FName;


    savedialog1.FileName:=expectedFilename;
    Opendialog1.FileName:=expectedFilename;
  end;
end;

procedure TMainForm.DosClick(Sender: TObject);
begin
  FromAddress.text:='80000000';
  ToAddress.text:='BFFFFFFF';
end;

procedure TMainForm.WindowsClick(Sender: TObject);
begin
  FromAddress.text:='00400000';
  ToAddress.text:='7FFFFFFF';
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  scanvalue.text:='';
  fromaddress.Text:='00400000';
  toaddress.Text:='7FFFFFFF';
  isbit:=false;

  panel3.DoubleBuffered:=true;

  old8087CW:=Get8087CW;
  Set8087CW($133f);  //for those changingmy code: 133f is NOT meant to be 1337

  Memimage:=TMemorystream.Create;
  FirstShiftSelected:=-1;

  oldwidth:=screen.width;
  oldheight:=screen.height;

  oldnumberofrecords:=0;

  logo.Hint:='Left-click to go to the Cheat Engine Homepage'#13#10+
             'Right-click to access the menu';

  logo.ShowHint:=true;

  numberoflines:=7;
  setlength(frozenbox,7);
  frozenbox[0]:=checkbox1;
  frozenbox[1]:=checkbox2;
  frozenbox[2]:=checkbox3;
  frozenbox[3]:=checkbox4;
  frozenbox[4]:=checkbox5;
  frozenbox[5]:=checkbox6;
  frozenbox[6]:=checkbox7;

  setlength(description,7);
  description[0]:=label28;
  description[1]:=label9;
  description[2]:=label17;
  description[3]:=label19;
  description[4]:=label33;
  description[5]:=label32;
  description[6]:=label31;

  setlength(address,7);
  address[0]:=label23;
  address[1]:=label10;
  address[2]:=label20;
  address[3]:=label21;
  address[4]:=label34;
  address[5]:=label35;
  address[6]:=label36;

  setlength(valtype,7);
  valtype[0]:=label18;
  valtype[1]:=label11;
  valtype[2]:=label22;
  valtype[3]:=label24;
  valtype[4]:=label40;
  valtype[5]:=label39;
  valtype[6]:=label37;

  setlength(value,7);
  value[0]:=label13;
  value[1]:=label14;
  value[2]:=label25;
  value[3]:=label26;
  value[4]:=label41;
  value[5]:=label42;
  value[6]:=label43;

  setlength(select,7);
  select[0]:=label12;
  select[1]:=label3;
  select[2]:=label16;
  select[3]:=label15;
  select[4]:=label27;
  select[5]:=label29;
  select[6]:=label30;

  updatescreen;

  newaddress:=0;

  VarType.ItemIndex:=3;
  UpdateScantype;
  ScanType.ItemIndex:=0;


end;

procedure TMainForm.ScanTypeChange(Sender: TObject);
begin
  updatescantype;
end;

procedure TMainForm.VarTypeChange(Sender: TObject);
var a: int64;
    b: double;
    c: Integer;
    d: single;
    hexvis: boolean;
    decbitvis: boolean;
    hexleft: integer;
    hextext: string;
    hexwidth: integer;
    casevis: boolean;

    oldscantype: integer;
    error: integer;
    temp:string;
begin
  hexvis:=true;
  hexleft:=187;
  hexwidth:=38;
  hextext:='Hex';
  casevis:=false;

  decbitvis:=false;


  if not (oldscantype in [smallerthan,biggerthan,exact_value,Advanced_Scan]) then
    scantype.itemindex:=0;
  //Scantype.itemindex:=0;
  case vartype.itemindex of
  0: begin //binary
       if (hexadecimalcheckbox.visible) then
       begin
         //convert it was type 0,1,2 or 6
         if hexadecimalcheckbox.Checked then
         begin
           //convert from hex to dec
           if length(scanvalue.Text)>0 then
           begin
             if scanvalue.Text[1]='-' then
               val('-$'+copy(scanvalue.text,2,length(scanvalue.Text)),a,error)
             else
               val('$'+scanvalue.Text,a,error);
           end;
         end else val(scanvalue.text,a,error);
       end;

       hexadecimalcheckbox.Checked:=true;
       rbdec.checked:=true;
       scanvalue.Text:=IntToStr(a);

       HexadecimalCheckbox.visible:=false;
       decbitvis:=true;
       Scantype.itemindex:=0;

     end;

   1,2,3,4:
     begin
       casevis:=false;


       scanvalue.MaxLength:=0;

       if rbdec.visible then
       begin
         if rbbit.checked then
           scanvalue.text:=IntToStr(binToInt(scanvalue.text))
         //else keep it the same
       end
       else
       begin
         if hexadecimalcheckbox.Checked and hexadecimalcheckbox.Visible then
           val('$'+copy(scanvalue.text,1,length(scanvalue.Text)),a,c)
         else
           val(scanvalue.text,a,c);

         scanvalue.Text:=IntToStr(a);
       end;

       hexadecimalcheckbox.enableD:=true;
       hexadecimalcheckbox.Checked:=false;
     end;

  5: begin //float;
       hexvis:=false;
       temp:=scanvalue.text;

       if rbdec.visible then
       begin
         //it was a bit
         if rbbit.checked then
           temp:=IntToStr(binToInt(scanvalue.text))
         //else keep it the same
       end
       else
       begin
         if hexadecimalcheckbox.visible then
         begin
           if hexadecimalcheckbox.Checked then
             val('$'+copy(scanvalue.text,1,length(scanvalue.Text)),a,c)
           else
             val(scanvalue.text,a,c);

           temp:=IntToStr(a);
         end;
       end;


       hexadecimalcheckbox.Checked:=false;
       HexadecimalCheckbox.enabled:=false;
       scanvalue.MaxLength:=0;

       val(temp,d,c);
       Scanvalue.Text:=FloatToStr(d);
     end;

  6: begin //double
       hexvis:=false;
       temp:=scanvalue.text;

       if rbdec.visible then
       begin
         //it was a bit
         if rbbit.checked then
           temp:=IntToStr(binToInt(scanvalue.text))
         //else keep it the same
       end
       else
       begin
         if hexadecimalcheckbox.visible then
         begin
           if hexadecimalcheckbox.Checked then
             val('$'+copy(scanvalue.text,1,length(scanvalue.Text)),a,c)
           else
             val(scanvalue.text,a,c);

           temp:=IntToStr(a);
         end;
       end;


       hexadecimalcheckbox.Checked:=false;
       HexadecimalCheckbox.enabled:=false;
       scanvalue.MaxLength:=0;

       val(temp,b,c);
       Scanvalue.Text:=FloatToStr(b);
     end;

  7: begin //text
       scantype.itemindex:=0;
       casevis:=true;
       cbCasesensitive.Checked:=true;
       cbCasesensitive.ShowHint:=false;


       hexadecimalcheckbox.enabled:=true;
       hexadecimalcheckbox.checkeD:=cbCaseSensitive.checked;
       hexvis:=false;
       hextext:='Unicode';
       hexleft:=170;
       hexwidth:=61;
     end;

  8: begin  //array of byte
       scantype.itemindex:=0;
       scanvalue.MaxLength:=0;
       hexadecimalcheckbox.enableD:=true;
       hexadecimalcheckbox.Checked:=true;
       for c:=1 to length(scanvalue.Text) do
         case scanvalue.text[c] of
           '-',' '  :  ;
           '0'..'9' :  ;
           'A'..'F' :  ;
           else     begin
                      scanvalue.text:='';
                      break;
                    end;
         end;
     end;
  end;

  hexadecimalcheckbox.Caption:=hextext;
  hexadecimalcheckbox.left:=hexleft;
  hexadecimalcheckbox.Width:=hexwidth;
  HexadecimalCheckbox.visible:=hexvis;
  rbdec.visible:=decbitvis;
  rbbit.Visible:=decbitvis;

  cbCaseSensitive.visible:=casevis;

  cbfastscan.Enabled:=vartype.ItemIndex in [2..6];

  UpdateScanType;
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
  if addform=nil then addform:=TAddform.Create(self);
  addform.showmodal;
end;


Procedure TMainForm.AddToRecord(line:Integer);
var error: Integer;
    Address: Dword;
    i,j:  Integer;
    bit: Integer;
    tmp: string;
    pc: ^char;

    found: boolean;
    bitl,nrofbits: integer;
begin
//first check if this address is already in the list!
  i:=getvartype;
  nrofbits:=length(foundlist.Items[line])-11;

  if i=5 then //binary
  begin
    val(FoundList.Items[line][10],bit,error);
    bitl:=nrofbits;
  end
  else
  begin
    bit:=0;
    bitl:=0;
  end;

  if i=7 then //text
    bit:=length(FoundList.Items[line])-8;  //in case of text use the bit record space for length

  if i=8 then //array of bytes
  begin
    //bit will get the number of spaces +1
    tmp:=foundlist.Items[line];
    pc:=@tmp[9];

    bit:=0;
    while pc^<>chr(0) do
    begin
      if pc^=' ' then inc(bit);
      inc(pc);
    end;

  end;

  val('$'+FoundList.Items[line],address,error);

  found:=false;
  for j:=0 to NumberOfRecords-1 do
    if (memrec[j].Address=address) and
       (i=memrec[j].vartype) and
       (bit=memrec[j].Bit) then
    begin

⌨️ 快捷键说明

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