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

📄 mainunit.pas

📁 游戏克星江湖行游戏修改工具全部源码,功能很强的。
💻 PAS
📖 第 1 页 / 共 4 页
字号:
{

name:(1999.12.1 -jhx1)
			江湖行 II jhx2 
			2002.10.13 renamed to 'GamePaladin II'
CopyRight:XuGanQuan  gqxunet#163.com 
Description:A game cheat tool

This program is free software; you can redistribute it       and/or modify it under the terms of the GNU General Public    License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later     version.                                                                                                                  This program is distributed in the hope that it will be      useful, but WITHOUT ANY WARRANTY; without even the implied    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      PURPOSE.  See the GNU General Public License for more        details.                                                                                                                    You should have received a copy of the GNU General Public    License along with this program; if not, write to the Free    Software Foundation, Inc.,                                    675 Mass Ave, Cambridge, MA 02139, USA.      
}
unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ToolWin, ImgList, ExtCtrls, Buttons, StdCtrls, Menus,
  Gauges, Grids, XPMan,mmsystem, OleCtrls, shlobj,comobj,activex,shellapi,SHDocVw,Registry;


resourcestring
String_notask='没有内存搜索任务;请新建加入;';
String_Addtask='没有内存搜索任务;现在就创建加入吗?';
String_Addtasktitle='没有任务信息';
String_noresult='搜索次数: 0 , 找到数目:0  ';
String_NoResultAgain='抱歉,找不到任何匹配的地址,是否再次搜索?';
String_NoResultAgainTitle='无结果信息';
String_TypeNoMatch='输入的类型不匹配上次类型(高阶/低阶),'+
                   '你想进行新类型的搜索吗? ';
String_TypeNoMatchTitle='输入的类型不匹配信息';
String_ScanResult='搜索次数:%d , 找到数目:%d ';
String_ByteType='Byte Type';
String_WordType='Word Type';
String_DWordType='DWord Type';
String_Int64Type='Int64 Type';
String_SingleType='Single Type';
String_DoubleType='Double Type';
String_StringType='Text Type';
String_applying='有效';
String_noapplying='不可用';
String_invalidSave='不能载入该文件,请检查是否为江湖行II(Game Paladin II)的存档文件';
String_AskRepeatInitLowLevel='已经进行了初始化内存的低阶搜索,'#13#10+
                         '是否再次初始化?';
String_AskRepeatInitLowLevelTitle='内存低阶搜索重复初始化信息';
String_InScan='当前的任务正在进行,请等待.';
String_InScanTitle='任务进行信息';
String_Taskinvalid='对应的进程/应用程序已经关闭.  ';
String_Maxtask='最多加入 %d 个任务,请删除部分无用的任务;';
String_NeedSeletedtask='请选择一个已有的任务.';
String_NotSethotkey1='主窗口弹出热键不合法或者该热键已经被另一程序占用;请重新设置.';
String_NotSethotkey2='抓图热键不合法或者该热键已经被另一程序占用.请重新设置';
string_setok='成功应用新的选项.';
String_selectdir='请选择一个目录:';

