快快登录说出你的故事吧~!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 K大叔 于 2022-3-20 02:03 编辑
系列课程索引: 如何编写Zerbu's MOD Constructor(V4)脚本系列课程(一)——函数思维、对话控件 =================================================================================================
前言 本系列教程是假定你已经学过了MMCCC的教程贴,对MC已经有了基本的了解,这时当你有比较好的玩法想去实现,但苦于逻辑过于复杂,难以理清的时候,可以参考这个系列教程获得一个流程可视化编写脚本的方式。 顺便,本系列教程,也会把MC中一些可用功能、Bug及应对方式、一些常见想法的实现做个简单的说明。
一、MC里的函数与调用 实现大型MOD的重点是活用BUFF和LOOT; BUFF不仅仅是情绪展示,如果你稍微学过编程,你可以把BUFF理解成函数,而LOOT就是对函数(BUFF)的调用; 当然,LOOT不仅仅可以调用BUFF还可以做很多事,BUFF的用处也非常丰富; 但是,BUFF可以当函数用,LOOT用于调用函数(BUFF),是通篇最重要的概念,请务必先理解
我们先从一个简单的线性流程来理解这个概念:
目标:创建Loot1调用Buff1,然后Buff1执行一些功能(通过情绪展示信息、延迟10分钟),结束时通过Loot2调用Buff2 步骤: 1.1 先创建名为Loot_test1、Loot_test2的两个LOOT和名为Buff_test1、Buff_test2的两个BUFF:
特别提醒:不要使用中文汉字对Element进行命名!!!
创建好后,分别进行编辑: 1.2 Loot_test1:
Reference Type这里选择“ExistingElement”
接下来选择要调用的函数Buff_test1:
接下来以下两种方式都可以打开Buff_test1:
1.3给Buff1_test1添加一些信息:
在Buff1结束时采用LOOT2: (我们通过ADD ELEMENT方式自定义产生,在左侧Roots列表可以看到的Element,可以方便的通过
来选择,支持Ctrl、Shift多选)
接下来也是有两种方式打开Loot_test2:
1.4 编辑Loot_test2,调用Buff2,详细过程和1.1相同,结果如下图:
1.5 编辑Buff_test2,结果如下图:
到这里,你已经完成了一个最简单的示例,把BUFF当成函数去调用和执行,希望你能借此理解“BUFF可以当函数用,LOOT用于调用函数(BUFF)” 这句话的含义
当然这个流程的起始是个Loot,还需要有个触发机制才能执行,下边我们通过与他人对话Social Interaction来触发这个LOOT,顺便讲解下Social Interaction的用法
二、Social Interaction的用法
2.1 创建SocialInteraction_test1
在Outcomes(Only OneAllowed)里需要选且只选一种对话类型,看名称应该很好理解,需要注意的是第二个funny应该是MC作者手滑,其实是恶作剧对话:
Disable Autonomous这个选项存在bug,添加后并不会生效,需要打包好Package文件后,在S4S中再次编辑,找到这个Interaction Tunning手动把allow_autonomous这一项从True改成False(你仍需要在MC中添加DisableAutonomous组件,否则生成的Package文件中不会产生这一项)
2.2 下面我们来逐项编辑SocialInteraction_test1
2.2.1 Global Test Condition Set
我们设定个条件,此对话内容的对象必须是成年人: 这里可能会有疑惑的是Participant这一项,是指条件判断的角色是谁,默认这里留空,代表玩家正在操控的小人,本示例里我们希望进行条件判定的是聊天对象的属性,所以选TargetSim(进行聊天的目标角色)
另外Sim Info里MC也有个Bug,就是Is NPC这个判定正好反了,如果你希望判定的角色是玩家不是NPC,需要选Yes而不是选No
2.2.2 Interaction Name 此项是对话泡的文字显示内容,其中Name是默认显示的内容,下边是各个情绪专属的显示内容,根据玩家的主要情绪,可以有不同的说法,如果留空,就采用默认的Name里的内容
2.2.3 Interaction Tooltip
鼠标悬停在对话泡上时,浮出的小提示内容
2.2.4 Pie Menu Category
决定这个对话出现在哪个层级 注意,SIMS的机制中,点击一个人,直接显示的这些对话选项中,“选择更多”是分门别类按树状结构组织起来的当下可以进行的对话的内容库,而除了“选择更多”,其他选项都是从这个对话内容库中按照一定的规则推荐出来的,所以可以认为这个“选择更多”就是根目录节点,对应的是15500<<<more;
MC默认选择的129388<<<Actions在更多选择下的“动作……”目录中
另外比较常用的有:
你也可以自己创建对话目录: 你创建的这个自定义目录,也需要挂接母节点目录,如上图示例,挂接在了“有趣……”里 当你的MOD有很多对话,你希望汇总时,自定义目录是非常好的选择 不过需要注意的是,如果一个目录中,当前可以展示的对话选项只有1项时,这个目录就不会显示了,改为直接显示这个仅剩的对话选项。
2.2.5 Pie Menu Icon
对话文字前边的小图标,可以留空就是没有
2.2.6 各种Outcomes,以Friendly Interaction为例: - Global Interaction:勾选后,只要Global Test Condition Set和Wait Time满足条件,对话泡就会显示;去选后,必须通过其他流程来触发这个对话的显示,例如通过Buff里Actions->Social Interactions组件。
- Is Introduction:勾选后,该对话会出现在与陌生人的打招呼对话中,对于已经认识的人不会出现;
- Balloon Category:小人在进行这项对话时,头顶可能会浮现的小图标气泡,生动合理的气泡可以让你的SIMS更像个人,如下图:
你可以通过以下方式创建自定义气泡:
创建好自定义气泡后,回到Social Interaction,在Balloon Category选项中选择刚才自定义的气泡:
这里我们选择教程第一部分没获得触发的Loot_test1,并且无论对话是否成功都执行:
游戏里本身有的你可以直接调用(部分动画不太好使,原因不明),你可以输入一些关键词来看看是不是有现成的,例如:
OK,现在你可以打包运行看看结果啦。
三、小结 本篇完整的流程图如下:
================================================================================================= 本课程用到的脚本下载: =================================================================================================
作为系列教程的第一篇,说明的会比较详细,关于函数思维的介绍还比较简单,主要照顾还不是特别熟悉MC工具的小伙伴,下一篇我们将进入正餐,如何流程可视化地进行较大型MOD的编写。
关于SIMS的功能脚本,本人也还在持续学习中,有志同道合的小伙伴可以加我的QQ:231726237 ,一起学习、一起讨论、有机会一起合作~~
=================================================================================================
|