agopoe吧 关注:35,982贴子:549,281

【教程】易语言内存修改0基础入门教程 番外—超级技能完整设计

取消只看楼主收藏回复

说好的出一个番外教程,虽然有人发过超级技能的教程了,不过我还是想出一遍,目的是讲一遍一个程序设计的完整过程。
首先看这篇帖子前请先确保已经通读过易语言内存修改0基础入门教程一到五,否则讲的很多地方都会不懂,之前讲过的东西这篇帖子不会再讲。
本来想出视频教程的,但是简单计算了一下时间太长了,会导致视频太大,不好上传,还是依旧图文教程好了,图文教程有一个好处就是锻炼你们的耐心,编程没有耐心什么都做不好
好,废话不多说了,开始直播,请选择只看楼主阅读,今天不会更完


IP属地:河北1楼2015-07-30 20:07回复
    首先简单讲一下一个程序的完整设计过程,一般分为七步
    1、定义程序目标
    2、设计程序
    3、编写代码
    4、编译
    5、运行程序
    6、调试和测试
    7、维护与修改
    这七步是一般程序设计的常规过程,但对于不同的程序不一定非要走这七步,有时候有些步骤可以被省略,有时候有些步骤要重复,这几个步骤了解就好了,我只是为有兴趣做好程序的童鞋简单的介绍一下


    IP属地:河北8楼2015-07-30 20:10
    收起回复
      首先程序设计第一步——定义程序目标
      要创造一个程序,首要任务不是打开编程工具就开始写代码,而是要分析一下这个程序要解决的问题,以及怎么解决,可能大部分做辅助的人不会去思考这个问题,而且对于辅助这种小程序确实没必要,但是这是做一个好程序要必须做的,也许将来有些人不会再去做辅助,而是做一些更有用的、更复杂的程序,那么这一步就有必要了,而且养成好习惯对将来编写过程都是有帮助的
      那么来说说超级技能,它要解决什么问题,就是要修改游戏的技能数据,那么怎么做到修改数据呢,首先我们要读取到技能的数据,做人机的交互,让使用者知道我要修改的属性在哪里修改,然后要做如何修改数据,这就是大概的程序定义,但是你们要想做好程序,就要在此时思考的更多,考虑到一些将来可能会遇到的问题会更好


      IP属地:河北9楼2015-07-30 20:16
      回复
        第二步——设计程序
        设计程序不包括代码的编写,只是让你大概描绘出程序的大致框架、UI界面等等,当然对于辅助这种小程序,这一步基本可以在脑子里想想就行了,不用太费时间,但是还是那句话,养成好习惯对后边的编写有好处,最好是找个纸或者本写写画画的,同时想想这么设计界面在使用过程中会不会有不人性化的地方,先确定好了大概样式,省的以后在编写过程中不断地改变外观,但是也不是让你一次性就定下来样式,只是思考个大概就行,在编写过程中难免会再次调整界面
        那么我们来思考一下界面要怎么设计,首先需要一个按钮来初始化,可能有人会说在窗口载入的时候就做初始化不就好了么,还用这么费劲?但是如果你设计的程序要在游戏运行前打开呢,那么载入窗口的时候就初始化就不合适了,当然也不是死规定,如果你们设计的是游戏后再开启的程序,那么可以载入窗口的时候初始化,这样会更方便。接下来需要一个按钮和超级列表框,按钮用来读取全部的技能,超级列表框用来记录。之后还需要五个超级列表框(这里需要多少你们按照自己所做的功能决定,不是死规定)分别记录技能属性、技能等级、技能冷却、技能MP消耗、技能无色消耗这些要修改的数据(如果你所做的没有这么多功能,那就有几个功能就做几个超级列表框)。再后需要几个按钮来将数据读取、写入等等操作,以及时钟、选择框等等你们认为必要的组件
        然后到了真正设计界面的时候,那么我就按照我暂时随便想的一个界面布局来设计,不一定非要按照我这个规则来设计,只要你们看着舒服就行

        我大概设计成了这样,初始化在读取职业技能下面,运行的时候读取职业技能不可视,点完初始化才能看到,防止误操,设计双击技能名读取属性,右键添加修改,尽可能的减少了页面占用


        IP属地:河北18楼2015-07-30 20:40
        收起回复
          好了,我粑粑喝多回来了,今天就不更了


          IP属地:河北19楼2015-07-30 20:41
          收起回复
            这个时间开始更新会有多少人看到呢


            IP属地:河北92楼2015-07-31 17:40
            收起回复
              然而此篇教程写完我会把在这个教程中写的源码发出来,所以这货请看好,我会发源码的


              IP属地:河北93楼2015-07-31 17:41
              收起回复
                第三步——编写代码
                在开始写代码之前我们还需要先考虑一些东西,就是具体到如何解决我们要解决的问题
                前面我们也思考过了,要完成这个目标,首先要读取技能的数据,那么我们来细分一下要做什么子程序
                1、初始化子程序,包括各种数据的读入,进程ID的获取等等
                2、遍历所有的技能,并且显示出来
                3、读取技能的属性,包括各种属性、冷却时间、MP消耗、无色消耗等等,并且显示出来
                第二要修改各项数据,细分一下子程序
                1、将要修改的数据记录在超级列表框中,并且让用户可以修改
                2、设置时钟来根据记录在超级列表框中的数据实时写入数据,包括各种属性等等
                以及其他的一些子程序,细分一下
                1、各个组件之间的连接
                2、菜单功能
                3、其他等等


                IP属地:河北97楼2015-07-31 17:50
                收起回复
                  我的习惯呢,是不把处理问题的代码跟窗口程序集写在一起,不好查找问题,所以我新开一个程序集
                  首先第一个要解决的代码,就是初始化代码

                  按理说这里还应该读取大量的数据,只不过我这是做的一个简单的小程序,所以没什么数据可读取,就获取个进程ID就行了,但是我有设置了一个返回值,以判断是否获取到了进程ID
                  然后回去修改按钮的代码

                  这样就又优化了程序,只有初始化返回了真,才能继续向下运行


                  IP属地:河北102楼2015-07-31 18:17
                  收起回复
                    我先吃饭了,吃完饭继续


                    IP属地:河北104楼2015-07-31 18:33
                    回复
                      吃完回来继续更


                      IP属地:河北106楼2015-07-31 19:15
                      回复
                        接下来在讲其他的代码前,先讲一下超级技能的所有公式以及原理
                        技能等级:解密(技能地址+技能等级偏移)
                        技能冷却:解密((技能地址+技能冷却偏移)+8×(技能等级-1))
                        技能MP消耗:解密((技能地址+技能MP偏移)+8×(技能等级-1)) (记忆中是这样的)
                        技能无色消耗:解密((技能地址+技能无色偏移)+8×(技能等级-1)) (记忆中是这样的)
                        技能名称:转换Unicode转Ansi(读字节集((技能地址+技能名称偏移)+0)) (这里的0也是偏移,必须得有)
                        技能属性:浮点到整数(解密((技能地址+技能属性偏移+0+14)+8×(技能等级-1))) (这里的+0是一个遍历,从+0到+4、+8、+0+0、+0+4…………、+8+8+8+8+8+8+14)
                        这里要解释一下技能地址是什么,技能地址就代表了技能,他可以通过以下几种方式获得
                        1、人物基址+技能偏移
                        2、人物基址+技能栏+78+技能按键偏移
                        3、鼠标技能
                        所以其实添加技能就是把从人物基址+技能偏移读取到的数值写入到人物基址+技能栏+78+技能按键偏移,就是把技能地址写入到了通过技能栏获得技能地址的位置,这样就变成了这个技能
                        这里只是讲了公式是什么样的,后边我给出具体写法


                        IP属地:河北107楼2015-07-31 19:29
                        收起回复
                          首先解决遍历技能的问题,每句代码我都写了注释,看不清图的话就等最后我发了源码再看吧

                          上一层读取名称的公式说错了,那个0可以没有,我一直在琢磨那个0到底有没有用,刚刚仔细看了一下代码,发现0根本没用


                          IP属地:河北112楼2015-07-31 19:54
                          收起回复
                            有几天不更新了,前几天跟高中的一帮同学吃饭被几个混蛋灌了两瓶啤酒,难受了好几天今天继续更新,有没有想我啊,我知道没想


                            IP属地:河北154楼2015-08-03 20:32
                            收起回复
                              有关于读取的内容已经基本讲完了,明天继续讲写入的问题,今天就到这里了后面还会讲如何双击修改超级列表框


                              IP属地:河北163楼2015-08-03 21:44
                              收起回复