什么是最有效的方法来删除混淆的名称(Minecraft)?
2013-3-20 16:10:50
收藏:0
阅读:110
评论:1
我为 Minecraft 制作了一个 Lua 模组。一切正常工作,但在 MC 中通常方法的名称会被混淆。如何最好地使普通函数名称重定向到混淆的名称?
例如,用户为右键单击时打印 hello world 的方块编写一个脚本:
function onActivated(world, x, y, z, player)
player:addChatMessage("hello world")
end
addChatMessage 应调用 Java 方法 EntityPlayer.func_71035_c(String text)。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
-- 翻译文件(translation.txt) func_70912_b,setTameSkin,2, func_70913_u,getTameSkin,2, func_70915_j,getShadingWhileShaking,2,在狼颤抖时计算要应用的遮蔽量时使用。 func_70916_h,setAngry,2,设置此狼是否生气。
-- 模糊程序(script.lua) x:func_70913_u(y,z) x:func_70915_j(y,z)
-- 预处理器(preprocessor.lua) local transl = {} for line in io.lines'translation.txt' do local obf,orig = line:match'^(.-),(.-),' transl[obf] = orig end local script = assert(io.open('script.lua','rb' )):read'*a' local output = assert(io.open('script2.lua','wb')) output:write((script:gsub('[%w_]+', transl))) output:close()
-- 预处理器输出(script2.lua) x:getTameSkin(y,z) x:getShadingWhileShaking(y,z)
-- 编辑器:
local obfuscations = {} for line in io.lines'translation.txt' do local obf, orig = line:match'^(.-),(.-),' obfuscations[orig] = obf end
local function get_obf_key_value(t, k, __index) local value = __index and __index(t, k) if value == nil and obfuscations[k] then value = t[obfuscations[k]] end return value end
local cache = {get_obf_key_value = true}
local function __index_constructor(__index) if not __index then return get_obf_key_value end local old__index = cache[__index] if old__index then return old__index == true and __index or old__index else local function new__index(t, k) return get_obf_key_value(t, k, __index) end cache[__index] = new__index cache[new__index] = true return new__index end end
local obf_mt = {__index = get_obf_key_value}
local function correct_metatable(object) local mt = getmetatable(object) if mt == nil then setmetatable(object, obf_mt) else local __index = mt.__index if __index == nil or type(__index) == 'function' then mt.__index = __index_constructor(__index) else correct_metatable(__index) end end end
-- 你应该至少为每个类调用correct_metatable(class_or_object_of_that_class)一次 correct_metatable(wolf) correct_metatable(goat) correct_metatable(cabbage) ...