• 注册
  • 离线疑难解答 离线疑难解答 关注:1834 内容:22368

    离线版非战局状态的食水消耗修改

  • 查看作者
  • 打赏作者
  • 当前位置: ODDBA社区 > 离线疑难解答 > 正文
  • 25
  • 离线疑难解答
  • 登堂入室

    前言少说,就是想让离线版增加点生存元素,现在已经学会了改global.json,就是改regeneration那一段,把食水恢复改成了负的

    离线版非战局状态的食水消耗修改

    现在进游戏食水已经变成负值,并且能正常消耗

    但是遇到了严重问题,那就是一旦食水和血量全部被回满(通过吃喝打包),那么该消耗就会失去作用,也就是你会看到三项指标上的(-xx)还在挂着,但不会有任何数值变动(甚至连-xx跳动的小特效都消失了),等多久都没用,必须以什么手段(比如吃会让食水消耗的食物)让食水数值重新降到满值以下才能重新开始消耗

    个人猜测regeneration有这么一个判定,在数值全满时移除这个effect,属实是不明所以的设定了

    我已经试过所有方法绕过这层移除效果的检测了都没有办法,非战局情况下只有regeneration这个effect起效,其他所有效果都失效,连降血量的药物都不能打

    不知道谁有办法,能避开”全部回满时移除regeneration“这个检测,个人推测要么以什么方式使其永远达不到满血满状态(添加另一个effect,但是非战局情况下连辐射和毒素都不起效,存档文件里直接都找不到这两项指标的记录)

    要么就得另外做一个js判定,时刻判定状态,满了自动操纵数值给它-1(说个奇幻的事情,你在regeneration里把回血改成负的是完全没有用的,并不会掉血)

    如果有人能帮写一个mod做这个判定的话我愿意v50

  • 3.5.7

  • 已配图

  • 其他问题

  • 略有小成

    ok, 刚才没看到标题.

    翻了下, 看起来是因为做了额外判断, 满能量水分时就不再执行回复逻辑了.

    你要做mod的话重载下这个函数应该就行了.

  • flagcarrier请问这个文件在哪?能不能帮做个mod格式的?不能的话告诉我在哪能找到就行
    拉黑 2年前 电脑端回复
  • laniidae @flagcarrier https://dev.sp-tarkov.com/SPT-AKI/Server 主站很多教程的, 可以去参考参考, 加油 [s-13]
    拉黑 2年前 电脑端回复
  • flagcarrier我找到了,谢谢,正在试着自己做一个单独的mod!
    拉黑 2年前 电脑端回复
  • flagcarrier @laniidae 借地方补充一下,我调用了函数,并且将其作为一个单独mod调用,在server里面看是调用成功了,但似乎并没有起效?是不是该函数运行时机的设定有问题,没有覆盖原服务器函数运行?如果是的话请问如何做到“重载”函数
    拉黑 2年前 电脑端回复
  • 回复
    略有小成

    emmm 没明白你想干嘛, 增加战局中的食物水分消耗速率?

  • 爱马仕意思在大厅也消耗食物水分吧
    拉黑 2年前 电脑端回复
  • flagcarrier说了是非战局,也就是大厅也消耗,这一点已经做到了,但是满血满状态以后“恢复”这个效果就会被自动移除,之后又不会消耗了
    拉黑 2年前 电脑端回复
  • 回复
    登堂入室

    自己顶一下,试过大废物的mod,但是翻代码发现也只是改了regeneration,一样会有刚才说的问题

    回复
    登堂入室

    @laniidae 借地方补充一下,我调用了函数,并且将其作为一个单独mod调用,在server里面看是调用成功了,但似乎并没有起效?是不是该函数运行时机的设定有问题,没有覆盖原服务器函数运行?如果是的话请问如何做到“重载”函数

  • laniidae就是复制原函数, 只不过去掉那几行if. 可以去 https://dev.sp-tarkov.com/chomp/ModExamples 这里找找参考
    拉黑 2年前 电脑端回复
  • flagcarrier @laniidae 做了好半天还是没能起效,毕竟是第一次做ts,烦请大神帮做一个mod吧,就这个内容我也学习一下,我愿意v个50,orz,o(╥﹏╥)o
    拉黑 2年前 电脑端回复
  • laniidae @flagcarrier [s-26] 不用不用, 你就照这个抄试试, 自己琢磨才有意思是吧 https://dev.sp-tarkov.com/chomp/ModExamples/src/branch/master/TypeScript/5ReplaceMethod
    拉黑 2年前 电脑端回复
  • flagcarrier @laniidae 我已经用了最笨的法子:我把你给的整个mod放到了user\mods里,然后我抄了服务端的那段函数给他贴在5ReplaceMethod的GameController.d.ts同名标头部分下,确保段前段尾没有错误遗漏,mod正常加载,进游戏——还是不生效,OTZ
    拉黑 2年前 电脑端回复
  • 回复
    略有小成

    @flagcarrier 不是复制进去就行了, 还要把这一段根据你的需求修改. 其实很简单的, 有空可以去看看教程啥的, 论坛里应该有很多.

  • flagcarrier这又是哪个文件orz,要怎么改
    拉黑 2年前 电脑端回复
  • flagcarrier我找到了在mod.ts,我是不是要把这里的LauncherController都改成GameController?下面的(info:ILoginRequestData)又替换成什么?是IGameKeepAliveResponse还是updateProfileHealthValues?这里给的例子和说明完全没有用啊orz
    拉黑 2年前 电脑端回复
  • flagcarrier几个做法都试了,全失败了o(╥﹏╥)o
    拉黑 2年前 电脑端回复
  • 拉黑 2年前 电脑端回复
  • laniidae @flagcarrier `info:ILoginRequestData` 是函数接收的参数鸭, 你把他换成你要改的函数的参数. 注释里写得挺清楚了其实. 如果还有问题建议直接贴图上来 [s-44]
    拉黑 2年前 电脑端回复
  • flagcarrier @laniidae 找人试过了,说是子集没办法替代。而且据说有客户端的硬性限制,大佬有3.5.7的函数集合吗?我发现很多出错是因为我是3.5.7,跟3.7.1命令不一样
    拉黑 2年前 电脑端回复
  • 回复
    登堂入室
    打赏了@laniidae18金币
    回复
    登堂入室

    自顶求帮助啊,最后一哆嗦了

    回复
    登堂入室

    @laniidae,大佬你找错地方了,那个地方是管离线数据上线同步的 [s-31] ,不是管线上的

    另一个大佬辛苦帮我做出来才发现地方不对@Findwinds


    / We override the parent method with the EXACT same signature

    public override updateProfileHealthValues(pmcProfile: IPmcData): void {

    const healthLastUpdated = pmcProfile.Health.UpdateTime;

    const currentTimeStamp = this.timeUtil.getTimestamp();

    const diffSeconds = currentTimeStamp - healthLastUpdated;


    // last update is in past

    if (healthLastUpdated < currentTimeStamp) {


    回复
    略有小成

    @flagcarrier emm 我又翻了下, 之前找的那段应该是登录时的一次性请求, 不是藏身处的更新逻辑. 藏身处的能量水分生命值更新逻辑看起来似乎可能也许是客户端请求, 估计得用 bepinex 整, 俺也不会 [s-21]

    回复

    请登录之后再进行评论

    登录
    离线疑难解答
  • 今日 1
  • 内容 22368
  • 关注 1834
  • 聊天
    关注 0

    【招募】GRIFFIN TKF项目开工 期待你的加入 || 你是否想加入格里芬书写自己与人形的故事

    捐助我们

    • 微信
    • 支付宝
  • 签到
  • 任务
  • 发布
  • 模式切换
  • 偏好设置
  • 帖子间隔 侧栏位置: