很高兴的说一句,目前为止,前两篇文章《第一篇,成本与防封号》,《第二篇,手动模式的选择》收到诸多好评与赞扬,各位做游戏工作室的朋友对我的认可更是令我惊讶,所以呢,这第三篇结尾文章就多说点,希望对大家有点用。

第三章主要说“脚本的注意事项”, “脚本入门的一些通用模块”,“图色与算法”,“人工智能”。其中会穿插一些很实用的代码,能看懂的更好,看不懂的可以百度。
写之前呢,说一下本人:
我还是个宝宝,真的!还是个任性的宝宝,从小爱数学,于是高考数学146.从小不大喜欢语文,所以语文91.考了个全国排名前60的大学的数学系。混了四年,对,你没听错,混!毕业后,突然喜欢上编程,自学了计算机,学了数据库管理,java。
工作第二年的时候,工资拿到一万多。然后,懒得做网页了,辞职了。自学了c#和Windows编程。每天自娱自乐,开心得很。
最近呢,尤其2019年上半年,公司大量倒闭,企业大量裁员,看到了好多人迷迷茫茫,哭哭啼啼。总觉得做点什么好,就决定写几篇文章。不求播撒光明于天下,只是不想众多穷苦黎民泯灭于黑暗。好好看,仔细想,多问多学。保住一日三餐,足够。
前两篇教大家如何在游戏里赚钱,这篇教大家一些简单的脚本知识。个人有三个建议:
第一,科技,服务于人民。不要拿去祸害社会。
第二,多学知识,少搞游戏。本事学成,进正规公司,做个软件工程师不好?能行走于阳光之下,何必潜行于黑夜之间。
第三,只要能保住温饱,永远不要停止学习。
如果有人想学脚本,想学编程,告诉大家三个原则,如果你满足不了,建议你别做。
第一:技术员永远走在科技的前沿,哪怕迎着失败和嘲笑。
第二:技术员永远保持着最冷静的心态和最淡泊的耐心。
第三:保持终生学习,并且,学会的一定要教别人。当然,这些都是题外话,不过也是真心话。
下面开始正文。
先建立一个前提,本文所说的脚本,是这样定义的:
一个角色攻击力1,一个boss血量1000,所以,这个角色想杀了这个boss,需要攻击1000次。目前市场上有两种替代人工的办法:
第一种,将人物的攻击修改成999999,杀这个boss,一刀。
第二种,模拟键盘鼠标,让鼠标自动点击这个boss1000下。
第一种属于作弊,会对游戏产生大量伤害,尤其是点卡游戏,我们说的脚本不包括这些。
第二种,不修改游戏内存数据,甚至不读取游戏的内存数据,做到玩家怎么干,电脑就怎么干,我们称为脚本。
如果这套思路做成的软件,不用在游戏上,用在自动化办公上或者工厂机械上,我们称为机械自动化或人工智能。
脚本的注意事项。
为什么这个先说,因为能写脚本的毕竟是少数,大部分的人都是买脚本用。这个模块,也可以告诉大家,什么样的脚本最好别买,什么样的脚本比较容易封号。所有的游戏脚本,都要有一个原则:“低调”。本来就是灰色产业,能多低调就多低调,越不引人注意越好,又不是相亲当英雄,搞得那么光明堂皇干嘛?
下面分10点详细说明。
第一个注意事项:脚本界面。
拿网易某个游戏来说,很多脚本的界面上有什么买鬼切草,巫医等和游戏有关的字符或图片。如果我是网易的程序员,在随便一个时间点,对电脑桌面截个图。Windows的底层函数:CopyFromScreen(new Point(X, Y), new Point(0, 0), bit.Size); 很容易就能做到。一旦看到你在用脚本,迟早封你!
第二个注意事项:脚本名称。
如果一个脚本的exe名字就叫网易xxx脚本,即使打开后界面上没有相关字符也没用,因为exe名称决定了你的程序在任务管理器里面的进程名称。而一台电脑的所有当前进程名称,也是很容易获得的,这个代码行数较多,就不贴出来,有兴趣的朋友可以百度。当然,也有隐藏进程的方法,但是exe名称改掉不是更好吗?
第三个注意事项:调用一些需要释放的函数或者类时,一定要记得释放。
比如声明一个bitmap。Bitmap bit = new Bitmap(width, height, PixelFormat.Format24bppRgb);用完之后,一定记得写上bit.Dispose();把它释放掉。不然,就会越积累越多。游戏变卡不说,很多检测程序都会注意这块。你内存一直飙升的话,别说反脚本程序,360都会检测出来并且提醒你。
第四个注意事项:调用的第三方插件一定要有讲究。
很多初学者学脚本的时候,喜欢用按键精灵+大漠插件,还不加外壳。对此,我只能说,自己写个程序练练手是可以的,用这种脚本进入市场,除了封号还是封号!为什么?因为知道按键精灵的人都知道,按键是用来干嘛的?写脚本的。大漠插件是用来干嘛的?提供公用函数,方便写脚本的。那大点的游戏公司会不知道?不封你,只是想把你养肥了再杀而已。这里,不是说不能用按键和大漠,用的时候麻烦写复杂点,加点保护,加点外壳,大漠还可以修改自身的特征码呢。
第五个注意事项:写模拟按键都是要写延迟的。
如果真的想把脚本用起来,建议延迟改成随机数。模拟点击1000下,每次间隔都是一秒,你的手有那么准?一查就知道是脚本再点啊。
第六个注意事项:少用多线程。
很简单的道理,正常人就一个脑子一双手,不可能多线程操作,一查就知道是脚本。对于有些游戏,却是必须多开,比如梦幻的新手任务,一般都是多开做,但是就算多开,也可以不用多线程啊,通过图色分析每个界面进行到哪一步了,建立一个优先级别,先操作哪个后操作哪个,绝对来得及,就算慢点吧,慢点咋了?能慢几分钟?封组号,重新练得多久?
以上6点说的是增加被封几率。下面说几个坑定被封的,建议碰都别去碰。
第一个:修改内存,其实呢,这个可以不说,因为大家基本都不干这种傻事。
第二个:截获数据包。违法,违法,违法。重要的事情说三遍。并且很容易被查到。
第三个;后台模拟,目前后台模拟有两种api,一种是sendMessage,一种是postMessage。Vb,vc,C++和c#是可以直接调用这两个api的,易语言和大漠插件是把这两个api封装了下。这两种api都是利用了Windows的通信机制,消息传递。很遗憾的是,几年前,csdn论坛上就有人写了一个帖子,讲述了正常的按键和后台按键的检测,并且方法不难,代码不多,所以游戏公司也能很容易掌握。
第四个:虚拟机,尤其是服务器上装虚拟机。这玩意,以前搞诛仙3的时候用的很爽,天龙八部也很爽,地下城有些时间也很爽。但是吧,我有个同学,在爱奇艺,年薪三四十万,技术比我高那么一点点。直接对我说,你要是搞游戏,虚拟机别碰,具体为什么没对我说,但是既然有大神说了,还是别碰比较好。
这4点为什么说坑定封呢?因为搞得太嚣张了,嚣张到如果你是游戏的运维人员,你也忍受不了。一般人,搞个几十台电脑,慢悠悠赚点小钱,对游戏本身影响真心不大,人家也就睁一只眼,闭一只眼了。脚本一旦用了这4点,相当于你想把别人的游戏一锅端了,你把别人往死里搞,别人不把你往死里搞?
脚本入门的一些通用模块。
不管你选择什么语言,只要你在Windows上做,你必然要用到一些api函数,很多新手觉得很难,找又找不到,用又不会用,然后放弃了写代码,继续跑去板砖。
最近抖音流行一句话:你若堕落,神仙也救不了你,你若坚强,绝处也能逢生。学编程,本身必须要有坚强的意志。当然,没人教确实很容易绝望,所以这里贴出一些代码,希望能帮到一些在没有足够条件下,却真心想学编程的小朋友和大朋友。
以下所有的api函数,只提供名称,具体应用,自己去百度,都能百度到。
第一步:获得游戏焦点,专业的说法,是获取句柄,百度上有各种方法,我给大家说两种最简单的。对于单窗口WindowFromPoint(int xPoint,int yPoint);返回参数是指定坐标的窗口句柄。对于多窗口,首先获取桌面句柄,GetDesktopWindow();然后遍历桌面的子句柄,EnumChildWindows(IntPtr hWndParent, CallBack lpfn, int lParam);通过名称筛选。
第二步,由句柄得出窗口的四角坐标,也就是界面的位置。先自定义结构体,public struct RECT
{
public int Left; //最左坐标
public int Top; //最上坐标
public int Right; //最右坐标
public int Bottom; //最下坐标
}
然后获取坐标GetWindowRect(hWnd, ref lpRect);这样你就能知道界面在屏幕的哪个位置,然后可以计算出鼠标的点击位置和找图的区域。
第三步,截图。分前台和后台,不建议大家用后台取色,所以这里只说前台。.CopyFromScreen(new Point(X, Y), new Point(0, 0), bit.Size);截屏函数。
第四步,模拟鼠标键盘。也是说前台。鼠标移动,SetCursorPos(int X, int Y);鼠标点击mouse_event(int dwFlags, int dx, int dy, int dwData, 神奇的工作室 IntPtr dwExtraInfo);键盘:keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);延迟函数:Thread.Sleep(1000);
其他:读取文件,ReadLine()。随机数,Random()。窗口最大最小化SetForegroundWindow(IntPtr hWnd);注册热键,RegisterHotKey();
有了这些函数,入门就简单的多了。但是这些只是基础,想写出完整的脚本,还需要很多。
图色与算法。
知道怎么让鼠标点击,却不知道点哪里,也没用。所以,判断信息对脚本很重要,说成最重要也不为过。常用的3种方法,截获数据包,读取内存,图色分析。
第一种方法,已经讲过,强烈不建议。
第二种方法,读取内存,现在的主流方式。基本流程就是找基址,找指针,然后通过函数ReadProcessMemory读取数据。这种方式蛮好的,但是呢,每次游戏跟新就要更新代码,就要重新找基址。对于一个团队,到没什么,对于散人来说,增加了不少工作量。并且,游戏对内存保护这块越来越严厉,动不动来个十几级的偏移。所以这里说一下图色分析,图色分析好多脚本都用到了,但是极少有脚本全程用图色分析,大部分都是一半图色,一半内存。
我写脚本,就喜欢全图色,为啥呢?写好之后基本不用更新,除非游戏界面发生变化。并且,全图色的,基本不封号。因为我们不读取内存,不神奇的工作室碰后台,不碰多线程,全局鼠键模拟。不是说检测不到我们,只是我们很低调。但是全图色很难写,因为有些地方,确实,人都不好分辨,怎么去分析?这里,我们引进算法,相信很多人多多少少听过算法,但是不熟悉。
简单的来说,算法就是比较复杂的数学公式。区别是,公式是针对所有问题的,算法有很多是针对单个问题的。比如地下城,哪个怪离你最近?怎么选择最近的路线去接近这个怪?怎么单个消灭能达到最快?这些就可以用算法。再比如梦幻的新手任务,如果使用前台模拟,必然要用到优先度算法,确保完成任务的平均时间差不多。关于算法,往往涉及到核心问题的解决方案,这里不好多说,有兴趣的可以多研究研究。可以这么说吧,图色分析加算法,应该是未来几年高质量脚本的趋势。
人工智能。
个人认为,好的游戏脚本,就应该像人一样去操作,甚至像人一样去分析。反过来说,游戏的制作宗旨,是为了给玩家用,而不是为了反脚本。模拟人工,你永远能立于不败之地。那么我们先来讨论下人的分析思维。人的大脑是根据听觉视觉嗅觉味觉触觉等获取信息的。
对游戏而言,只有视觉和听觉。对于脚本而言,99%的信息靠视觉。我们重点谈论视觉,人的大脑,刚出生的时候,没办法分析文字,因为没有概念。至于视频,本身就是图片,只不过帧数比较快而已。所以,大脑分析最多的是图片。一张图片,并不是全部的信息有用。或者说,并不是每一块信息同等重要。
举个很污的例子,你在看片,更多的是在注意女主角,而不是男主,更多的是在注意女主的某些部位,而不是手指头发。那你为什么会养成这种分析习惯呢?因为我们的大脑,在长期的分析中,提取了很多模型。所以你知道一棵树是什神奇的工作室么样,你知道一条狗是什么样。同样,在脚本中,我们也需要模型(鉴于商业机密和只是产权,这里只说建立模型的思路,不能写具体步骤)。
这个模型,可能是某一个对话框,也有可能是某个字。对于字库,是必须的,甚至是首要的,大漠插件有自己的字库,百度识别也有自己的字库,都可以直接去调用。但是我建议,大家建立自己的字库,虽然时间比较长,但是建成后,真心很好用。至于有多好用,参照第二章写商人的利润的那段。
当然,仅仅有字库,是远远不够的,还需要很多别的模型,比如npc和怪物。你的角色,如何知道身边有哪些怪物,大部分的作者用的是基址遍历。这种方法谈不上好与不好,我的评价是两个字:能用。除了基址遍历,我们可以用建模型的办法,每个npc都有特征,不然玩家怎么分辨?把这些特征抓住,转化成特征值,通过特征值,照样能知道身边有哪些npc。知道了界面上的字和npc,你还需要知道鼠标在哪里。
很多游戏的鼠标都有自己的样子,但是这些样子几乎是不变的,或者小范围变化。否则,玩家怎么识别?既然人能一眼看出来,那说明,这个模型不难建立。
建立模型,一般从找色开始,图片的像素,有像素值,有些地方是固定的,有些地方是规律变化的,抓住这些,也就抓住了建立模型的关键。有了模型,你就能让你的脚本像人一样,通过女主的表情就知道男主用了多大力。有了分析,还需要操作。人的操作,是有血肉的,而不是机械的,是休闲式的,而不是拼命式的。
有些人写脚本,一丁点时间都不浪费,让游戏里的角色一直打打打,杀杀杀,跑跑跑。还很自以为是的认为利润最大化了。嘻嘻,反正我不这么想,不封号才是利润最大化。所以我的脚本,跑跑停停,偶尔还故意点错,跑路偶尔跑偏,然后修正一下,打怪偶尔放错技能,然后多一回合。哎,我的利润真心没多大,就是比较省心,因为很少封号。
讲个笑话,以前有个游戏的某个道具可以连续吃,而我呢,吊儿郎当的写代码,导致偶尔会同时吃掉两个,把一些客户心疼的,不要不要的,然后让我改,我懒得改。然后有两个客户跑去用别人的脚本了,临走前还骂我一顿,说我垃圾,不负责,不为客户找想,不当家不知道柴米油盐贵。但是,过了半个月,就回来了。原因估计大家也能猜到。所以啊,人嘛,总是会犯错的,所以啊,脚本呢,也是需要偶尔犯错滴。
游戏这行,本来就是细水长流,想一夜暴富,还是去抄大蒜比较好。
2019年,游戏工作室建立三步曲,写了3篇,用了3天时间,你说你们要是不回复,对得起我大冬天敲键盘的手吗?
好了,写完了,明天又要敲代码了,至于这些文章能帮到多少人,尽人事,听天命吧。写首歪事送给大家,写完去给老婆洗碗。。。
劝君穷时少饮酒,一杯能解几斤愁?劝君闲时多上进,来日方长不可停。
- 游戏
- 测试
- 检测
- 核酸
- 记者
- 下载
- 软件
- 辅助
- 一个
- 就是
- 赚钱
- 权限
- 模式
- 无限
- 武器
- 大师
- 数字
- 消费者
- 投诉
- 购买
- 生化
- 要塞
- 幽灵
- 更新
- 麒麟
- 穿越
- 很多
- 驱动
- 设备
- me
- 没见
- 很多人
- 才有
- 位置
- 时间
- 火线
- 逃生
- 地铁
- 科技
- 脚本
- in
- 生殖
- 湘西
- 医学
- 医院
- 篮球
- 街头
- 论坛
- 我们
- 枪战
- 活动
- 超级
- 网站
- 工作
- 神奇
- 萝卜
- 长江
- 免费
- 地里
- 这些
- 原因
- 处罚
- 执法
- 清理
- 物理
- 战绩
- 充分
- 赛季
- 越南
- 产业
- 出现
- 这个
- 现在
- 网络
- 吸引
- 副本
- 永久
- 冠军
- 决赛
- 等级
- 所以
- 自选
- 钻石
- 不同
- 扫射
- 方法
- 怎么
- 版本
- is
- 获得
- 调整
- 部分
- 不要
- 查询
- 考生
- 成绩
- 贵州省
- 求生
- 加速器
- cn
- 使用
- 平台
- 行为
- 作弊
- 地图
- 沙漠
- 地形
- id
- 视频
- 手柄
- 操作
- 手机
- 技能
- 提升
- 接球
- 吉普车
- 发现
- 流畅
- 限量
- 限时
- 巨人
- 速度
- 人类
- 电子
- 签名
- 行业
- 举报
- 传奇
- 宝库
- 案件
- 团伙
- 打掉
- 军需
- 福利
- 电源
- 主板
- 笔记本
- 接口
- 但是
- 跑跑
- 僵尸
- 社区
- 12月
- 幸运
- 毁灭
- 包括
- 表示
- 中的
- 能够
- 装备
- 主义
- 政府
- 角色
- 美国
- 大陆
- 修改
- ??
- 这是
- 直接
- 团长
- 设计
- 海报
- http
- 左右
- 人数
- 相当
- 大家
- 汽车
- 电动
- 零部件
- 台湾
- 重新
- 协商
- 特效
- 镜头
- 都是
- 公寓
- 樱花
- 可以
- 治疗
- 没有
- 先生
- 因为
- 服务
- 射击
- 瞄准
- 销售
- 嫌犯
- 演员
- 战争
- 建议
- 设置
- 太空
- 公司
- 名称
- 宇宙
- 直播
- 内容
- 小伙
- 他们
- 保卫者
- 甚至
- 英雄
- 领取
- 商品
- 一般
- 低价
- 骗子
- 里面
- 然后
- 挑战
- 体验
- 对于
- 这位
- 自动
- 系统
- 射手
- 目标
- 安全
- 系列
- 万代
- 合金
- 套装
- 寂静
- 奶妈
- 遇到
- 升级
- 正式
- 备份
- 用户
- 产品
- 开发
- 信号
- 私人
- 注册
- 价格
- 功能
- 苹果
- 已经
- 花费
- 什么
- 信息
- 嫌疑
- 个人
- 交流
- ing
- 名字
- 突围
- 折腾
- 一下
- 百科
- 物资
- 作品
- 作家
- 签约
- 作者
- 抄袭
- 小说
- 原著
- 周年
- 开枪
- 这次
- 贩子
- 官方
- 选手
- 形状
- 碎片
- 教程
- 战区
- 世界
- 我的
- 公告
- 打击
- 发售
- 畅销
- 今天
- 联盟
- 对手
- 扑克
- 宣布
- 上面
- 货源
- 代理
- 来说
- 问题
- 皮肤
- 优化
- 模型
- 大哥
- 电脑
- 卫士
- 寡妇
- 逃离
- 信托
- 业务
- 匹配
- 主机
- 步行
- 广场
- 三峡
- 美术
- 稀有
- 掌柜
- 叶子
- 头发
- 新浪
- 来自
- 也是
- 气质
- 伤害
- 拿到
- 残疾人
- 推荐
- 小学生
- 敌人
- 发射
- 冲锋枪
- 小人
- 练习
- 移动
- 这样
- 雷达
- 判断
- 比较
- 拉伸
- 增强
- 鼠标
- 玩具
- 糖衣炮弹
- 对面
- 如果
- 对方
- the
- he
- 各位
- 预售
- 拥有
- 漫画
- 信用卡
- 连载
- 喜欢
- 被盗
- 图片
- 技术
- 出租
- 收益
- 玻璃
- 质感
- 少年
- 时候
- 师姐
- 还有
- 分析
- 数据
- 数字化
- 透明
- 回复
- 播放
- 最终
- 金币
- 能量
- 行政
- 法院
- 福建
- 审判
- 抽奖
- 入口
- 赛事
- 了解
- 头疼
- 透视
- 不过
- 这类
- 裁决
- 攻击
- 登录
- 葡萄
- 5月
- 荣耀
- 流失
- 视角
- 第一
- 未成年人
- 糖果
- 不能
- 中旬
- 应用
- 示范
- 开展
- 智能
- 选择