ryan_knight_12吧 关注:46,235贴子:2,738,363

回复:【教程】eve文件详解、如何自定义剧情、如何制作称霸模式

只看楼主收藏回复

大神!!!


IP属地:山东来自Android客户端54楼2019-04-27 13:26
回复
    下面讲讲剧情语句(开头的ffffffff00 04自动略去)
    显示类:主要是对007f 0e这个类的函数调用
    1号函数:(显示CG图,san11pkres.bin 10~58号图片)
    显示X1号CG:
    X1 42 04 00 7f 0e 0201 00
    2号函数:(画面切换)
    花X1秒时间切入黑暗:
    X1 02 04 00 02 04 007f 0e 10 02 00
    切入设置好的场景:
    3e8 02 04 ff 02 04 007f 0e 10 02 00
    3号函数:(CG图消失)
    取消cg
    00 7f 0e 03 00 00
    4号函数:(设定之后要切入的场景)
    设定场景序号为X1:(san11pkres.bin 59~66号图片,若X1为-1,代表大地图)
    00 7e 04 X1 09 04 007f 0e 04 02 00
    d号函数:(移动地图)
    移动地图至武将X1处,移动耗时X2
    X2 02 04 X1 14 04 007f 0e 0d 02 00
    移动地图至城池X1处,移动耗时X2
    X2 02 04 X1 16 04 007f 0e 0a 02 00
    移动地图至坐标X1X2,耗时X3
    X3 02 04 X2 02 04 X102 04 00 7f 0e 09 03 00
    11号函数:(一闪而过的动画,san11pkres.bin67~89号图片)
    一闪而过的动画X1
    ffffffff 02 04ffffffff 5d 04 ffffffff 02 04 ffffffff 02 04 ffffffff 02 04 X1 43 04 00 7f 0e11 06 00
    1a号函数:(决战称霸模式关卡开头的关卡名字幕动画)
    播放关卡X1名字(0~19为20个关卡的关卡名,20~39为20个关卡胜利动画,40~59为20个关卡败北动画):
    9c4 02 04 X1 8f 04 007f 0e 1a 02 00
    其他的一些与007f 0e无关的显示相关函数:
    高亮坐标 X1, X2
    01 01 04 X2 02 04 X102 04 00 80 0e 0d 03 00
    取消所有坐标高亮
    00 80 0e 0f 00 00
    画面暂停X1毫秒:
    00 01 04 ffffffff 0204 X1 02 0c 00 03 00


    IP属地:四川56楼2019-04-27 16:05
    回复
      声音类:对008a 0e类的操作
      0号函数:(播放一个很短的音效)
      播放音效X1
      64 02 04 X1 5d 04 008a 0e 00 02 00
      8号函数:(设置游戏的BGM)
      设置背景音乐为X1号BGM
      64 02 04 01 01 04 X15e 04 00 8a 0e 08 03 00
      对话框及MSG设置:
      人物X1对人物X2说msgX3,对话框中说话者名字为msgX4
      (若X1=-1,则为旁白)
      (若X4=-1,则采用人物X1的名字)
      X4 12 04 X2 14 04 X114 04 X3 12 0c 0b 04 00
      编辑MSG中出现的[0x02][0x0A]、[0x02][0x0B]指的与这个msg相关的0号武将、1号武将。。。
      使用上述对话框的语句,0号武将([0x02][0x0A])默认为X1,1号武将默认为X2。
      那么,如何设置2号武将([0x02][0x0C]),3号武将。。。呢?需要用到如下语句:
      设置人物X1为与MSG相关的X2号武将:
      X1 14 04 X2 73 04 007d 0e 0a 02 00
      编辑MSG中出现的[0x02][0x32][0x32]代表与这个msg相关的0号城市,[0x02][0x14][0x33]代表与这个msg相关的0号势力。。设置这两个的语句为:
      设定城池X1为与MSG相关的X2号城池
      X1 16 04 X2 77 04 007d 0e 0e 02 00
      设定武将X1所属势力为与MSG相关的X2号势力
      X1 14 0e 1b 00 04 X274 04 00 7d 0e 0b 02 00


      IP属地:四川57楼2019-04-27 16:05
      回复
        整理个武将类的函数整理个半天,明天继续吧。


        IP属地:四川59楼2019-04-27 16:07
        回复


          IP属地:广东来自Android客户端60楼2019-04-27 16:31
          回复

            你看看吕蒙的这个跟你的一样吗


            IP属地:北京61楼2019-04-27 17:25
            收起回复
              硬核


              IP属地:北京来自iPhone客户端62楼2019-04-27 17:26
              回复

                我现在换了个编辑器,打开之后去按教程里的内容搜索,依然搜不到。我现在最痛苦的是:按你说的内容挨个去搜,却找不到对应的位置,总是报搜索不到的错误。我是不是缺少了哪个操作?
                此外,教程中的:
                0x12e~0x2e2: 文件中各剧情的触发条件的结束地址- 0x49a
                0x2e6~0x49a: 文件中各剧情的内容的结束地址– 0x1e59a
                这些地址,是否诗说左边的哪00000220h这些东西?
                编辑器中全是双字,那么你教程中各种的三字怎么来的?比如193 14 0e 43 00 15 0e 00 11 14 00 04 ,显然搜不到193,莫非要193转换16进制后搜索?
                总之求现在最需要的就是让我能按教程找到相应的文件内容。谢谢羊神了


                IP属地:北京66楼2019-04-28 07:01
                收起回复
                  武将属性读取、设置:
                  这一块的函数比较多,在列述之前,有必要做一些概念讲解。
                  对武将属性的读写,实际上是调用武将类的函数,函数语句可以表述为如下形式:
                  【输入N】。。。【输入2】【输入1】【武将类】【末尾三双字】
                  末尾三双字,形式为:
                  X N 0,其中X为函数号,Y为这个函数所需的输入数量,最末的双字锁定为0
                  武将类,可以直接以X 14 0e表示(X为武将id),也可以通过调用其他类的函数获取,比如,调用这个玩家势力类的4号函数,可以得到玩家君主的武将类:
                  00 1d 0e 04 00 0e
                  其中,00 1d0e代表玩家势力,04代表4号函数
                  更复杂一点的用法,首先调用武将X类的1b号函数,即读取所属势力,来得到武将X的所属势力的势力类,接着调用这个势力类的4号函数,得到该势力的君主的武将类。:
                  X 14 0e 1b 00 0e 04 00 0e
                  这三个三双字连起来,就是武将X所属势力的君主的武将类
                  后面的输入,可以直接声明一个值,也可以是调用其他类的函数
                  直接声明一个值,那就是一个三双字:
                  X Y 04
                  这里X为所声明的值,Y为该值的类别(这个值代表武将id?还是代表城市id?还是。。。?)


                  IP属地:四川69楼2019-04-28 14:23
                  回复
                    常用到的类别有:
                    01 变量(理论上所有其他类别都可以用变量替代)
                    01 逻辑值
                    区别是变量还是逻辑值,需要用到这个输入往前的一个双字,如果是变量,那么往前的一个双字会出现原本应该是04,却变成06或17的情况。
                    02 常数
                    12 MSG id
                    13势力id
                    14 武将id
                    15 据点id(含关港)
                    16 城市id
                    18宝物id
                    1a官职id
                    1b爵位id
                    1e部队id
                    22国号id
                    26剧本编号
                    31五维id(0、1、2、3、4分别代表统武智政魅)
                    3c宝物状态
                    3d玩家势力序号
                    3f部队目标
                    41 兵种\兵装id(剑、枪、戟、弩、骑等。。)
                    45 设施菜单中选项id
                    48部队菜单中选项id
                    5d音效id
                    5e BGM id
                    如果输入是一个常数0x64,那么就写成64 0204。如果输入是0x64号武将,就写成64 1404. 以此类推。
                    输入也可以是调用其他类的函数,比如,如果输入是武将X所属势力的君主,那么输入将写成:
                    X 14 0e 1b 00 0e 04 00 04
                    这里也可以看出,输入都是以04为最末的双字,类都是以0e为最末的双字。
                    接下来列述的武将类函数,都不写十六进制码的表示形式了,而是写出函数号、所需的输入数量,每个输入的类别。结合上面所讲的概念,不难根据这些信息写出函数的十六进制码。


                    IP属地:四川70楼2019-04-28 14:24
                    收起回复
                      武将类的各号函数为:
                      04号函数:读取其所属,无输入,返回据点id
                      06号函数:读取武将所在部队,无输入,返回部队
                      1a号函数:读取其所属军团,无输入,返回军团
                      1b号函数:读取其所属势力,无输入,返回势力
                      1e号函数:读取其身份,无输入,返回常数
                      21号函数:读取其忠诚,无输入,返回常数
                      22号函数:读取其功绩,无输入,返回常数
                      29、2a、2b、2c、2d号函数:分别为读取统、武、智、政、魅,无输入,返回常数
                      3b号函数:返回其是否处于留守状态的逻辑值,无输入
                      43号函数:返回是否处于任务中的逻辑值,无输入
                      45号函数:返回是否在野或未发现的逻辑值,无输入
                      47号函数:设置忠诚,输入1为常数(忠诚)
                      48号函数:设置功绩,输入1为常数(功绩)
                      49号函数:设置以月为单位的留守计数,输入1为常数(月数)
                      4a号函数:设置以旬为单位的留守计数,输入1为常数(旬数)
                      4b号函数:设置夫妻,输入1为武将(配偶)
                      51号函数:设置所在,输入1为据点(所在)
                      53号函数:设置头像id,输入1为常数(头像id)
                      5b号函数:增减忠诚,输入1为常数(忠诚变化数)
                      5c号函数:增减功绩,输入1为常数(功绩变化数)
                      关于增减函数额外说一句,如果是增加,那么常数定义形式为X 02 04。如果是减少,那么常数定义形式为X 02 15 01 00 04。
                      5e号函数:设置五维,输入1为五维id,输入2为常数(五维值)
                      68号函数:设置官职,输入1为官职(官职id)
                      6e号函数:该武将被登庸,输入1为势力(加入势力),输入2为武将(登庸者)
                      6f号函数:设置所属,输入1为据点(所属)
                      这个列表并不完善,对其他函数的探索有两种方法:
                      1、对原版eve文件的探索解析
                      2、对游戏汇编代码的阅读(调用武将类函数的地址在66F47C处)


                      IP属地:四川71楼2019-04-28 14:24
                      收起回复