3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 19490|回复: 36
打印 上一主题 下一主题

[原创] 终于会在CT里面写LUA了……关于物品修改的CT表,内附教程以及特性搜索需知,更新2.2,还请小白鼠测试

[复制链接]

63

主题

975

帖子

3333

积分

游戏达人

Rank: 7Rank: 7Rank: 7

贡献度
420
金元
16225
积分
3333
精华
3
注册时间
2014-11-13

3DM MOD站(黄金)

跳转到指定楼层
主题
发表于 2018-3-28 19:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qweytr_1 于 2018-3-30 22:56 编辑

======
版主看到可以锁定帖子了
新帖在http://bbs.3dmgame.com/forum.php ... extra=#pid209715315
可能是这个帖子因为试图引用一个谷歌的链接被自动送进审核
删掉那个链接,把剩下的送进新帖子,一切正常
本来想让直接删帖的,结果后来发现图片并不能很方便地拷贝到新帖子里面,于是干脆把这个锁掉好了,下面的更新都去新帖子里了

这里牵扯到一点CE脚本的写法,因而最好留在这里……
不过如果删掉,基本也没什么大问题……反正东西都很浅
======


3.30晚更新ver2.2

《慷慨的歌》,目前11W字,看上去只有5个被后台记录的点击……大家能帮忙看下,究竟是没人知道这个小说呢,还是干脆小说写得不好呢
<


3.30下午更新ver2.10

<


3.30更新ver2,之后会在删游戏前不定时更新若干版本
大家如果有需要可以给我说,我会看着改……
当然肯定突破不了游戏限制给物品添加第4个特性的……

ver2做了如下更新:
<更多的……我还是先写小说去吧……
至于特性代码可以参考http://bbs.3dmgame.com/thread-5725899-1-1.html的更新,那里总结得其实很不错。
值得一提的是,本作的“特性”可能会出乱码,但乱码并不代表特性是假的。
大家可以把一些特殊的乱码编号(比如11)先改到你的素材里面,然后合成,之后代码11就不是乱码了
<


可以修改物品品质,物品种类,四个效果三个特性以及四种炼金成分
就等好心人给出除了物品品质之外其他所有的代码了……
只测试了投掷物品,不过应当对其他物品应当是一样的
CE版本6.7.1,不过感觉就算用更老的版本也是可以玩的

只试出来一个9红的炼金成分(其实是两个9红的……在表单中只填了一个)
改物品应该可以修改触媒
当然,这些……中子还要写小说,就不整理了

请注意,你们可以通过“锁定”这项操作来批量修改材料,但请务必在批量修改之后取消锁定
想看怎么写CT表的往下翻,第二部分先写一些关于特性的知识
经过搜索,有两种可能
一种是,“特性”这一成分在新作中被大修,删除了许多无用成分,于是你可能会看到乱码特性
另一种是,某些“特性”由于在目前为止的游戏过程没有出现,因而不予显示,但是,不显示不代表不存在,乱码并不是出了严重的错误。
以“高价”特性举例:

(截图截错了,这一幅图想说,原始物品卖1块钱)

可以看出,特性7是高价+

这里搜索特性8,不予显示,但是价格仍然发生了改变

继续,特性11达到最高价
资料来源:索菲效果和特性代码.txt
<以前的列表或许可以重用,或许不可以
天知道……




最后,写一些地址的寻找方法
大致分了三步
首先找到物品
然后确定有什么会访问物品(查找是什么访问该地址)
最后确认每一个地址是干什么用的

当然我在这里还有一点不清楚,就是不知该怎么直接在CT表里加脚本
那个脚本的框是我从某个CT里面拉过来的(虽然里面的代码都是自己重新用了CE模板敲出来的)

找物品是最简单或者最复杂的,因为这里面许多物品都是“一次性”的,就是,一旦你使用那个物品,物品会消失,而非在原地发生更改
这给搜索物品带来了难度
但是,有一种方法可以简单地避过这一点,就是找一个能反复使用的物品(比如各种投掷武器都是有次数的)
找一个6/6的物品,用到1/6,大约就能定位了
当然如果知道游戏是用 连续的两个字节来记录物品使用次数和最大使用次数(A18的修改经验),可以辅助地查找2字节的版本以减少搜索次数

定位了物品之后,应当定位什么修改或者访问了这个物品,这一步需要一定的运气或者耐心
用CE“查找是什么访问该地址”的功能,然后看到底是什么访问了物品

事实上这里有一点运气成分,就是,你第一个发现的地址未必是你想要的。
当你把光标从物品移到空白处再移动回来的时候,事实上你会发现,有另一个MS开头的,VCRuntime一类的dll访问了你查找的地址,事实上这个是错误的访问,并不是我们想要的结果。
找到错误所在需要运气,或者耐心

一旦找到了究竟是什么访问了这个目标地址,就可以做许多事情了
就比如,我们找到了:
<
这里的代码是
<(下一行是mov [rdi+70],rax,这个是CE关心的,然而并不是我们关心的)
这句话的意思是,比如rbx=11,这句话就相当于是
<这里[]是取地址的意思,[rbx+08]就是取在内存rbx+8位置存储的数值
于是我们可以试图把这里的rbx存下来:
<这里把rbx存放到了ptr这个地址中
然后,由于前文注册了ptr这个地址,在接下来的CT表,我们就可以用ptr+08引用刚刚那句话引用的东西
当然要注意,刚刚我们对付的指令是
<这里rax是一个8字节的寄存器,这导致了我们直接使用ptr+08可能得不到我们想要的2字节效果
于是代码里面,效果位置写的是ptr->0000000C
至于后面的,照葫芦画瓢就好。

教程比较简单,对伸手党或许不太友好,不过……这教程应当是对有一定基础的人用的
伸手党用这个教程直接写……不晓得会不会蓝屏

本帖子中包含更多资源

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

x

评分

1

查看全部评分

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2025-4-21 08:12 , Processed in 0.117314 second(s), 16 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表