星露谷物语吧 关注:518,757贴子:3,091,260

【教程】自制npc之最简单的编写人物剧情

只看楼主收藏回复

三生教程的第一弹
似乎最近来提问的百来个朋友制作人物mod便迫不及待着手剧情,然而剧情的确是最困难而繁琐的一点。
所以为了方便大家,这里用最简单的方法告诉大家如何编写剧情。在没有编程经验的情况下。
ps.如果有条件建议参考麻薯的教程帖或者英文wiki获取进阶教程指令,这里只是单独的展示指令的效果。
由于此方法把简易上手放在第一位,可能不利于养成良好的编程习惯,不过足以让零基础快速制作属于自己的npc
老婆的OC随便镇,这也是我正在做的大型mod进度。


IP属地:北京1楼2022-06-19 12:28回复
    注意事项
    1.此贴可随意提问插楼,请带上具体红字或者问题,安装好前置后提问。以及确认好你的提问不是非常小白的问题。
    如 "json是什么?""怎么压缩文件?""前置是什么?"
    2.此贴的基础建立在你已经会基本把你的npc添加到游戏里,并且对游戏本体有一些理解。
    [如果实在不会,可以参考我的其他帖子]
    3.除前置外,推荐mod有CJB修改器以及全物品,坐标显示,等。
    我没有记录尾号的习惯,见谅


    IP属地:北京2楼2022-06-19 12:32
    回复
      广告
      立即查看

      开门见山,第一步,请把这段文字复制进你的人物content
      //00是我个人的注释习惯,代表这是他的0心事件,可以无视。
      LogName似乎是不用改的,但是我个人习惯改成XXXEvent
      第三行的最后一个单词Town,则是这个事件发生的地点。(仅限原版,在原创地点发生的事件我后面会介绍方法。)
      {
      "LogName": "DarnyEvent",
      "Action": "EditData",
      "Target": "Data/Events/Town",
      "Entries": {
      "":""
      }
      }
      方便复制。请确保符号正确,缺一不可,且全部为英文。
      以下是原版地名的英文。
      AnimalShop 玛尼的牧场里。
      ArchaeologyHouse 图书馆
      BathHouse_Pool 浴池
      BusStop 图书馆
      CommunityCenter 社区中心
      ElliottHouse Elliott的家
      FarmHouse 你的家里
      Farm 你的农场
      Forest 森林(指玛尼牧场在的那片森林)
      HaleyHouse 海利和艾米莉的家里
      HarveyRoom 哈维的房间
      Hospital 医院里
      JoshHouse 艾力克斯和他的爷爷奶奶的家里
      LeahHouse 利亚的家里
      Mine 矿井(指你进去的那里,而非内部)
      Mountain 山上,指罗宾的家在的那片山上
      Railroad 铁路,浴池在的地方。
      Saloon 酒吧
      SamHouse 山姆的家里
      SandyHouse 沙漠女孩桑迪的超市里
      ScienceHouse 罗宾的家里
      SebastianRoom 塞巴斯蒂安的地下室房间
      SeedShop 种子店
      Sewer 下水道
      Town 镇上
      Trailer 拖车 潘妮的家
      Trailer_big 帮助潘妮修房子以后,她的家里
      WizardHouse 法师塔里
      Woods 秘密森林
      请注意大小写和拼写,建议复制。
      如果我希望我的剧情发生在公交车站,就这么写。
      {
      "LogName": "DarnyEvent",
      "Action": "EditData",
      "Target": "Data/Events/BusStop",
      "Entries": {
      "":""
      }
      }
      这样说应该很容易理解吧。


      IP属地:北京3楼2022-06-19 12:50
      回复
        和写小学作文一样,事件也需要时间,地点,人物...
        然而我们已经解决了地点问题。
        那么就是我们给这个事件起个名字,顺便写个限制。
        第二步
        {
        "LogName": "DarnyEvent",
        "Action": "EditData",
        "Target": "Data/Events/Town",
        "Entries": {
        "12001010/t 2000 2600":""
        }
        }
        看起来可能难以理解,我们一步一步看
        12001010是你的事件独一无二的ID,每个事件都有一个特殊的唯一的ID
        支持八位数字,且不能用0开头
        你可以用随便的无序数字命名。但是不推荐12345678,1000000等
        极其容易和其他拓展mod重复。
        然后我们加上斜杠,做和后面的限制具体区分。
        指令很多很多,大家可以去看wiki以获取更多的限制
        我这里只举例最简单的。两个限制之间用斜线分开,无限制就不用加。
        w 天气 rainy或是sunny 不写默认晴雨都可以触发剧情
        t 时间 0600 2600表示在六点到凌晨两点(2600)都可以触发。
        z 季节,就是你写在Z后面的季节里不会触发这个剧情
        比如我希望我的剧情不要冬天触发 就写 z winter 如果只希望冬天触发 就是 z summer spring fall
        d 星期几 即我不希望这个剧情在星期几触发(Mon-Fri)用法同上
        D(注意,他和上面的区别是大写)XXX(名字)
        就是我和他是男女朋友状态下会触发的剧情。如果是两个人的修罗场剧情,就这么写
        D Jack Joe(改成两个你的角色名字)
        即我和他们两个同时男女朋友会触发。(不限好感)
        M 数字 玩家有了这么多钱会触发这个剧情 如 M 5000
        O XXX 如O Jack 就是玩家嫁给了Jack会触发这个剧情 可用于纪念日等。
        g <gender> 性别 只有玩家是男或者女会触发g male 或是g female 这么用
        i <item ID> 玩家拿着这个物品才会触发。如 i 233
        全物品ID在我其他帖子。
        e xxxxx(剧情id) 即玩家已经看过另一个剧情才能触发这个剧情 id就是它前置剧情的ID(就是上面那段数字。)
        我只列举常用的几个 全限制用法在这里 英文并不是很难



        IP属地:北京4楼2022-06-19 13:08
        收起回复
          限制条件写好的剧情应该是这样的
          对比上面不难理解,这段剧情的限制是需要在晚上八点到两点之间,晴天,和Drany以及Jack分别有500好感度,且看过id为12001010这事件
          我觉得这样应该比较容易理解。
          {
          "LogName": "DarnyEvent",
          "Action": "EditData",
          "Target": "Data/Events/Town",
          "Entries": {
          "12001011/t 2000 2600/w sunny/f Drany 500 Jack 500/e 12001010":""
          }
          }


          IP属地:北京5楼2022-06-19 13:12
          回复
            bdd


            IP属地:重庆来自Android客户端7楼2022-06-19 13:14
            回复
              好耶,通俗易懂!


              IP属地:山东来自Android客户端8楼2022-06-19 13:32
              回复
                给这种干货顶帖!辛苦楼主了!【虽然我不做mod】


                IP属地:吉林来自Android客户端9楼2022-06-19 13:41
                回复
                  广告
                  立即查看
                  顶顶楼主!


                  IP属地:美国来自Android客户端11楼2022-06-19 14:08
                  回复
                    第三步就是正式开始写剧情。
                    剧情也和写作文一样,需要起因经过结果时间地点人物...
                    限制已经帮我们限制了时间和地点,那么就是人物了。
                    {
                    "LogName": "DarnyEvent",
                    "Action": "EditData",
                    "Target": "Data/Events/Town",
                    "Entries": {
                    "12001011/t 2000 2600/w sunny/f Drany 500 Jack 500/e 12001010":"在这里写剧情哈哈哈"
                    }
                    }
                    前面的引号是限制,后面的引号是剧情。
                    {
                    "LogName": "DarnyEvent",
                    "Action": "EditData",
                    "Target": "Data/Events/Town",
                    "Entries": {
                    "12001011/t 2000 2600/w sunny/f Drany 500 Jack 500/e 12001010":"50s/57 98/farmer 56 93 2 Darny 57 101 2/pause 1000/skippable/"
                    }
                    }
                    这些是要写上的。
                    50s是这个剧情其中Bgm的名字。我记得BZ萌新新的视频有全音乐名字,用这个也行,挺好听的
                    依旧是斜线分离
                    57 98 是中心视角的坐标 如果你想要黑屏剧情就把视野写在地图外 ,比如999 999
                    那自然就是一片黑
                    比如你只想在秘密森林的湖边和帅哥甜言蜜语,但是视角是一整个大森林两个人左下角小小一点多怪啊
                    比如我想在这棵树下进行剧情,那么坐标就写42 10这样,剧情里这棵树就是中心了
                    这就是我建议显示坐标mod的原因

                    farmer 56 93 2 Darny 57 101 2 这里是每个人的坐标
                    farmer 就是你的坐标,Darny 改成你希望出场的人物的坐标
                    前两位数字是XY轴 最后一位数字是面朝向
                    0向上 1向右 2向下 2向左
                    如果你希望你的人物后续再出场,就可以先把他丢在地图外的坐标 比如Drany 999 999 1这样
                    /pause 1000/skippable/
                    两个指令之中建议加/pause 500/会让他慢一些
                    毕竟直接闪过的体验很不好
                    代表剧情可跳过 ,直接粘贴过去
                    然后再往后就是剧情的主体了
                    比如你想让NPC(你的原创人物)说话
                    /speak Drany \"...!!!。\"/ 可以把这个复制过去 然后再改里面的内容 效果如下

                    具体对话代码我的另一个帖子有写
                    赠送物品 就是[]里加id 比如[233]
                    写成这样
                    /speak Drany \"...送你冰淇淋。[233]\"/
                    /emote XXX(名字)16(表情ID)/
                    如果需要赠送原创物品。就在原创物品添加JA以后这么些。
                    /speak Windy \"...找到了。[{{spacechase0.JsonAssets/ObjectId:Ghostring}}]\"/
                    图没截好...

                    Ghostring改成你原创物品的名字,其他原封不动
                    /showFrame LYX 16/
                    显示人物特殊动作 效果如下



                    让这个NPC冒出表情泡泡 效果如下

                    表情id

                    /message \"...看起来只是普通女孩啊,可她为什么举止如此怪异?\"/
                    是显示消息框 效果如下

                    jump XXX 8
                    让这个人物跳起来
                    效果没截图


                    IP属地:北京12楼2022-06-19 14:09
                    收起回复
                      我懒了,过会再写。
                      可见写MOD是一件非常费劲麻烦的事情,MOD作者是不图回报为爱发电
                      而为了几块二传二卖的行为应该被抵制,这是对MOD作者投入心血的最好回馈。


                      IP属地:北京13楼2022-06-19 14:11
                      收起回复
                        码住,谢谢楼主!


                        IP属地:天津来自Android客户端14楼2022-06-19 15:23
                        回复
                          好帖,字词


                          IP属地:河南来自Android客户端15楼2022-06-19 15:24
                          回复
                            bdd


                            IP属地:四川来自Android客户端17楼2022-06-21 08:18
                            回复
                              广告
                              立即查看
                              cy


                              IP属地:湖北18楼2022-06-21 10:47
                              回复