高级操作

这些高级指令可以直接修改背包内存,非常适合用于测试或者绕开模拟器的限制。

危险

这些指令不会模拟游戏中的操作,而是直接修改内存。所以,有些效果可能和游戏中非常不同。

请在使用前仔细阅读文档!

语法

例子见下方每个指令的段落。

制作转存格

!break X slots

添加物品格

!init FINITE_ITEM_LIST
!add-slot FINITE_ITEM_LIST

强制删除物品

!remove CONSTRAINED_ITEM_LIST

修改物品数据

!write [META] to ITEM
!swap ITEM1 and ITEM2

制作转存格

技巧

模拟器支持用游戏中的操作制作转存格,见制作转存格

!break指令会修改背包表和空闲表的计数额外制作X个转存格。

!break 20 slots

添加物品格

!init!add-slot指令会直接从空闲表中调用新物品到背包表。所有添加物品时检查的机制都会被绕开。注意空闲计数为0时,依然不可以添加物品。

除此之外,!init还会重置背包和空闲表的计数,所以转存格也会被消除。

例子:

# 在不排序的情况下设置背包状态
!init 1 slate 1 glider 5 apples
# 添加通常无法添加的物品(如下为神庙电梯)
!add-slot <DgnObj_EntanceElevator_A_01>
# 如果添加可堆叠的物品带有[value=...]属性,则数量变为要添加的格子数
# 下面指令会添加5格箭,每格有300根
!add-slot 5 arrow[value=300]

信息

执行后,此指令会修复背包状态并和GDT数据同步。同时,物品对应的IsGet标记(标记物品是否获得过)也会设为true, 物品对应的页面也会设为解锁状态。

特别注意

如果在打开背包界面时使用!init!add-slot,背包界面和背包数据可能会不同步,导致添加的物品不能马上使用,需要关闭背包再打开。

虽然模拟器可以实现强制同步,但这样会导致一些内部状态改变,比如主世界装备和背包蓝格的对应关系。

强制删除物品

!remove指令可用于强制删除物品:

  • 箭,材料,食物和重要道具删除数量以格子值为准。
  • 其他以格子数为准。

执行后,此指令会修复背包状态并和GDT数据同步。

例子:

!remove all cores

注意

此指令可以指定通常情况下背包界面看不见的物品,比如当物品计数为0时,或者当装备类物品超出解锁的格子数时。

修改物品数据

!write指令可以通过物品属性语法修改背包状态。执行后,背包状态会修复,但不会同步到GDT。

目前不支持修改物品的配料表。

例子:

# 把大师剑耐久设为0
# 注意,这样不会把大师剑变成损坏状态
# 如果要损坏大师剑(比如MSWMC),需要用`use`指令破坏大师剑
!write [value=0] to master-sword

# 把价格为101的炒菜的价格改为102
!write [price=101] to wild-greens[price=102]

# 如果直接指定物品位置,还可以修改该位置物品名
# 如下,修改材料页第一行第一列的物品为20耐久的王族双手剑
!write [dura=20] to royal-claymore[category=material, row=1, col=1]

注意

此指令可以指定通常情况下背包界面看不见的物品,比如当物品计数为0时,或者当装备类物品超出解锁的格子数时。

!swap指令选定2个格子,并交换它们节点在链表中的位置。执行后背包状态会修复,但是不会同步到GDT。

例子:

# 交互苹果和香蕉的位置
!swap apple and banana

# 交互装备中的王族双手剑和装备中的弓的位置
!swap royal-claymore[equipped] and bow[equipped]

特别注意

如果在打开背包界面时使用!write!swap,背包界面和背包数据可能会不同步,导致需要关闭背包再打开才能看到效果。

虽然模拟器可以实现强制同步,但这样会导致一些内部状态改变,比如主世界装备和背包蓝格的对应关系。