查看: 93|回复: 2
收起左侧

[M4求助] 【modding】求助UI修改binary文件修改

[复制链接]

发表于 2023-11-8 16:39:46 | 显示全部楼层 |阅读模式

快快登录说出你的故事吧~!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
各位大佬亲亲,我在试图修改ui的路途中遇到了问题,我愿意有偿咨询!

起因:众所周知,吸血鬼成长到青年之后年龄就不会增长,因此在模拟市民学的UI中,会和老人一样,显示“已生活天数”,而不是“还有多少天”进入下一阶段。
经过:我想让我的拥有不死特质药水的小人同样显示“已生活天数”,而不是卡在进入成年人的路上。

结果:失败

我安装好了FFdec(JPEXS),在instance:DA7597EAEB9BA388 中,找到了相应的脚本:
  1. protected function HandleSimAgeProgressTooltipData(param1:AgeProgressTooltipData) : void
  2.       {
  3.          var _loc2_:LocKey = null;
  4.          if(this.mbAgeProgressTooltipDisabled)
  5.          {
  6.             (this.mcAgeBar.GetExtension(TooltipExtension) as TooltipExtension).Data = null;
  7.             return;
  8.          }
  9.          var _loc3_:uint = GameplayStateData.SimAge.age;
  10. <u><b>         if(SimAgeTypes.CanSimAge(_loc3_))
  11.          {
  12.             _loc2_ = KeysGP.SUMMARY_PANEL_DAYS_LEFT.Clone([param1.ready_to_age_day - param1.current_day]);
  13.          }
  14.          else
  15.          {
  16.             _loc2_ = KeysGP.SUMMARY_PANEL_DAYS_LIVED.Clone([param1.days_alive]);
  17.          }</b></u>
  18.          (this.mcAgeBar.GetExtension(TooltipExtension) as TooltipExtension).Data = {
  19.             "type":Tooltip.TYPE_DESCRIPTION_ONLY,
  20.             "text":_loc2_
  21.          };
  22.       }
复制代码
如图,判定if函数的条件是 CanSimAge代码,于是我找到了CanSimAge的代码:
  1. public static function CanSimAge(param1:uint) : Boolean
  2.       {
  3.          if(IsElder(param1))
  4.          {
  5.             return false;
  6.          }
  7. if(GameplayStateData.SimOccultType.Type == OccultTypes.OCCULT_VAMPIRE && IsYoungAdultOrOlder(param1))
  8.          {
  9.             return false;
  10.          }
  11.          var _loc2_:* = GameplayStateData.GetTraitInfoByType(SimTraitsInfo.TRAIT_ROBOT).length > 0;
  12.          if(_loc2_)
  13.          {
  14.             return false;
  15.          }
  16.          return true;
  17.       }
复制代码
可以看到,判断条件sim是否可以增龄有三:1. 老人;2. 青年以上的吸血鬼;3. 机器人。
于是我照抄了吸血鬼的代码,把VAMPIRE改成了WITCH(这是正规的occult type名),但是没有效果,改成了SPELLCASTER,依然没有效果。
我甚至把吸血鬼的代码删掉了,但是进游戏后吸血鬼依然是青年后显示“已生活天数”。

我不知道是哪里出错了,是反编译代码出错了嘛?我确定我的package生效了,我在MOD里面找到了我自建的mod。

求大佬求教!!!

本帖寻求最佳方案

回复被采纳后将获得奖励 辣条 5 ,目前已有 2 个回复 我要奖励
楼主热帖

共收到 0 菊花
打赏榜
4
暂无
--
5
暂无
--
6
暂无
--
7
暂无
--
版权声明
本站积极遵守中华人民共和国各项法律法规,促进良好社会公共道德,鼓励劳动者劳有所得。
为保护作者和平台的共同利益,在本站发布的原创内容所包含模型、图片、代码等版权归作者和平台共有,平台承诺不将此权利行使于法律行为以外用途。
本站原创作品仅供购买或下载者本人使用,任何平台或个人擅自转载、售卖本站原创作品,本站均保留诉讼权利。
此条款自作品发布起即时生效。

【三宫六院论坛】唯一官方店为:sgly.taobao.com,除此之外都是假的!

 楼主| 发表于 2023-11-10 04:17:14 手机访问 | 显示全部楼层

没有大佬指点一下吗
我要说一句

【三宫六院论坛】唯一官方店为:sgly.taobao.com,除此之外都是假的!

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-13 21:50:54 | 显示全部楼层

经过长时间大量的测试,我终于发现了原因。不能直接在标有public static function进行改动,因为这个是全局设定,只改这一个地方没有。要么把所有含有该function的scale form GFX files改了,要么只改直接影响游戏的protected function.

特意回来回复一下,以免以后有人遇到类似问题。
我要说一句

【三宫六院论坛】唯一官方店为:sgly.taobao.com,除此之外都是假的!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则