世界盒子吧 关注:15,701贴子:68,564
  • 4回复贴,共1

基础的mod制作——特质篇

只看楼主收藏回复

前提 : 一个安装了NCMS后的worldbox , 一个文本编辑器(有ide更好),一个至少可以反编译框架版本为.net framework 4.72类库的工具 (我用的是dnspy),从安装NCMS自动生成的Example Mod的文件夹中抄一份符合规格的mod文件以便于进行之后的修改。
正文: 首先进入游戏源文件中(...\worldbox_Data\Managed)打开一个名为Assembly-CSharp.dll寻找我们想要修改部分相关的代码与其中的逻辑关系(找的过程省略)
可以得到如下的东西 : worldbox中的特质是一个派生自Asset类的ActorTrait类其中自定义了一个方法

其中有以下比较重要的字段id 、 path_icon、group_id,这些是在ActorTraitLibrary类的方法init()中被创建的ActorTrait类的对象都进行了赋值的字段,根据ActorTrait类自定义的方法可以得到属性path_icon与该特质获取对应的图像有关,而继续进行分析可以得到如下结论(过程省略):
字段id决定了该特质的名字和描述

字段group_id则决定了在特质编辑器中对应特质所在的栏位

当然还有一些其他的字段 如 birth代表了一个生物被创建时获得该特质的几率,inherit代表了遗传给子代的概率
opposite与oppositeArr表示了与之相对立的特质,era_active_night与era_active_night配合only_active_on_era_flag则可以赋予拥有该特质在黑暗纪元与皓月纪元被启用,以及最重要的base_stats表示了该特质如何影响拥有该特质的单位的属性。
同时一个ActorTrait类还拥有四种的委托 分别是 WorldAction类委托的action_death与action_special_effect(与special_effect_interval配合使用)
AttackAction类的action_attack_target以及GetHitAction类的 action_get_hit 通过方法Delegate.Combine(Delegate a, Delegate b)可以创造更加多样的个性化
比如如下的代码就是对以上所说的一个具体实例
这是在游戏中的效果
这是所添加的攻击事件的效果


IP属地:四川1楼2023-06-22 14:26回复
    厉害


    IP属地:四川来自Android客户端2楼2023-06-22 16:30
    回复
      非常好


      IP属地:波兰来自Android客户端4楼2023-06-23 19:58
      回复


        来自Android客户端5楼2023-06-24 08:38
        回复


          IP属地:广东来自iPhone客户端7楼2023-06-25 00:18
          回复