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

📄 memeditunit.pas

📁 游戏克星江湖行游戏修改工具全部源码,功能很强的。
💻 PAS
📖 第 1 页 / 共 2 页
字号:
SearchRow:=ARow;
SearchCol:=ACol;

 offsetindex:=(Nowrow-1)*16+(NOWCol-1);
 if (NowCol>=1) and (NOwCol<=16)  then
  begin
   MemWriteStartAddress:=MemReadStartAddress+offsetIndex;
  end
  else
  begin
   MemWriteStartAddress:=MemReadStartAddress+offsetIndex-16;
  end;

 Address_Edit.Text:=intToHex(MemWriteStartAddress,8);

if (NowCol>=1) and (NOwCol<=16) then
begin
try
 if GPKernel.ReadMemory(CurrentProcessID,MemWriteStartAddress,@TempByte,Byte_value)then
byteshow_Edit.Text:=intToStr(TempByte) else  byteshow_Edit.Text:='--';
 if GPKernel.ReadMemory(CurrentProcessID,MemWriteStartAddress,@TempWord,Word_value) then
wordshow_Edit.Text:=intToStr(TempWord) else wordshow_Edit.Text:='--';
 if GPKernel.ReadMemory(CurrentProcessID,MemWriteStartAddress,@TempDword,Dword_value) then
Dwordshow_Edit.Text:=intToStr(TempDword) else Dwordshow_Edit.Text:='--';
 if GPKernel.ReadMemory(CurrentProcessID,MemWriteStartAddress,@Tempint64,Int64_value) then
Int64show_Edit.Text:=intToStr(Tempint64) else Int64show_Edit.Text:='--';
 if GPKernel.ReadMemory(CurrentProcessID,MemWriteStartAddress,@TempSingle,Single_value)then
singleshow_Edit.Text:=FloatToStr(TempSingle) else  singleshow_Edit.Text:='--';
 if GPKernel.ReadMemory(CurrentProcessID,MemWriteStartAddress,@TempDouble,Double_value) then
 doubleshow_Edit.Text:=FloatToStr(TempDouble) else  doubleshow_Edit.Text:='--';
except
end;
end; ///end show if

end;


procedure TMemEditForm.byteEdit_sbClick(Sender: TObject);
var  Ecode:integer;
     TempByte:Byte;
begin
val(byteshow_Edit.Text,TempByte,Ecode);
if Ecode=0 then
if not WriteMemory(CurrentProcessID,MemWriteStartAddress,@TempByte,byte_value,1) then
showmessage(String_CannotWrite);

end;

procedure TMemEditForm.WordEdit_sbClick(Sender: TObject);
var  Ecode:integer;
     TempWord:Word;
begin
val(Wordshow_Edit.Text,TempWord,Ecode);
if Ecode=0 then
if not WriteMemory(CurrentProcessID,MemWriteStartAddress,@TempWord,Word_value,2)then
showmessage(String_CannotWrite);

end;

procedure TMemEditForm.DwordEdit_sbClick(Sender: TObject);
var  Ecode:integer;
     TempDword:Dword;
begin
val(Dwordshow_Edit.Text,TempDword,Ecode);
if Ecode=0 then
if not WriteMemory(CurrentProcessID,MemWriteStartAddress,@TempDword,Dword_value,4)then
showmessage(String_CannotWrite);

end;

procedure TMemEditForm.int64Edit_sbClick(Sender: TObject);
var  Ecode:integer;
     TempInt64:Int64;
begin
val(int64show_Edit.Text,TempInt64,Ecode);
if Ecode=0 then
if not WriteMemory(CurrentProcessID,MemWriteStartAddress,@TempInt64,int64_value,8)then
showmessage(String_CannotWrite);

end;

procedure TMemEditForm.singleEdit_sbClick(Sender: TObject);
var  Ecode:integer;
     TempSingle:single;
begin
val(singleshow_Edit.Text,TempSingle,Ecode);
if Ecode=0 then
if not WriteMemory(CurrentProcessID,MemWriteStartAddress,@TempSingle,Single_Value,4)then
showmessage(String_CannotWrite);

end;

procedure TMemEditForm.doubleEdit_sbClick(Sender: TObject);
var  Ecode:integer;
     TempDouble:Double;
begin
val(doubleshow_Edit.Text,TempDouble,Ecode);
if Ecode=0 then
if not WriteMemory(CurrentProcessID,MemWriteStartAddress,@TempDouble,Double_Value,8)then
showmessage(String_CannotWrite);

end;

procedure TMemEditForm.help_sbClick(Sender: TObject);
begin
ShowMessage(String_MemEditHelp);
end;

procedure TMemEditForm.Search_SBClick(Sender: TObject);
var TempByte:byte;
    Ecode:integer;
    I:integer;
