首页 > 其他分享 >饥荒联机版mod制作[修改原版的逻辑--hook]

饥荒联机版mod制作[修改原版的逻辑--hook]

时间:2024-09-12 17:52:17浏览次数:3  
标签:function 逻辑 end 修改 -- 代码 hook mod

或许在我们游玩的过程中会有一些有一些原版的玩法不符合我们的期望,这时我们就可以对其进行一些修改,来提升我们的游戏体验。

修改的方法是在实体或者组件(想修改的内容是什么,这里就改什么)初始化的时候,对其代码逻辑进行修改,从而使这个实体或者组件达到我们的预期目标。

一、对预制体进行修改

1.1  使用到的API

如果需要修改某一特定的预制体,则使用AddPrefabPostInit

AddPrefabPostInit("name", function(inst)
    if TheWorld.ismastersim then
        -- 大多数的实体逻辑只在主机执行,所以加上这句
    end
end)

-- 第一个位置的参数为预制体的代码
-- 第二个位置的参数为你要修改的逻辑函数

如果需要修改全部预制体,则使用AddPrefabPostInitAny

AddPrefabPostInitAny(function(inst)
    if TheWorld.ismastersim then
        -- 大多数的实体逻辑只在主机执行,所以加上这句
    end
end)

-- 参数为你要修改的逻辑函数

1.2  具体方法

如果我们想完全修改原有的逻辑,直接使用1.1中的API即可;

如果我们只想在特定情况下修改原有的逻辑,那么我们就需要做两件事:得到原有逻辑、判断是否修改。

这里采用的方法是,将原有逻辑赋值给自己定义的参数,再判断条件是否成立,若成立则用自己的代码直接覆盖原有的逻辑,若不成立则执行原有的逻辑。

修改时要指定你要对原版代码的哪一部分进行修改,比如下面的示例制定了修改inst.Order函数,代码示例如下:

AddPrefabPostInit("name", function(inst)
    if TheWorld.ismastersim then
         --得到原有函数
        local oldOrder = inst.Order
        if not () then    -- 判断是否要覆盖
            -- 用新函数覆盖原有函数
            inst.Order = function()            -- 新函数的参数与旧函数参数相同
                   -- 新的代码逻辑
            end
        end
    end
end)

二、对组件进行修改

2.1  使用到的API

AddComponentPostInit("name", function(Name)
    -- 你的函数
end)
-- 第一个位置的参数为组件名称
-- 第二个位置的参数为你的函数逻辑,注意这个函数传入的参数为这个组件所返回的名字,一般是这个组件名称的首字母大写

2.2  具体方法

同修改预制体逻辑的方法相同,只需要修改需要变化的代码部分即可。这里指定的修改部分是组件的方法。所谓方法,就是跟在冒号后面的名字。

AddComponentPostInit("name", function(Name)
    local oldMatherd = Name:Matherd()
    function Name:MAtherd(...,...)
        -- 你要修改的逻辑
        -- 与预制体的hook不同的是,如果你的代码中使用到了self,则需要将self也一并传入给原有的代码,否则你修改的self将不会生效
        -- 如果需要保留原有的方法,则return旧的方法
        -- 如果不需要使用旧的方法,则返回需要返回的值或不返回
        return oldMatherd(self, ...,...)
    end
end)

三、通用全局参数修改

除了使用官方提供的API外,我们还可以自行对一些全局参数进行修改,方法与前面的方法类似:

local oldfn = GLOBAL.name.fn  -- 获取并保存原有全局变量
GLOBAL.name.fn = function()  -- 覆盖原有全局变量
    -- 你的代码逻辑
    -- 如果需要原版的代码,则返回原版的代码,否则不用
    return oldfn()
end

四、其他修改

除了上面介绍到的方法外,官方还提供了许多其他的API供我们进行hook,其一般名称为Add×××PostInit,字面意思为在某物初始化时增添逻辑。

 参考资料:hook (atjiu.github.io)

标签:function,逻辑,end,修改,--,代码,hook,mod
From: https://blog.csdn.net/hanruilin0201/article/details/142181073

