【CE实战-Raft】人物属性(水、食物、血量)地址定位

时间:2021-10-01 01:14:04

???? 导读

需求

Raft游戏中,右下角有三个状态,分别代表食物血量,这三个值保证角色能够正常游戏,我们今天的目标就是修改这三个值。
【CE实战-Raft】人物属性(水、食物、血量)地址定位

开发环境

版本号 描述
文章日期 2023-03-
操作系统 Win11 - 21H2 - 22000.1335
Cheat Engine 7.4

1️⃣ 学会玩游戏:制作淡水

Raft这个游戏,水(渴度)下降的很快,想获得人物的属性(食物血量),首先要想活下来,否则过会就死掉了。
而且,搜索水(渴度)过程中,一直删选减少的数值,最后很难将数值降下来,所以需要制作淡水

基本的操作按照下面的教程就可以。

PS: 当制作出淡水后,根据文章《【CE实战-Raft】物品栏数量地址定位》https://blog.csdn.net/kinghzking/article/details/129791207,将淡水量变为99999,然后就可以安静的进行下一步了。
【CE实战-Raft】人物属性(水、食物、血量)地址定位

2️⃣ 水(渴度) 数值定位

步骤

  1. 由于的值界面上未体现出具体的值,我们指定扫描类型为未知初始值,数值类型为所有类型,点击首次扫描
    【CE实战-Raft】人物属性(水、食物、血量)地址定位
  1. 回到游戏中,等待几秒,的值将会减少。我们指定扫描类型为减少的数值,点击再次扫描
    【CE实战-Raft】人物属性(水、食物、血量)地址定位
  1. 当血量减少到一定值后。通过喝淡水,补充,再将扫描类型改为增加的数值进行搜索。
  1. 当结果减少到一定的值后,我们对剩下的数值进行分析。
    从界面看,水基本是满的,我们根据下图中的猜测,最终的确定两个值
    【CE实战-Raft】人物属性(水、食物、血量)地址定位

验证

  1. 将上节中搜索到的值保存到地址列表中,如下图命名:水1水2
    【CE实战-Raft】人物属性(水、食物、血量)地址定位
  1. 修改水1为50,回到游戏。
    【CE实战-Raft】人物属性(水、食物、血量)地址定位
    我们会发现,界面中减少了一半,水2值变为了0.49。
    【CE实战-Raft】人物属性(水、食物、血量)地址定位
  1. 修改水2为1,回到游戏。
    我们会发现,界面中水1并不会改变,而且水2,会立刻变回0.49。
    所以,水2应该只是水1的一个副本,水1才是我们要找的值。
    【CE实战-Raft】人物属性(水、食物、血量)地址定位

3️⃣ 食物、血量 数值定位

像(水、食物、血量)这样的数值,游戏编程中一般都定义为人的属性。找到其中一个,该地址附近一般就有其他值,修改这些值即可验证结果。

分析内存

  1. 我们通过下图打开水1内存所在窗口。
    【CE实战-Raft】人物属性(水、食物、血量)地址定位
  1. 水1取值为0到100,我们猜测食物、血量范围也是0到100。
    从下图中,我们可以看到,刚好水1前后两个值很像我们的目标值。
    【CE实战-Raft】人物属性(水、食物、血量)地址定位
  1. 将临近的两个值添加到地址列表
    【CE实战-Raft】人物属性(水、食物、血量)地址定位

验证

修改地址列表中的增加的两个值为30和50,进入游戏,可以看到界面的确发生变化,而且变化的量是不一样了。
从而可以确认两个值分别为血量和食物。
【CE实战-Raft】人物属性(水、食物、血量)地址定位

锁定人物属性

选中地址列表左边的激活按钮,实现锁定效果。
从图中我们可以看出,水1并不是固定为100,而是不断的减少,然后恢复为100;再减少再恢复。这是因为CE锁定的原理就是定时将内存中的值写入游戏内存中。
【CE实战-Raft】人物属性(水、食物、血量)地址定位

???? 文章小结

  • 对于无法知道固定数值的属性,我们需要指定未知初始值进行首次扫描
  • 对于扫描出来多个结果,我们根据正向编程的思路去排除出我们想要的值。然后再通过修改目标值来看界面效果确认最终的值。
  • 像(水、食物、血量)这样的数值,游戏编程中一般都定义为人的属性。找到其中一个,该地址附近一般就有其他值,修改这些值即可验证结果。

???? 参考资料

**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。