002 辅助框架的设计
文章目录
- 新建MFC项目
- 辅助框架设计
- 小结
如果你大概了解过游戏引擎的概念,就会知道 游戏引擎是指一些已编写好的核心组件。为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。
游戏引擎有一套通用的框架可以复用,那么游戏辅助当然也有。
新建MFC项目
首先新建一个MFC的项目,命名为GamePluginFrame
。
新建一个对话框资源
然后添加一个窗口类。
记得将项目属性设置为x64,因为传奇永恒是64位的游戏。
然后在MFC项目的InitInstance函数中创建一个线程
BOOL CGamePluginFrameApp::InitInstance()
{CWinApp::InitInstance();//创建线程 开启窗口HANDLE hThread = ::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)InitMainWnd, NULL, 0, NULL);CloseHandle(hThread);return TRUE;
}
线程函数用于启动窗口,防止主线程卡死
void InitMainWnd()
{MainWnd main;main.DoModal();FreeLibraryAndExitThread(theApp.m_hInstance, -1);
}
辅助框架设计
接着来设计整个游戏辅助的框架。按照模块管理的思想,将整过框架分为下面几个部分。
首先新建一个类,命名为Stu,里面保存游戏所需要用到的所有的结构体
然后是CPublic,里面保存整个项目需要用的通用的函数,例如字符串编码转换,输出调试信息等等。
然后准备一个内存操作类,里面封装对所有数据类型的读取操作,避免写*(DWROD*)EAX=Context
,这样的取内容代码,提升整体代码的可读性。
offset.h用于保存所有的游戏偏移,方便后续更新。
GlobalData.cpp用于保存游戏所需要用到的全局数据,例如游戏模块的基地址,我们只需要用一个全局变量存储,然后在dll注入的时候读取一次就可以了。
GameFunction.cpp用于保存找到的所有的游戏功能,例如走路call,选怪call,并且所有的函数都用Fn_
开头,可以提升后续的代码编写效率。
GameData.cpp用于保存所有游戏的数据,例如人物属性,周围遍历属性等等,全部存在这一个类里面。
暂时就只需要用到这些类。
小结
将所有的代码分成不同的模块进行不同的管理,会大大提升后续的开发效率。
框架的东西并不属于开发知识,而是属于开发经验,可以让你少走弯路,后续进行快速开发。缩短时间成本。对于这一块的内容,我也是花了大量的时间进行整合优化。
下一Part我们来讲具体的框架代码实现。
Github:https://github.com/TonyChen56/GameReverseNote
002 辅助框架的设计相关推荐
- 003 辅助框架的代码实现
文章目录 Stu CPublic公共函数 MemOper 内存操作 GlobalData 全局数据 接着上一篇文章,我们来聊关于整个辅助框架的代码实现 Stu 按照常规的思路,我们来构想一下接下来的开 ...
- 框架设计:PC 端单页多页框架如何设计与落地
框架的价值更多体现在应用层次上面,是一种整合作用,通常框架是一套大而全的特定问题域的解决方案,它与库的主要区别无外乎控制反转.可扩展性和不可修改,尤其控制反转是框架具备的典型特征:在框架里面,程序的控 ...
- 微软出品自动化神器【Playwright+Java】系列(十二)测试框架的设计与开发
一.前言 大家好,我是六哥! 又有好长一段时间没更文了,不是我懒,而是确实在更文上,没有以前积极了,这里是该自我检讨的. 其实不是我不积极,而是相对更文学习来说,优先级不是最高. 对我而言,目前最重要 ...
- 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例
本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的 ...
- 原理分析之二:框架整体设计
1.引言 本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络.后面文章我们再详细讲解各个组件. 2.整体设计 2.1 总体流程 (1)加载配置并初始化 触发条件:加载配置文件 ...
- React 与 Vue 框架的设计思路大 PK
大家好,我是若川.今天分享一篇框架设计思路的好文. 关于我 大家好我是花果山的大圣,今天很荣幸,有机会跟大家分享一下很多年轻人感兴趣的话题< Vue 和 React 设计思想 PK>,个人 ...
- 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[中篇]:请求响应
<200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有了真实的了解.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分 ...
- 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]
<200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有了真实的了解.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分 ...
- 应用框架的设计与实现学习手札系列(持续更新)
应用框架的设计与实现学习手札 类工厂服务 应用框架的设计与实现学习手札之类工厂服务--反射 转载于:https://www.cnblogs.com/stwyhm/archive/2006/08/14/ ...
最新文章
- 2018.1.9 区块链论文翻译
- 0xBenchmark中垃圾回收测试模块的分析及改进
- C#实验室常用软件-Windows Live Writer
- Springboot-application.properties
- C语言经典编程题--哥德巴赫猜想 、完数 、猜数字等
- Spring Boot配置跨域访问策略
- erlang开发环境配置
- $limit、$skip、$unwind
- C# 将控件的Controls属性下的所有控件取出以便使用LINQ语句进行查询
- Visual Studio Code 1.41 发布
- JavaScript String 对象、Math 对象使用详解
- TreeMap按key排序
- python源代码被解释器转换后的格式_python源代码被解释器转换后的格式是什么?...
- 深度:巨头覆盖之下中老年电商的创新突破策略-获客、选品、转化、粘性
- 哈工大计算机考研复试考纲,哈尔滨工业大学考研复试大纲
- 海思59V200PQtool环境的搭建
- MATLAB中readtimetable函数用法
- 函数式编程(JAVA)——Lambda表达式
- javascript将table的td变为可编辑的input,实现表格动态编辑(带示例版)
- SQL语句查询不同年龄段人数
热门文章
- DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—训练过程
- HighNewTech:横向、纵向动图查看《Why资本寒冬》——根据中国四大行每年(2004年~2018年)贷款主要流向来看当下的资本寒冬
- TF之AE:AE实现TF自带数据集AE的encoder之后decoder之前的非监督学习分类
- Crawler/ML:爬虫技术(基于urllib.request库从网页获取图片)+HierarchicalClustering层次聚类算法,实现自动从网页获取图片然后根据图片色调自动分类
- 在Hyperopt框架下使用XGboost与交叉验证
- Hadoop-2.7.4 八节点分布式集群安装
- 构造类斐波那契数列矩阵(矩阵
- Android中WebView的跨域漏洞分析和应用被克隆问题情景还原(免Root获取应用沙盒数据)...
- Android Device Monitor 文件管理的常见问题 - z
- 设计新Xlator扩展GlusterFS[转]