热点推荐

查看1139 回复19 收起左侧

[交流] 2019职业工作室三步曲(下)--脚本与人工智能

打印 上一主题 下一主题
[复制链接]
  • TA的每日心情
    开心
    2017-8-23 08:53
  • 签到天数: 2 天

    [LV.1]初来乍到

    恒耀娱乐微信公众平台
    本帖最后由 ahqydhy 于 2019-3-5 13:29 编辑

    脚本与人工智能
                  很高兴的说一句,目前为止,前两篇文章收到的好评率达到100%,加了好友的各位朋友更是一个个热情的令我惊讶,所以呢,这篇结尾文章就多说点,希望对大家有点用。
           第三章主要说脚本的注意事项脚本入门的一些通用模块图色与算法人工智能。其中会穿插一些很实用的代码,能看懂的更好,看不懂的可以百度。
           写之前呢,说一下作者本人:我还是个宝宝,真的!还是个任性的宝宝,从小爱数学,于是高考数学146.从小不大喜欢语文,所以语文91.考了个全国排名前60的大学的数学系。混了四年,对,你没听错,混!毕业后,突然喜欢上编程,自学了计算机,学了数据库管理,java。工作第二年的时候,工资拿到一万多。然后,懒得做网页了,辞职了。自学了c#Windows编程。每天自娱自乐,开心得很。最近呢,尤其2018年下半年,公司大量倒闭,企业大量裁员,看到了好多人迷迷茫茫,哭哭啼啼。总觉得做点什么好,就决定写几篇文章。不求播撒光明于天下,只是不想众多穷苦黎民泯灭于黑暗。好好看,仔细想,多问多学。保住一日三餐,足够。
           前两篇教大家如何在娱乐赚钱,这篇教大家一些简单的脚本知识。个人有三个建议:第一,科技,服务于人民。不要拿去祸害社会。第二,多学知识,少搞娱乐。本事学成,进正规公司,做个软件工程师不好?能行走于阳光之下,何必潜行于黑夜之间。第三,只要能保住温饱,永远不要停止学习。
           如果有人想学脚本,想学编程,我可以免费引路。但告诉大家三个原则,如果你满足不了,建议你别做。第一:技术员永远走在科技的前沿,哪怕迎着失败和嘲笑。第二:技术员永远保持着最冷静的心态和最淡泊的耐心。第三:保持终生学习,并且,学会的一定要教别人。当然,这些都是题外话,不过也是真心话。下面开始正文。
           先建立一个前提,本文所说的脚本,是这样定义的:
           一个角色攻击力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名称改掉不是更好吗?第三个注意事项:调用一些需要释放的函数或者类时,一定要记得释放。比如声明一个bitmapBitmap 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函数,很多新手觉得很难,找又找不到,用又不会用,然后放弃了写代码,继续跑去板砖。最近抖音流行一句话:你若堕落,神仙也救不了你,你若坚强,绝处也能逢生。学编程,本身必须要有坚强的意志。当然,没人教确实很容易绝望,所以这里贴出一些代码,希望能帮到一些在没有足够条件下,却真心想学编程的小朋友和大朋友。由于篇幅有限,代码不能解释的很详细,又不懂的,欢迎加qq来问,只要我有时间,一切问答免费。以下所有的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,你还需要知道鼠标在哪里。很多娱乐的鼠标都有自己的样子,但是这些样子几乎是不变的,或者小范围变化。否则,玩家怎么识别?既然人能一眼看出来,那说明,这个模型不难建立。建立模型,一般从找色开始,图片的像素,有像素值,有些地方是固定的,有些地方是规律变化的,抓住这些,也就抓住了建立模型的关键。有了模型,你就能让你的脚本像人一样,通过女主的表情就知道男主用了多大力。有了分析,还需要操作。人的操作,是有血肉的,而不是机械的,是休闲式的,而不是拼命式的。有些人写脚本,一丁点时间都不浪费,让娱乐里的角色一直打打打,杀杀杀,跑跑跑。还很自以为是的认为利润最大化了。嘻嘻,反正我不这么想,不封号才是利润最大化。所以我的脚本,跑跑停停,偶尔还故意点错,跑路偶尔跑偏,然后修正一下,打怪偶尔放错技能,然后多一回合。哎,我的利润真心没多大,就是比较省心,因为很少封号。讲个笑话,以前有个娱乐的某个道具可以连续吃,而我呢,吊儿郎当的写代码,导致偶尔会同时吃掉两个,把一些客户心疼的,不要不要的,然后让我改,我懒得改。然后有两个客户跑去用别人的脚本了,临走前还骂我一顿,说我垃圾,不负责,不为客户找想,不当家不知道柴米油盐贵。但是,过了半个月,就回来了。原因估计大家也能猜到。所以啊,人嘛,总是会犯错的,所以啊,脚本呢,也是需要偶尔犯错滴。娱乐这行,本来就是细水长流,想一夜暴富,还是去抄大蒜比较好。
          写了3篇,用了3天时间,你说你们要是不回复,对得起我大冬天敲键盘的手吗?好了,写完了,明天又要敲代码了,至于这些文章能帮到多少人,尽人事,听天命吧。写首歪事送给大家,写完去给老婆洗碗。。。更多交流qq1944931596
          劝君穷时少饮酒,一杯能解几斤愁?劝君闲时多上进,来日方长不可停。





    您好!您暂时不能浏览帖子的全部内容,请 登录 | 没有帐号? 立即注册QQ登录
    良心3 坑货

    该用户从未签到

    沙发
    发表于 2019-3-7 11:13:04 来自手机 | 只看该作者
    恒耀娱乐微信公众平台
    朋友 我是支子柔 真的 3篇文章三部曲 很给力 很透彻 非常好 支持 支持 支持
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-3-7 21:08
  • 签到天数: 176 天

    [LV.7]常住居民III

    板凳
    发表于 2019-3-7 21:17:35 | 只看该作者
    恒耀娱乐微信公众平台
    自学c#和Windows编程。每天自娱自乐,开心
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2018-4-5 02:50
  • 签到天数: 2 天

    [LV.1]初来乍到

    地板
    发表于 2019-3-8 04:26:10 | 只看该作者
    楼主写的很好,我也全部看完了。
    但是你形容自己语文勉强及格,数学尖子水平真心没错!
    文章的逻辑的确非常严谨且干货颇多,可排版却让人眼花缭乱,看一篇文章费力,但看完收获真的不少!
    好文,感谢楼主分享!
    因为你努力的码字,并且没有多少废话。
    所以我的回复也必须多码一些字来表示我的诚意!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-3-19 19:38
  • 签到天数: 41 天

    [LV.5]常住居民I

    5#
    发表于 2019-3-8 07:20:12 | 只看该作者
    厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习厉害学习学习
    回复 支持 反对

    使用道具 举报

     成长值: 700

  • TA的每日心情

    6 天前
  • 签到天数: 106 天

    [LV.6]常住居民II

    6#
    发表于 2019-3-8 07:43:57 | 只看该作者
    难得的好帖子 赞一个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:39
  • 签到天数: 78 天

    [LV.6]常住居民II

    7#
    发表于 2019-3-8 10:45:20 | 只看该作者
    目前恒耀娱乐官网难得的好帖子 赞一个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-1-30 09:27
  • 签到天数: 473 天

    [LV.9]以坛为家II

    8#
    发表于 2019-3-8 13:17:32 | 只看该作者
    又看到了希望。。。。。。。。。。。。。
    回复 支持 反对

    使用道具 举报

     成长值: 15200

  • TA的每日心情
    郁闷
    2019-3-8 15:50
  • 签到天数: 448 天

    [LV.9]以坛为家II

    9#
    发表于 2019-3-8 16:00:37 | 只看该作者
    打工是不可能打工的,这辈子都不要打工。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 545 天

    [LV.9]以坛为家II

    10#
    发表于 2019-3-11 11:51:49 | 只看该作者
    难得的好帖子 赞一个
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表