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

📄 formmemorytraineraddentry.pas

📁 冒险岛吸怪源码UCE的制作材料 用于冒险岛游戏的外挂
💻 PAS
字号:
unit formMemoryTrainerAddEntry;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls,cefuncproc,symbolhandler;

type TMemoryentry = record
  memrecnr: Integer;  //contains already all the stuff needed
  frozen: boolean;
  frozendirection: integer;
  setvalue: boolean;
  userinput:boolean;
  valuest: string;
end;

type
  TFrmMemoryTrainerAddEntry = class(TForm)
    Button1: TButton;
    Button2: TButton;
    editDescription: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    editHotkey: TEdit;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    ListBox1: TListBox;
    Label2: TLabel;
    btnDelete: TButton;
    Button3: TButton;
    Label5: TLabel;
    Listview: TListView;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ListviewClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure editHotkeyKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure editHotkeyKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
    laststate: word;
    lastshiftstate: TShiftState;
    
    editmode: boolean;
    memorystuff: array of Tmemoryentry;
  end;

var
  FrmMemoryTrainerAddEntry: TFrmMemoryTrainerAddEntry;

implementation

uses FrmMemoryTrainerAddEntry2Unit, AdvancedOptionsUnit,
  formMemoryModifier, MainUnit;

{$R *.dfm}

procedure TFrmMemoryTrainerAddEntry.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action:=CaFree;
end;

procedure TFrmMemoryTrainerAddEntry.FormCreate(Sender: TObject);
begin
  listbox1.Items:=advancedoptions.codelist.Items;
end;

procedure TFrmMemoryTrainerAddEntry.Button3Click(Sender: TObject);
begin
  FrmMemoryTrainerAddEntry2:=TFrmMemoryTrainerAddEntry2.create(self);
  FrmMemoryTrainerAddEntry2.showmodal;
end;

procedure TFrmMemoryTrainerAddEntry.ListviewClick(Sender: TObject);
begin
  btndelete.enableD:=listview.Itemindex>-1;
end;

procedure TFrmMemoryTrainerAddEntry.btnDeleteClick(Sender: TObject);
var i:integer;
begin
  for i:=listview.ItemIndex to length(memorystuff)-2 do
    memorystuff[i]:=memorystuff[i+1];

  setlength(memorystuff,length(memorystuff)-1);

  listview.DeleteSelected;

  if (listview.ItemIndex=-1) then btnDelete.Enabled:=false;
  if (listview.Items.Count=0) then
    btnDelete.Enabled:=false;
end;

procedure TFrmMemoryTrainerAddEntry.Button1Click(Sender: TObject);
var i,j,k,index: integer;
    keymod: word;
begin
  keymod:=0;
  if ssctrl in lastshiftstate then keymod:=keymod or MOD_CONTROL;
  if ssAlt in LastShiftState then keymod:=keymod or MOD_ALT;
  if ssShift in LastShiftState then keymod:=keymod or MOD_Shift;

  if keymod=0 then
    raise Exception.create('At least control, alt or shift have to be pressed to be a valid hotkey!');

  if (LastState=VK_SHIFT) or (LastState=VK_CONTROL) or (LastState=VK_MENU) then
    raise Exception.create('One other key has to be pressed!(except ctrl, alt or shift!)');

  if editmode then
  begin
    showmessage('edit');
  end
  else
  begin
    index:=length(frmMemoryModifier.trainerdata);
    setlength(frmMemoryModifier.TrainerData,index+1);

    if listbox1.SelCount>0 then
    begin //code
      setlength(frmMemoryModifier.trainerdata[index].codeentrys,listbox1.SelCount);

      j:=0;
      for i:=0 to listbox1.count-1 do
      begin
        if listbox1.Selected[i] then
        begin
          frmMemoryModifier.trainerdata[index].codeentrys[j].address:=advancedoptions.code[i].Address;
          setlength(frmMemoryModifier.trainerdata[index].codeentrys[j].originalopcode,length(advancedoptions.code[i].actualopcode));
          for k:=0 to length(frmMemoryModifier.trainerdata[index].codeentrys[j].originalopcode)-1 do
            frmMemoryModifier.trainerdata[index].codeentrys[j].originalopcode[k]:=advancedoptions.code[i].actualopcode[k];

          inc(j);
        end;
      end;
    end;


    frmMemoryModifier.trainerdata[index].hasedit:=false;
    if listview.items.count>0 then
    begin //addresses
      setlength(frmMemoryModifier.trainerdata[index].addressentrys,length(memorystuff));

      for i:=0 to length(memorystuff)-1 do
      begin
        if memorystuff[i].userinput then
        begin
          frmMemoryModifier.trainerdata[index].hasedit:=true;
          frmMemoryModifier.trainerdata[index].editvalue:=memorystuff[i].valuest;
        end;

        frmMemoryModifier.trainerdata[index].addressentrys[i].address:=mainform.memrec[memorystuff[i].memrecnr].address;
        frmMemoryModifier.trainerdata[index].addressentrys[i].interpretableaddress:=mainform.memrec[memorystuff[i].memrecnr].interpretableaddress;
        frmMemoryModifier.trainerdata[index].addressentrys[i].ispointer:=mainform.memrec[memorystuff[i].memrecnr].IsPointer;

        setlength(frmMemoryModifier.trainerdata[index].addressentrys[i].pointers,length(mainform.memrec[memorystuff[i].memrecnr].pointers));
        for j:=0 to length(mainform.memrec[memorystuff[i].memrecnr].pointers)-1 do
        begin
          frmMemoryModifier.trainerdata[index].addressentrys[i].pointers[j].Address:=mainform.memrec[memorystuff[i].memrecnr].pointers[j].Address;
          frmMemoryModifier.trainerdata[index].addressentrys[i].pointers[j].Interpretableaddress:=mainform.memrec[memorystuff[i].memrecnr].pointers[j].Interpretableaddress;
          frmMemoryModifier.trainerdata[index].addressentrys[i].pointers[j].offset:=mainform.memrec[memorystuff[i].memrecnr].pointers[j].offset;
        end;

        frmMemoryModifier.trainerdata[index].addressentrys[i].memtyp:=mainform.memrec[memorystuff[i].memrecnr].VarType;
        frmMemoryModifier.trainerdata[index].addressentrys[i].frozen:=memorystuff[i].frozen;
        frmMemoryModifier.trainerdata[index].addressentrys[i].frozendirection:=memorystuff[i].frozendirection;
        frmMemoryModifier.trainerdata[index].addressentrys[i].setvalue:=memorystuff[i].setvalue;
        frmMemoryModifier.trainerdata[index].addressentrys[i].userinput:=memorystuff[i].userinput;


       // frmMemoryModifier.trainerdata[index].addressentrys[i]

        frmMemoryModifier.trainerdata[index].addressentrys[i].value:=memorystuff[i].valuest;
        frmMemoryModifier.trainerdata[index].addressentrys[i].autoassemblescript:=mainform.memrec[memorystuff[i].memrecnr].autoassemblescript;
      end;
    end;

    //all the entrys have been added
    frmMemoryModifier.trainerdata[index].description:=editDescription.Text;
    frmMemoryModifier.trainerdata[index].hotkeytext:=editHotkey.Text;
    frmMemoryModifier.trainerdata[index].hotkey:=laststate;
    frmMemoryModifier.trainerdata[index].hotshift:=keymod;

    //now add this to the list
    frmMemoryModifier.recordview.Items.Add.caption:=frmMemoryModifier.trainerdata[index].description;
    frmMemoryModifier.recordview.Items[frmMemoryModifier.recordview.Items.count-1].SubItems.add(frmMemoryModifier.trainerdata[index].hotkeytext);
  end;

  modalresult:=mrok;
end;


procedure TFrmMemoryTrainerAddEntry.editHotkeyKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var newstr: String;
begin
  laststate:=Key;
  lastshiftstate:=Shift;

  newstr:='';
  if ssCtrl in Shift then newstr:='Ctrl';
  if ssAlt in shift then if newstr='' then newstr:='Alt' else newstr:=newstr+'+Alt';
  if ssShift in Shift then if newstr='' then newstr:='Shift' else newstr:=newstr+'+Shift';

  if newstr='' then
    newstr:=KeyToStr(key)
  else
    newstr:=newstr+'+'+KeyToStr(key);

  edithotkey.text:=newstr;
  key:=0;
end;

procedure TFrmMemoryTrainerAddEntry.editHotkeyKeyPress(Sender: TObject;
  var Key: Char);
begin
  key:=chr(0);
end;

end.

⌨️ 快捷键说明

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