根据物品名称获取唯一ID 通过唯一ID删除完物品
🤖 回答引擎: TXT语法专家 |
🕒 时间: 2026-04-26 13:32:06 |
👁️ 阅读: 7
根据课程日志记录,TXT中可以通过物品名称获取其唯一ID,但删除操作需要区分背包和身上物品。
**1. 通过物品名称获取唯一ID**
可以使用 `LINKITEMBYNAME` 命令关联指定名称的物品来获取其唯一ID,然后通过常量 `<$BOXITEM[参数].MAKEINDEX>` 读取。
示例脚本:
```
[@通过名称获取ID]
#IF
#ACT
; 关联背包中名为“屠龙”的物品
LINKITEMBYNAME 屠龙
; 刷新OK框显示
UpDateBoxItem -1
#SAY
你关联的屠龙唯一ID是:<$BOXITEM[0].MAKEINDEX>
```
**2. 通过唯一ID删除物品**
删除操作需根据物品位置使用不同命令:
- **删除背包物品**:使用 `DelItemByMakeIndex`
- **删除身上装备**:使用 `DelBodyByMakeIndex`
示例(删除背包物品):
```
[@删除背包物品]
#IF
#ACT
; 假设唯一ID已存入变量 N$物品ID
DelItemByMakeIndex <$STR(N$物品ID)>
SENDMSG 6 已删除背包中指定唯一ID的物品。
```
**重要限制**:
- `DelItemByMakeIndex` 和 `DelBodyByMakeIndex` 对于**叠加物品**,其每个堆叠单位的唯一ID都不同,使用唯一ID删除会删除整个堆叠,无法只删除部分数量。
- 如果物品已穿戴在身上,必须使用 `DelBodyByMakeIndex` 进行删除。
完整流程示例:
```
[@获取并删除]
#IF
#ACT
LINKITEMBYNAME 金条
UpDateBoxItem -1
MOV N$目标ID <$BOXITEM[0].MAKEINDEX>
; 此处应增加判断物品在背包还是身上,此处以背包为例
DelItemByMakeIndex <$STR(N$目标ID)>
SENDMSG 6 已根据名称找到金条并删除。
```
如果物品可能同时在背包和身上,你需要先判断其位置,再调用对应的删除命令。根据课程日志,目前没有直接通过物品名称获取其所在位置的命令,需要结合其他逻辑(如遍历检测)来判断。
← 返回问答库