type
  TMainForm = class(TForm)
    MainImageList: TImageList;
    MainPageControl: TPageControl;
    MyFavorites_TS: TTabSheet;
    MemoryScan_TS: TTabSheet;
    archiveEdit_TS: TTabSheet;
    CapPic_TS: TTabSheet;
    Main_cb: TCoolBar;
    Main_TB: TToolBar;
    MemEdit_TB: TToolButton;
    archiveEdit_TB: TToolButton;
    CapPic_TB: TToolButton;
    SetOptions_TB: TToolButton;
    Help_TB: TToolButton;
    MyFavorite_TB: TToolButton;
    GameRecord_TB: TToolButton;
    GameRecord_TS: TTabSheet;
    SET_TS: TTabSheet;
    help_TS: TTabSheet;
    temp_Panel1: TPanel;
    Panel1: TPanel;
    Splitter1: TSplitter;
    MiddleImageList: TImageList;
    taskListPopupMenu: TPopupMenu;
    delTasks_Menu: TMenuItem;
    N2: TMenuItem;
    ClearAlltasks_menu: TMenuItem;
    FoundPopMenu: TPopupMenu;
    FoundMem_Memu: TMenuItem;
    FoundAdd_memu: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    EditLock_Memu: TMenuItem;
    Panel4: TPanel;
    LockPopMenu: TPopupMenu;
    LockMod_memu: TMenuItem;
    LockAddress_menu: TMenuItem;
    N7: TMenuItem;
    LockRemove_menu: TMenuItem;
    N9: TMenuItem;
    Panel5: TPanel;
    AddNew: TPopupMenu;
    New1_menu: TMenuItem;
    N3: TMenuItem;
    new2_menu: TMenuItem;
    Lock_Clear: TMenuItem;
    openLockRecordDialog: TOpenDialog;
    SaveLockRecordDialog: TSaveDialog;
    Lockcopy_memu: TMenuItem;
    Lockpaste_menu: TMenuItem;
    N6: TMenuItem;
    ImageList1: TImageList;
    DisplayProcess: TTimer;
    XPManifest1: TXPManifest;
    Options_TreeView: TTreeView;
    Option_ImageList: TImageList;
    Options_PageControl: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Set_1_RB1: TRadioButton;
    Set_1_RB2: TRadioButton;
    Set_1_RB3: TRadioButton;
    Set_1_RB4: TRadioButton;
    set_FromEdit: TEdit;
    Set_toEdit: TEdit;
    GroupBox2: TGroupBox;
    Label5: TLabel;
    Lock_Frequency_LB: TLabel;
    Lock_TrackBar: TTrackBar;
    TabSheet3: TTabSheet;
    Set_1_OK: TButton;
    Label4: TLabel;
    Main_HotKey: THotKey;
    Capture_HotKey: THotKey;
    SaveWay_RG: TGroupBox;
    SaveMode1: TRadioButton;
    SaveMode2: TRadioButton;
    CaptureSavepath_Edit: TEdit;
    SaveMode3: TRadioButton;
    Label8: TLabel;
    Set_2_ok: TButton;
    Help_popMenu: TPopupMenu;
    Content1: TMenuItem;
    Homepage1: TMenuItem;
    N1: TMenuItem;
    About1: TMenuItem;
    GroupBox3: TGroupBox;
    EnabledAlphaBlend_cb: TCheckBox;
    Alphablend_TrackBar: TTrackBar;
    set_autoRun: TCheckBox;
    Support1: TMenuItem;
    Makeappshortcut: TButton;
    Label6: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    path_bn: TButton;
    ToolBar1: TToolBar;
    newtask_TB: TToolButton;
    deltask_tb: TToolButton;
    MainPanel2: TPanel;
    Scan_bn: TSpeedButton;
    InputHelp_SB: TSpeedButton;
    backtogame_bn: TSpeedButton;
    Value_Edit: TEdit;
    VarType_CB: TComboBox;
    Panel3: TPanel;
    StaticText1: TStaticText;
    Task_info_Name_LB: TStaticText;
    Task_Info_SearchResult_LB: TStaticText;
    Scan_Gauge: TGauge;
    Found_LV: TListView;
    Panel6: TPanel;
    ToolBar4: TToolBar;
    SelMemEdit_TB: TToolButton;
    AddToLock_Tb: TToolButton;
    EditAddress_tb: TToolButton;
    lockRemove_TB: TToolButton;
    OpenLockRecord_TB: TToolButton;
    SaveLockRecord_TB: TToolButton;
    Splitter2: TSplitter;
    Lock_LV: TListView;
    Panel2: TPanel;
    tasks_LV: TListView;
    procedure FormCreate(Sender: TObject);
    procedure deltask_tbClick(Sender: TObject);
    procedure newtask_TBClick(Sender: TObject);
    procedure Scan_bnClick(Sender: TObject);
    procedure InputHelp_SBClick(Sender: TObject);
    procedure VarType_CBChange(Sender: TObject);
    procedure tasks_LVClick(Sender: TObject);
    procedure Value_EditKeyPress(Sender: TObject; var Key: Char);
    procedure SelMemEdit_TBClick(Sender: TObject);
    procedure tasks_LVEdited(Sender: TObject; Item: TListItem;
      var S: String);
    procedure ClearAlltasks_menuClick(Sender: TObject);
    procedure EditAddress_tbClick(Sender: TObject);
    procedure FoundMem_MemuClick(Sender: TObject);
    procedure Found_LVDblClick(Sender: TObject);
    procedure EditLock_MemuClick(Sender: TObject);
    procedure New1_menuClick(Sender: TObject);
    procedure Lock_LVDblClick(Sender: TObject);
    procedure Found_LVMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure LockRemove_menuClick(Sender: TObject);
    procedure FoundAdd_memuClick(Sender: TObject);
    procedure Lock_ClearClick(Sender: TObject);
    procedure LockAddress_menuClick(Sender: TObject);
    procedure Lock_LVEdited(Sender: TObject; Item: TListItem;
      var S: String);
    procedure Lock_LVMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure SaveLockRecord_TBClick(Sender: TObject);
    procedure OpenLockRecord_TBClick(Sender: TObject);
    procedure Lockcopy_memuClick(Sender: TObject);
    procedure Lockpaste_menuClick(Sender: TObject);
    procedure Set_1_RB1Click(Sender: TObject);
    procedure Set_1_RB2Click(Sender: TObject);
    procedure Set_1_RB3Click(Sender: TObject);
    procedure Set_1_RB4Click(Sender: TObject);
    procedure Lock_TrackBarChange(Sender: TObject);
    procedure MyFavorite_TBClick(Sender: TObject);
    procedure MemEdit_TBClick(Sender: TObject);
    procedure archiveEdit_TBClick(Sender: TObject);
    procedure CapPic_TBClick(Sender: TObject);
    procedure SetOptions_TBClick(Sender: TObject);
    procedure Help_TBClick(Sender: TObject);
    procedure backtogame_bnClick(Sender: TObject);
    procedure tray_minClick(Sender: TObject);
    procedure DisplayProcessTimer(Sender: TObject);
    procedure GameRecord_TBClick(Sender: TObject);
    procedure Options_TreeViewClick(Sender: TObject);
    procedure Set_1_OKClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Set_2_okClick(Sender: TObject);
    procedure EnabledAlphaBlend_cbClick(Sender: TObject);
    procedure Alphablend_TrackBarChange(Sender: TObject);
    procedure set_autoRunClick(Sender: TObject);
    procedure MakeappshortcutClick(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure path_bnClick(Sender: TObject);
    procedure Homepage1Click(Sender: TObject);
    procedure Support1Click(Sender: TObject);
  private
  //FSaveEditForm:TSaveEditForm;
    { Private declarations }
  public
  function NameToCode(RegName:String;out RegString:String):Boolean;
  function SelectDir(ParentHWnd: HWnd; const Root: WideString; out Directory: string): Boolean;
  function HotKeyToShortCut(mode,value:UINT):TShortCut;
  function ShortCutToHotKey_Mode(Value: TShortCut):UINT;
  function ShortCutToHotKey_Value(Value: TShortCut):UINT;
   procedure WMhotkeyhandle(var msg:Tmessage); message wm_hotkey;
    Procedure UpdateTaskInfo(theIndex:integer);
    Procedure AddTasktoList(theIndex:integer);
   Procedure AddFoundToListView(theIndex:integer);
   Procedure UpdateLockInfo(theIndex,theListIndex:integer);
   Function CheckForScan:boolean;
   procedure RaiseInputError;
   procedure SaveOptions;
       { Public declarations }

  end;

type
  MyOption=record
  WhichPage:Byte;
  AlphaBlend:byte;
  AlphaBlendValue:byte;
  MainHotKey_mode:UINT;
  MainHotKey_value:UINT;
  ScanAddressMode:byte;
  DefaultFromAddress:Dword;
  DefaultToAddress:Dword;
  CaptureSaveMode:byte;
  CaptureSavePath:String[255];
  CaptureHotKey_mode:UINT;
  CaptureHotKey_value:UINT;
  setActivePage:Byte;
  Lock_Interval:Word;
  FormWidth:WORD;
  FormHeigth:WORD;
end;

type
TTimerThread=class(TThread)
 private
  procedure ProcessLock;
 protected
 procedure Execute; override;
 public
 constructor Create;
end;


var   MainForm: TMainForm;
      ErrorInputNum:Byte;
      Apppath:String;
      String_GPSAVE:string[$30];
      GPOptions:MyOption;
      Lock_Enable:Boolean;
      HotKeyID_Main:Integer;
      HotKeyID_Capture:Integer;
implementation

uses GetProcessIDUnit,GPKernel, InputhelpUnit, MemEditUnit, MemRecordUnit,
     MyCalcUnit,CapturePicUnit, GameRecordUnit,MyfavoritesUnit,
     ArchiveEditUnit, HelpWebBrowserUnit, RegisterUnit;

{$R *.dfm}
function TmainForm.NameToCode(RegName:String;out RegString:String):Boolean;
var i,index,strlen:Integer;
    TempNum:BYTE;
    EncryptArray:array[1..20] of BYTE;
const  EncryptString:array[0..20] of String[21]=
             ('GreatXGQGamePaladinII',
              'asdasda$%^&*24tsgd6gf',
              'AAGUYXLKjljhda^*(dfs9',
              ')(*&^*()__jnMfcdlsaDJ',
              '&jldffggdfg****dasdff',
              '345874fBNNKhdfll;~1!2',
              '>>.,f....,cwe%TGhj3rf',
              '^&&(*ncfg0nldskf4tl$$',
              'fgvfdsg fgfdgdg   fa!',
              'HOw fdo you trun this',
              'What do you want fwgg',
              'MUYN c~3490&68xn7DT8O',
              'GBEKEGm )(845+_F_FGHH',
              '6C35CBV6BN88UCF3C346V',
              '165CVCBNM09FVN,O6/.,B',
              '7U6HFR6YHLO9@~L`~~   ',
              'T5VBNMynmCFMVM4Clku^#',
              'TBNBVCXVBVCVBN9CTOVVB',
              'ytiuB,Uuyg,/*&%TYJ;LK',
              'FHVUIJ5098CK;;3C905OP',
              'CV436-40J60VCCKLMZ%^&'
              );
const Validstring='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

begin
Result:=false;
RegString:='';
strlen:=Length(RegName);
if strlen<4 then exit;

/////key change//////////
TempNum:=0;
for i:=1 to strlen do TempNum:=TempNum+Ord(RegName[i]);
tempNUm:=abs(tempNum);
index:=TempNum mod 21;
///////fix length//////
if strlen<10 then RegName:=RegName+Copy(Validstring,1,10-strlen) else
   RegName:=Copy(RegName,1,10);

TempNum:=1;
for i:=1 to 10 do
begin
TempNum:=TempNum*((Ord(RegName[i]) mod 21)+1);
end;

DEC(TempNum,strLen);
tempNUm:=abs(tempNum);
inc(index,TempNum);

index:=index mod 21;

for i:=1 to 10 do  EncryptArray[i]:=Ord(EncryptString[index][i]);

for i:=1 to 10 do
begin
 if i=6 then RegString:=RegString+'-';
 TempNum:=Ord(RegName[i]) xor EncryptArray[i];
 if (Pos(chr(TempNum),Validstring)>0) then  RegString:=RegString+chr(TempNum) else
  begin
   TempNum:=TempNUm mod 36;  ///36 letter  mod :=0.. 35
   RegString:=RegString+Validstring[TempNum+1];
  end;
end;
Result:=True;
end;

function TmainForm.SelectDir(ParentHWnd: HWnd; const Root: WideString;
  out Directory: string): Boolean;
var
  BrowseInfo: TBrowseInfo;
  Buffer: PChar;
  //RootItemIDList: PItemIDList;
   ItemIDList: PItemIDList;
  ShellMalloc: IMalloc;
  //IDesktopFolder: IShellFolder;
  //Eaten, Flags: LongWord;
begin
  Result := False;
  Directory := '';
  FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
  if (ShGetMalloc(ShellMalloc) = S_OK) and (ShellMalloc <> nil) then
  begin
    Buffer := ShellMalloc.Alloc(MAX_PATH);
    try
      //SHGetDesktopFolder(IDesktopFolder);
      //IDesktopFolder.ParseDisplayName(Application.Handle, nil, POleStr(Root), Eaten, RootItemIDList, Flags);
      with BrowseInfo do
      begin
        hwndOwner := ParentHWnd;
        //pidlRoot := RootItemIDList;
        pszDisplayName := Buffer;
        lpszTitle := PChar(String_selectdir);
        ulFlags := BIF_RETURNONLYFSDIRS; 
      end;
      ItemIDList := ShBrowseForFolder(BrowseInfo);
      Result :=  ItemIDList <> nil;
      if Result then
      begin
        ShGetPathFromIDList(ItemIDList, Buffer);
        ShellMalloc.Free(ItemIDList);
        Directory := Buffer;
      end;
    finally
      ShellMalloc.Free(Buffer);
    end;
  end;
end;

constructor TTimerThread.Create;
begin
FreeOnTerminate:=True;
inherited Create(False);
end;

Procedure TTimerThread.ProcessLock;
var i,theIndex:integer;
    Ecode:integer;
    TempByte:Byte;
    TempWord:Word;
    TempDword:Dword;
    Tempint64:int64;
    TempSingle:Single;
    TempDouble:Double;
    TempString:String[16];
    theStatus:boolean;
begin
if (LockNum=0) then exit;
for i:=1 to lockNum do
begin   ///for
  theindex:=ListToLockIndex[i];
  MemLockRecord[theindex].Frozen:=MainForm.Lock_Lv.Items.Item[i-1].Checked;
if MainForm.Lock_Lv.Items.Item[i-1].Checked then
 try
 begin

 with MemLockRecord[theindex] do
 begin
  case VarType of
Byte_value:  begin
             val(valueStr,tempByte,Ecode);
             theStatus:=WriteMemory(ProcessID,Address,@tempByte,Byte_value,1);
             if theStatus then MainForm.Lock_Lv.Items.Item[i-1].SubItems[4]:=String_applying else
                               MainForm.Lock_Lv.Items.Item[i-1].SubItems[4]:=String_noapplying;
             end ;
Word_value:  begin
             val(valueStr,tempWord,Ecode);
             theStatus:=WriteMemory(ProcessID,Address,@tempWord,Word_value,2);
             if theStatus then MainForm.Lock_Lv.Items.Item[i-1].SubItems[4]:=String_applying else
                               MainForm.Lock_Lv.Items.Item[i-1].SubItems[4]:=String_noapplying;
             end ;
Dword_value:  begin
             val(valueStr,tempDWord,Ecode);
             theStatus:=WriteMemory(ProcessID,Address,@tempDWord,Dword_value,4);
             if theStatus then MainForm.Lock_Lv.Items.Item[i-1].SubItems[4]:=String_applying else
                               MainForm.Lock_Lv.Items.Item[i-1].SubItems[4]:=String_noapplying;
             end ;
Int64_value:  begin
             val(valueStr,tempInt64,Ecode);
             theStatus:=WriteMemory(ProcessID,Address,@tempInt64,Int64_value,8);
             if theStatus then MainForm.Lock_Lv.Items.Item[i-1].SubItems[4]:=String_applying else
                               MainForm.Lock_Lv.Items.Item[i-1].SubItems[4]:=String_noapplying;
             end ;

⌨️ 快捷键说明

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