📄 unit2.pas.svn-base
字号:
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 if memrec[j].vartype=5 then begin if memrec[i].bitlength=bitl then begin found:=true; break; end; end else begin found:=true; break; end; end; if not found then begin inc(NumberOfRecords); ReserveMem; memrec[NumberOfRecords-1].Description:='No Description'; memrec[NumberOfRecords-1].Address:=address; if getscantype=string_scan then memrec[NumberOfRecords-1].VarType:=0 else memrec[NumberOfRecords-1].VarType:=getvartype; memrec[NumberOfRecords-1].Frozen:=false; memrec[NumberOfRecords-1].FrozenValue:=0; memrec[NumberOfRecords-1].Bit:=bit; memrec[NumberOfRecords-1].bitlength:=bitl; hotkeys[NumberOfRecords-1]:=-1; //add output[0]:=CS_ADDADDRESS; pdword(@output[1])^:=memrec[NumberOfRecords-1].Address; output[5]:=memrec[NumberOfRecords-1].VarType; output[6]:=memrec[NumberOfRecords-1].Bit; output[7]:=memrec[NumberOfRecords-1].Bitlength; sendbuf(8); end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -