风来时狂放 发表于 2024-3-6 09:17:54

游戏辅助工具之我见

曾经,我们是因游戏百度辅助;
现在,我们是因游戏制作辅助。
辅助在我看来,是对游戏苛刻的条件的抗议,也是为节省体力做出的抗争。
本帖隐藏的内容-----------------------------------------------------------------------------------------------------
游戏辅助类工具也是程序员生活的一部分,毕竟休闲时玩会游戏,可游戏太变态不好刷,那么该怎么办呢?
一.自动发言类
卖装了,卖药了……可是广告打不出去怎么办呢?世界里喊话吖~
吖的一句一句手喊,你想累死我啊~当然是使用伟大的喊话工具啦~
实现原理:
一般喊话工具是不会涉及Call的。因为这就太高级了,而且也很麻烦。有了SendMessage,Call喊话就是在落伍了。
目前喊话工具的实现原理分为以下两种:
1.模拟按键
2.SendMessage

模拟按键。顾名思义就是模拟键盘某键被按下,游戏产生相关相应功能。
一般游戏里的发言按键过程如下【我们以QQ堂游戏为例】:
=============================
Enter键打开对话框

输入发言内容

Enter键关闭对话框并发送封包实现喊话
=============================
SendMessage和模拟按键有相同点。
SendMessage也是通过方式达到模拟这种状态,不过它采用的是发送消息【要不然怎么叫SendMessage嘛】。
比较一下我们会发现,SendMessage优势明显:
1.CPU占用低
2.后台发言
而模拟按键一般都需要发言窗口保持最前,否则无法实现。
简单滴放出段SendMessage的代码:

[*]SendMessage (窗口句柄 [定位 + 1], 主热键 [定位 + 1], 真)

复制代码



这是模拟出打开对话框状态。

如何传送发言内容呢?
我们又提出两种方法:
文本投递和文本粘贴




文本投递源码:
.版本 2

.子程序 文本投递, , 公开, 向指定窗口句柄的窗口中后台发送文本内容,对游戏有效!(无返回值)
.参数 窗口句柄, 整数型, , 接收消息的窗口句柄
.参数 文本内容, 文本型, , 发送的文本内容
.局部变量 消息, 字节集
.局部变量 长度, 整数型
.局部变量 计次, 整数型

消息 = 到字节集 (文本内容)
长度 = 取字节集长度 (消息)
.计次循环首 (长度, 计次)
_投递消息 (窗口句柄, 258, 消息 [计次], 0)
.计次循环尾 ()


.版本 2
.DLL命令 _投递消息, , , "PostMessageA", 公开, 向指定窗口句柄发送消息
.参数 h
.参数 m
.参数 p
.参数 p
.版本 2
.子程序 文本粘贴, , 公开, 粘贴指定文本 必要时会自动激活窗口(无返回值)
.参数 句柄, 整数型, 可空, 欲粘贴文本处的窗口句柄 可空为当前窗口焦点处
.参数 文本内容, 文本型, 可空, 欲粘贴的文本内容 可空:清楚内容
.局部变量 tStr1, 文本型
.如果 (句柄 = 0)
句柄 = 取焦点句柄 ()
.否则
窗口置焦点 (句柄)
.如果结束
tStr1 = 取剪辑板文本 ()
置剪辑板文本 (文本内容)
_投递消息 (句柄, 177, 0, -1) ' 全选
_投递消息 (句柄, 770, 0, 0) ' 置内容
置剪辑板文本 (tStr1)优势又明显出来了。文本投递与SendMessage一样的强大。
由此我们可以总结出游戏自动发言工具的制作方法:
1.取窗口句柄
2.打开对话框
3.将发言内容置入
4.发送消息
如果想要循环,就弄个时钟循环执行即可~ ~
--------------------------------------------------------------------------
辅助游戏的设计【以英雄岛为例】
英雄岛的自动化里有自动加血、自动攻击等功能。但我觉得有点不满意自动攻击。(因为有的技能必须对人使用,而自动攻击是一通乱用。浪费蓝啊~~~~)
我就设计以下思路来设计我的辅助:
1.Call
2.模拟
想想Call要找半天,我毅然选择了后者。

设计流程:
首先找到锁定怪物的方法。有的技能必须锁定怪物后使用。
伟大的游戏会留后门给你的。
英雄岛自己设计的:Tab键切换敌人。
所以模拟找怪我们就用SendMessage触发Tab键事件~~~~
那么如何执行技能呢?
向伟大的快捷键致敬。
装备英雄后会默认:1、2、3、4和Q、W、E、R为技能键。
猥琐的人生无须多言,直接来挂:
1.取窗口句柄
当用户按下自动打怪后:
1._投递消息 (窗口句柄, , #Tab键, 0).版本 2

.子程序 按键消息, , 公开, 向指定窗口句柄的窗口中发送按键消息(无返回值)
.参数 窗口句柄, 整数型, , 接收消息的窗口句柄
.参数 键代码, 整数型, , 按键的键代码
.参数 状态, 整数型, 可空, 可空:按键(按下+放开) 1 输入字符 3 #按下 4 #放开
.参数 是否功能键, 逻辑型, 可空, 可空为假:普通键 真:功能键 (为功能键可用于热键技能不输入字符)
.局部变量 按下, 整数型
.局部变量 放开, 整数型

.如果 (是否功能键)
按下 = 260
放开 = 261
.否则
按下 = 256
放开 = 257
.如果结束
.如果真 (状态 = 1)
_投递消息 (窗口句柄, 258, 键代码, 0)
返回 ()
.如果真结束
.如果真 (状态 ≠ 4)
_投递消息 (窗口句柄, 按下, 键代码, 0)
.如果真结束
.如果真 (状态 ≠ 3)
_投递消息 (窗口句柄, 放开, 键代码, 0)
.如果真结束
返回 ()Tab以后就找到怪了。然后设计几个热键,让用户可以自定义技能到底释放哪几个。然后按照用户要求继续模拟按键即可。
英雄岛的血、蓝之类貌似是固定值,自己用CE扫扫就知道啦~
页: [1]
查看完整版本: 游戏辅助工具之我见