河洛群侠传吧 关注:66,560贴子:1,148,042

[MOD教程]我制作MOD的一些经验

只看楼主收藏回复

前两天才写完了NPC对战MOD,趁着手热,分享一波MOD制作的一些经验,看完制作像NPC对战这样的小MOD应该不难,也算是一个入门教程吧。
工具:sublime text3 + EXCEL(sublime用于文本编辑换成别的你喜欢的也行,主要是要方便复制粘贴和查找,用window自带的记事本也不是不行,不过对话文本有6M,记事本打开和查找会慢。还有就是不要改变文件编码,UTF-8,会卡死。EXCEL用于观察数据,有时一条数据比较长占好几行,复制出来粘贴到EXCEL比较好看懂)
材料:官方config(必备,MOD就是在config基础上修修改改,原则上要最新的),别人做好的MOD(方便借鉴,这里拿我的NPC对战做栗子)
材料下载地址:teahouse.ys168.com(感谢茶馆提供的空间)
鉴于度娘经常吞我的楼,我打算采用问答式的写法,一楼一个问题,吞了就在后面补上。


IP属地:广西1楼2019-01-09 20:33回复
    1.如何创建本地MOD?
    在wegay里游戏启动页右键游戏名,然后“游戏目录”就跳到目录页了,然后创建一个文件夹Mod,不知道大小写是否敏感,反正和图片一样就行。

    进入Mod目录下,创建一个文件夹,随便起个英文名比如aaa,然后复制粘贴借鉴MOD的Config文件夹和Mod.config文件过来,清空Config文件夹方便自己写,修改Mod.config文件,把UID整行删掉,剩下的看着改改就行了。同理还可以复制粘贴出一个bbb文件夹,把Mod.config里的ID改得和aaa不同就对了。登录游戏,模块选择里两个MOD就都出现了,没有远程标签就代表是本地的,如果想上传到wegay的模组仓库,就点上传模块,不过这一步操作是要审核的,有兴趣的同学就请加入官方MOD群吧。


    IP属地:广西2楼2019-01-09 20:34
    回复
      2.Config文件夹对应的哪些功能?
      正所谓改编不是乱编,你把官方的config直接复制到MOD目录下固然可以,但是还是建议改什么就粘贴什么就够了,MOD的权限比原版config高一点点,改动的文件会覆盖原config下的同名文件执行。
      achievement(成就?不知如何改)
      battleconfig(战斗场景设置)
      effect(特效?不知如何改)
      movieevent(电影演出。不知如何改)
      nickname(称号)
      schedule(不知道是什么,不知如何改)
      skilltree(武功招式,改起来很麻烦)
      talent(感悟,看起来也很麻烦)
      textfiles(各种设置,MOD主要改动这个部分)
      剩下的文件看不懂,反正主要改动textfiles文件夹就对了。


      IP属地:广西3楼2019-01-09 20:37
      回复
        3.textfiles文件夹对应的哪些功能?
        全部解释我力有未逮,因为我也没用过一些文件,我就解释一些我用过的吧。
        NpcItem.txt(NPC的位置与信息)
        CharacterPropertyItem.txt(NPC战斗数据和掉落ID)
        NormalInventoryItem.txt(物品-第5列为等级)
        EquipInventoryItem.txt(装备-第5列为等级)
        EventCubeItem.txt(采集物品-包含重生时间)
        FormulaItem.txt(公式)
        StringTableItem.txt(调属性对应ID)
        npcgrowingitem.txt(NPC成长等级)
        npctalkitem.txt(NPC谈话)
        改动这些文件,可以做到设置新NPC,设置新物品,通过对话触发游戏内大部分功能、任务、战斗、调整属性、获得物品等等。新任务我没创建过,感觉挺复杂的,所以略过吧。


        IP属地:广西4楼2019-01-09 20:38
        回复
          4.什么情况下要重新开档?
          就个人经验,增加新物品、采集物品,增加新人物,调整人物坐标,需要重新开档。
          增加或调整对话,增加或调整战斗,不需要重新开档。
          体验上来说,调整人物位置要重新开档简直神烦啊,我这个MOD直接就在圣堂放置NPC还好说,要是我要测试一个在大云庵的任务,就要重新走一遍出洞流程,从圣堂不走流程直接传送出去,大地会开裂。


          IP属地:广西5楼2019-01-09 20:38
          回复
            5.如何创建一个新的NPC?
            先从NpcItem来说吧。

            ID必须唯一,名字随便,位置是3个数字,大概对应的是XZY的坐标吧。转向以开头小虾米掉落时面朝向为0度,大概向左吧。时间就是出现时间,留空就是24小时都在。可不可刷新还有重生时间我不太确定,反正两个false就是不刷新的,改动对话不用重新开档,后面的人物栏是对应的人物外观模型AppearanceItem.txt的ID和战斗模型characterpropertyitem.txt的ID,人物可以没有战斗模型,但必须有外观模型,例如丹菱就是没有战斗模型的,同一人物外观模型和战斗模型可以有多个,比如皇甫。在一场战斗中加入不存在战斗模型的ID的人物不会出场,但也不会报错。物品也是characterpropertyitem.txt里充当掉落数据,没有物品的人不能F和G。在神奇的机制下,偷只能偷一次,偷完就不会掉,但掉落可以掉很多次。任务好像能改变人物的位置与出现,但是我不懂怎么设置。别的数字我也不知道什么意思。官方档里存在测试人,新加人的话复制改ID就可以,然后就改位置啊对话啊人物ID这些,这样就产生一个新人了。动物的话也从对应的动物复制,单独修改人的外观ID指向动物是行不通的。还有如无必要,不要改动现有人物。


            IP属地:广西6楼2019-01-09 20:40
            回复
              6.为什么不要改动现有人物?
              在小说里叫因果缠身,一个人要刚好是任务的一环,你改动他,任务就断了,或者这个人看起来没什么对话,但某个剧情演出需要他。所以就算是一些杂鱼,宁可不要,把位置移到垃圾区0,0,0里,也不拿来当工具人,尽量都从测试人里复制,履历清白。说回到我的MOD里的戴普就是这样一类人,要铁匠令要声望要这要那,一堆的check(检查条件)且只打造一次,我新创的人物就算接上他的对话也完成铁匠令的条件,依然无法执行到打造任务。无奈只好把他从月岛移到圣堂,实在是不得已而为之,这对正常游玩是有损害的,简称“坑”。


              IP属地:广西7楼2019-01-09 20:40
              回复
                7.如何制作对话?
                从npctalkitem来说。

                ID必须唯一,有的地方是留0还是留空不太清楚,个人感觉还是留0吧,好像不会出什么问题。下一句和选项都是指向的对话ID。执行的话一般都是改MultiAction里的项目,举几个栗子:
                { "BlacksmithAction" }是打开打造界面。
                { "InventoryAction" : 0, "eq10717", 1}是获得eq10717这个装备1件,装备ID在EquipInventoryItem.txt里,同样的获得材料也是这个方法。
                { "TeamRecoverAction" }恢复状态,这个选项游戏里好像就出现一次,初次去拜观音像,会恢复队伍的血量和状态。
                { "BattleAction" : "bt60000001"}开启名为bt60000001.json文件的战斗,这个文件在battleconfig目录下
                { "SetNpcPropertyAction" : 310, 1, 2, "player"}第一个数310是轻功,在StringTableItem.txt里查,第二个数1是目标数是1,第三个数2是指设置为,"player"是ID,指玩家,整句话是把玩家的轻功降为1,这个是用来调整属性的。
                { "AddExpAction" : 1000000}增加经验100万。
                { "TeammateAction" : "n90201", 0}拉id为n90201的人入队。
                还有一些设置任务进程(称为旗标)的,基本上在对话文件里都能找到对应的操作。如果想找一些不懂的操作,可以用一周目的号找找触发的对话是什么,然后复制测试一下。


                IP属地:广西8楼2019-01-09 20:42
                回复
                  8.现有MOD可以调配音吗?
                  现在不可以,官方的配音也是时有时无,MOD的话也无法知道那句话对应的哪个配音。不过如果实在喜欢一句配音,可以用偷梁换柱的方法,把原版指向配音的台词让它指向新加的和原版一样台词的对话ID,然后绕过有配音的原版指向下一句,这样这句有配音的台词就解放出来了,而且也不影响现有的任务流程。我MOD的那句“你好烦啊”就是这么来的。


                  IP属地:广西9楼2019-01-09 20:42
                  回复
                    9.如何制作一场战斗?
                    Battleconfig复制一个json文件,改名字做为ID,"PlayerUnitSetting"是队伍里的人,不填就是默认,"CreateUnitInfo" 是队伍以外的人,包括友方(蓝条)、敌方(红条)、第三方(黄条),"UnitParty" 表示阵营,1 = 我方角色, 2 = 我方角色 (不可操控), 4 = 敵方角色, 8 = 第三方 (同時打敵方跟我方) 。"UseCustomPosition"为TRUE是使用自定位置,若要自定队伍中人的位置,需要把"PlayerUnitSettingType"这项设置为2,所以说开战想要站位分散单从MOD角度来说已经很难了。"AfterMovieId"和"LoseMovieId"务必要设为null,这个接电影演出很可能会导致不正确的位移出场景。剩下的掉落物、范围、失败是否继续都可以看着设置吧。主要是"LuaId"这一项,控制战场触发的,要在Battleconfig下建立schedule文件夹,里面创建ID.txt文件,在这里写入lua脚本控制战斗。


                    IP属地:广西10楼2019-01-09 20:43
                    收起回复
                      伸手党,精神支持一下,靠你们了


                      IP属地:加拿大来自Android客户端11楼2019-01-09 20:43
                      收起回复
                        10.如何写lua脚本?
                        首先看官方config下Battleconfig\schedule文件夹下的Readme.txt,再把schedule同级目录的Buffer文件夹下的Readme.txt结合起来看,战斗中调用的API好像就这些。然后根据我自己的经验,controller.GetAroundUnit这个方法是不受时序技能影响的,你就算开战前把主角的时序提到最前或最后,它获取的还是会依据范围内轻功的顺序来,而有的废柴的轻功比1级虾米还弱(孔大爷我说的不是你,而是指某个姓段的),假设你把主角的顺序记做Y,有的时候Y+1存在(主角比他轻功高),有时候Y+1不存在,而当Y+1不存在你又写了UnitList[Y+1].Id时,从这句话往下的语句都不会执行,不知道这是不是lua脚本的常态,错误了不影响结果只是不再往下执行。Lua脚本在战斗时似乎没有什么好的调试手法,print并不会输出到右上角的信息框中,controller.Talk只能输出定好的话,想输出战场中的环境变量的话我暂时也没有什么好想法。要实现功能还是要多参考之前成功的写法,像倒数第三战军营车轮战bt0ending1.txt,各路人马来来往往,写得超长,可以看看是怎么触发条件的。


                        IP属地:广西12楼2019-01-09 20:43
                        回复
                          11.如何调整NPC等级限制?
                          formulaitem.txt里一行的第4个数字就是这个NPC的等级上限,到这个等级,这个NPC就不吃经验了,改成99的话,NPC就能成长到100级,不过似乎最高也就100级,再高也不会达到。另外老虾米皇甫是不会成长的。


                          IP属地:广西13楼2019-01-09 20:44
                          回复
                            12.如何查看游戏内置公式?
                            FormulaItem.txt,不建议修改,我改经验公式都炸了几次,主要是看看伤害啊防御啊这些数值是怎么用公式实现的,当然把掉率改成100无伤大雅,能杀一次自然能读档杀第二次,单机游戏不需要刷那么久。


                            IP属地:广西14楼2019-01-09 20:44
                            回复(6)
                              如何替换游戏bgm


                              IP属地:广东来自iPhone客户端15楼2019-01-09 21:31
                              收起回复