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

📄 role.cpp

📁 自已写的单机修改程序(天河传说RPG)
💻 CPP
字号:
// Role1.cpp : implementation file
//

#include "stdafx.h"
#include "SkyRiver.h"
#include "Role.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRole dialog


CRole::CRole(CWnd* pParent /*=NULL*/)
	: CDialog(CRole::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRole)
	m_Attack = 0;
	m_Defend = 0;
	m_Grade = 0;
	m_Life = 0;
	m_Luck = 0;
	m_MaxLife = 0;
	m_Magic = 0;
	m_MaxMagic = 0;
	m_Money = 0;
	m_Quick = 0;
	m_Skill = 0;
	//}}AFX_DATA_INIT
	m_nCurPos = 0;
}


void CRole::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRole)
	DDX_Text(pDX, IDC_ATTACK, m_Attack);
	DDV_MinMaxDWord(pDX, m_Attack, 1, 99999999);
	DDX_Text(pDX, IDC_DEFEND, m_Defend);
	DDV_MinMaxDWord(pDX, m_Defend, 1, 99999);
	DDX_Text(pDX, IDC_GRADE, m_Grade);
	DDV_MinMaxDWord(pDX, m_Grade, 0, 99999);
	DDX_Text(pDX, IDC_LIFE, m_Life);
	DDV_MinMaxDWord(pDX, m_Life, 1, 99999);
	DDX_Text(pDX, IDC_LUCK, m_Luck);
	DDV_MinMaxDWord(pDX, m_Luck, 1, 99999);
	DDX_Text(pDX, IDC_MAXLIFE, m_MaxLife);
	DDV_MinMaxDWord(pDX, m_MaxLife, 1, 99999);
	DDX_Text(pDX, IDC_MAGIC, m_Magic);
	DDV_MinMaxDWord(pDX, m_Magic, 1, 99999);
	DDX_Text(pDX, IDC_MAXMAGIC, m_MaxMagic);
	DDV_MinMaxDWord(pDX, m_MaxMagic, 1, 99999);
	DDX_Text(pDX, IDC_MONEY, m_Money);
	DDV_MinMaxDWord(pDX, m_Money, 1, 999999999);
	DDX_Text(pDX, IDC_QUICK, m_Quick);
	DDV_MinMaxDWord(pDX, m_Quick, 1, 99999);
	DDX_Text(pDX, IDC_SKILL, m_Skill);
	DDV_MinMaxDWord(pDX, m_Skill, 0, 99999);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRole, CDialog)
	//{{AFX_MSG_MAP(CRole)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRole message handlers

BOOL CRole::OnInitDialog()
{
	CDialog::OnInitDialog();

	SetButton(this,IDC_SAVE,3,IDI_ICON11,NULL,NULL,_T("确定修改"),NULL,TRUE);

	return true;
}

void CRole::SetHProcess(HANDLE hProcess)
{
	m_Memory.Create(hProcess);
}

void CRole::ReadRole(int index)
{
	if(!m_Memory.GetHProcess())
		return;
	if(index>7)
		return;

	m_nCurPos=index;

	DWORD baseAddress=0x156c06c+(DWORD)index*0x000003d4;

	m_Memory.SetBaseAddress((LPVOID)baseAddress);
	
	m_Grade    = m_Memory.ReadMemory(0x00000000);
	m_Life     = m_Memory.ReadMemory(0x0000000c);
	m_Magic    = m_Memory.ReadMemory(0x00000010);
	m_MaxLife  = m_Memory.ReadMemory(0x00000078);	
	m_MaxMagic = m_Memory.ReadMemory(0x0000007c);
	m_Attack   = m_Memory.ReadMemory(0x00000080);
	m_Defend   = m_Memory.ReadMemory(0x00000084);
	m_Quick    = m_Memory.ReadMemory(0x00000088);
	m_Luck     = m_Memory.ReadMemory(0x0000008c);
	m_Skill    = m_Memory.ReadMemory(0xffffffcc);
	
	m_Money    = m_Memory.ReadMemory((LPVOID)0x00d64030);

	UpdateData(0);
}

void CRole::WriteRole(int index)
{
	if(!m_Memory.GetHProcess())
		return;
	if(index>7)
		return;

	UpdateData(1);

	DWORD baseAddress=0x156c06c+(DWORD)index*0x000003d4;

	m_Memory.SetBaseAddress((LPVOID)baseAddress);

	m_Memory.WriteMemory(0x00000000,m_Grade   );
	m_Memory.WriteMemory(0x0000000c,m_Life    );
	m_Memory.WriteMemory(0x00000010,m_Magic   );
	m_Memory.WriteMemory(0x00000078,m_MaxLife );
	m_Memory.WriteMemory(0x0000007c,m_MaxMagic);
	m_Memory.WriteMemory(0x00000080,m_Attack  );
	m_Memory.WriteMemory(0x00000084,m_Defend  );
	m_Memory.WriteMemory(0x00000088,m_Quick   );
	m_Memory.WriteMemory(0x0000008c,m_Luck    );
	m_Memory.WriteMemory(0xffffffcc,m_Skill   );

	m_Memory.WriteMemory((LPVOID)0x00d64030,m_Money);
}

void CRole::OnSave()
{
	WriteRole(m_nCurPos);
}

⌨️ 快捷键说明

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