相关文章

  • 【转】[C#][WPF] 避免窗口最大化时遮盖任务栏
    转自:https://learn.microsoft.com/zh-cn/previous-versions/msdn10/dd366102(v=MSDN.10)WPF窗口最大化时有个很不好的现象是:如果窗口的WindowStyle被直接或间接地设置为None后(比如很多情况下你会覆盖默认的窗体样式,即不采用Windows默认的边框和最大化最等按钮,来打造个性的窗......
  • 《黑神话:悟空》游戏启动时闪退弹窗“找不到msvcp100.dll”文件该怎么办?黑神话悟空游戏
    在启动《黑神话:悟空》时,若遇到闪退弹窗并提示“找不到msvcp100.dll”文件,别紧张。这可能是文件缺失造成的。您可以使用系统的修复工具尝试解决,或者从可靠来源获取该文件进行安装,有望解决此问题。本篇将为大家带来《黑神话:悟空》游戏启动时闪退弹窗“找不到msvcp100.dll”文件该......
  • TensorFlow的基本概念以及使用场景
    TensorFlow是一个机器学习平台,用于构建和训练机器学习模型。它使用图形表示计算任务,其中节点表示数学操作,边表示计算之间的数据流动。TensorFlow的主要特点包括:1.多平台支持:TensorFlow可以运行在多种硬件和操作系统上,包括CPU、GPU和移动设备。2.自动求导:TensorFlow可以自动......
  • MyCat管理及监控
    目录MyCat原理MyCat管理MyCat-web安装Zookeeper安装Mycat-webMyCat原理在MyCat中,当执行一条SQL语句时,MyCat需要进行SQL解析、分片分析、路由分析、读写分离分析等操作,最终经过一系列的分析决定将当前的SQL语句到底路由到那几个(或哪一个)节点数据库,数据库将数据执......
  • 《黑神话:悟空》iZotope.dll文件丢失?《黑神话:悟空》iZotope.dll丢失的五种解决策略
    《黑神话:悟空》是一款备受期待的动作角色扮演游戏,如果玩家在尝试运行游戏时遇到iZotope.dll文件丢失的问题,这通常会导致游戏无法正常启动。以下是解决《黑神话:悟空》中iZotope.dll文件丢失问题的五种策略:1.重新安装游戏步骤说明:卸载当前安装的《黑神话:悟空》游戏。前往游......
  • 设置SQL Server登录账号 只能访问部分表
    设置SQLServer登录账号只能访问部分表xcanel于2020-11-3015:07:05发布阅读量2.2k收藏5点赞数分类专栏:SQL版权数据库权限设置登录账号查询权限更新权限关键词由CSDN通过智能技术生成SQL专栏收录该内容2篇文章0订阅订阅专栏从网上搜了写类似的文字,发现很多文字都有......
  • 2024.09.12 1749版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 【软件】Rhythmbox播放器调节音量
    Rhythmbox播放器调节音量零、起因最近换了Ubuntu系统,在写代码时想听歌,故使用Rhythmbox播放器播放一些mp3文件,但同时又要看教程,希望音乐声音小一点,但是找来找去都没有发现Rhythmbox有调音量的地方,官网上有指引:https://help.gnome.org/users/rhythmbox/stable/Usage.html.zh_CN,但......
  • 出发前往玛那之树!《圣剑传说Visions of Mana》二十六项风灵月影修改器使用教程以及功
    《圣剑传说》v1.0二十六项修改器风灵月影版功能强大。不仅有无敌模式、无限HP/MP,还能设置攻击范围、暴击率等参数。更能一键编辑金钱、经验值。有了它,能大幅降低游戏难度,让玩家轻松畅玩,享受更愉悦的游戏体验。本篇将为大家带来《圣剑传说VisionsofMana》二十六项风灵月影修改......
  • bluecms搭建和代码审计(SQL)
    bluecms搭建将bluecms的源码文件bluecms放在www目录下,进入bluecms/install/index.php目录安装bluecms填写数据库配置信息和管理员账号信息填写完上述信息后,会自动在bluecms数据库下创建这些文件返回主界面http://127.0.0.1/bluecms后发现管理员不能从前台登录,需要从http:......