高级操作
这些高级指令可以直接修改背包内存,非常适合用于测试或者绕开模拟器的限制。
语法
例子见下方每个指令的段落。
!break X slots
!init
FINITE_ITEM_LIST
!add-slot
FINITE_ITEM_LIST
!remove
CONSTRAINED_ITEM_LIST
制作转存格
模拟器支持用游戏中的操作制作转存格,见制作转存格。
!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]
如果在打开背包界面时使用!init
或!add-slot
,背包界面和背包数据可能会不同步,导致添加的物品不能马上使用,需要关闭背包再打开。
虽然模拟器可以实现强制同步,但这样会导致一些内部状态改变,比如主世界装备和背包蓝格的对应关系。
强制删除物品
!remove
指令可用于强制删除物品:
- 箭,材料,食物和重要道具删除数量以格子值为准。
- 其他以格子数为准。
执行后,此指令会修复背包状态并和GDT数据同步。
例子:
!remove all cores
修改物品数据
!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]
!swap
指令选定2个格子,并交换它们节点在链表中的位置。执行后背包状态会修复,但是不会同步到GDT。
例子:
# 交互苹果和香蕉的位置
!swap apple and banana
# 交互装备中的王族双手剑和装备中的弓的位置
!swap royal-claymore[equipped] and bow[equipped]