begin
i:=1;
Val(Search_Edit.Text,TempByte,Ecode);
if Ecode=0 then
 begin
  While i<=256 do
   begin
       if SearchCol=17 then
       begin
       SearchCol:=1;
       inc(SearchRow);
       if SearchRow>=17 then  SearchRow:=1;
       end    else  inc(SearchCol);

    if Mem_Sg.Cells[SearchCol,SearchRow]=intToHex(TempByte,2) then
      begin
       Myrect.Left:=SearchCol;
       Myrect.Top:=SearchRow;
       myrect.Right:=Myrect.Left;
       Myrect.Bottom:=Myrect.Top;
       Mem_SG.Selection:=myRect;
       Exit;
      end;
       INC(i);
   end; ///whitle end;
 end ;



end;

procedure TMemEditForm.call_calc_sbClick(Sender: TObject);
begin
MyCalcForm.show;
end;

procedure TMemEditForm.Search_EditKeyPress(Sender: TObject; var Key: Char);
begin
if key=chr(VK_RETURN) then Search_sb.Click;
end;

procedure TMemEditForm.byteshow_EditKeyPress(Sender: TObject;
  var Key: Char);
begin
if key=chr(VK_RETURN) then byteEdit_sb.Click;
end;

procedure TMemEditForm.Dwordshow_editKeyPress(Sender: TObject;
  var Key: Char);
begin
if key=chr(VK_RETURN) then DwordEdit_sb.Click;
end;

procedure TMemEditForm.Wordshow_EditKeyPress(Sender: TObject;
  var Key: Char);
begin
if key=chr(VK_RETURN) then WordEdit_sb.Click;
end;

procedure TMemEditForm.int64show_editKeyPress(Sender: TObject;
  var Key: Char);
begin
if key=chr(VK_RETURN) then int64Edit_sb.Click;
end;

procedure TMemEditForm.singleshow_editKeyPress(Sender: TObject;
  var Key: Char);
begin
if key=chr(VK_RETURN) then SingleEdit_sb.Click;
end;

procedure TMemEditForm.doubleshow_editKeyPress(Sender: TObject;
  var Key: Char);
begin
if key=chr(VK_RETURN) then DoubleEdit_sb.Click;
end;

procedure TMemEditForm.mem_SGDblClick(Sender: TObject);
begin
MemRecordForm.Show;
end;

procedure TMemEditForm.mem_SGMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var offsetIndex:integer;
      TempByte:Byte;
      TempString:String[16];
begin
offsetindex:=(Nowrow-1)*16+(NOWCol-1);
if (NowCol>=1) and (NOwCol<=16)  then
begin
Lock_Address:=MemReadStartAddress+offsetindex;
Address_Edit.Text:=intToHex(Lock_Address,8);
Lock_ValueType:=Word_value;
GPKernel.ReadMemory(CurrentProcessID,Lock_Address,@TempByte,Lock_ValueType);
Lock_value:=intToStr(TempByte);
end
else
begin
Lock_Address:=MemReadStartAddress+offsetindex-16;
Address_Edit.Text:=intToHex(Lock_Address,8);
Lock_ValueType:=String_value;
GPKernel.ReadMemory(CurrentProcessID,Lock_Address-1,@TempString,Lock_ValueType);
Lock_value:=TempString;
end;
Lock_Name:='Money';
Lock_Type:=0;
Lock_Info:=0;
MemRecordForm.FormRefresh;
end;


procedure  TMemEditForm.MemRefresh;
var i,j:integer;
     tempNUm:Integer;
begin
Mem_SGScrollBar.Position:=MemReadStartAddress shr 4;
for j:=1 to 16 do
Mem_SG.Cells[0,j]:=intToHex(MemReadStartAddress+16*(j-1),8);

if GPKernel.ReadMemory_Array(CurrentProcessID,MemReadStartAddress) then
begin
   MemEditForm.Caption:=String_MemEditTitle +'<'+thetask[CurrenttaskIndex].Name+'>';
   for j:=1 to 16 do
     for i:=1 to 16 do
     begin
        tempNUm:=MemReaddata[(i-1)+(j-1)*16+1];
        if tempNUm=-999 then
        begin
        Mem_SG.Cells[i,j]:='??';
        Mem_SG.Cells[i+16,j]:='.';
        end
        else
        begin
         Mem_SG.Cells[i,j]:=intToHex(tempNUm ,2);
         if ((tempNUm>=$20) and (tempNUm<=$7E)) then Mem_SG.Cells[i+16,j]:=chr(TempNum)
         else Mem_SG.Cells[i+16,j]:='.';
        end;
     end;

end else
    begin
    MemEditForm.Caption:=String_MemEditTitle+'<'+String_Taskinvalid+'>';
    for j:=1 to 16 do
        for i:=1 to 16 do
          begin
          Mem_SG.Cells[i,j]:='--';
          mem_Sg.Cells[i+16,j]:='.';
          end;

     end;

end;

procedure TMemEditForm.MemRefresh_TimerTimer(Sender: TObject);
begin
MemRefresh;
end;

end.

⌨️ 快捷键说明

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