AC专属引擎功能
NPC物品框(自定义OK框)
NPC对话框中的自定义物品框(OK框)功能,支持装备强化、鉴定、升级、属性转移、多条件检测等丰富玩法。
NPC物品框(自定义OK框)
NPC物品框(也称自定义OK框)是AC封挂专属功能,允许在NPC对话框中嵌入可拖放物品的框位,实现装备强化、鉴定、升级、属性转移、多条件检测、多条件升级等丰富玩法。
本功能需要引擎版本 21.05.25-05-2 及以上,并配套 AC 游戏网关 8.9.7.3 及以上,防止部分操作被过滤。
物品框语法
在 #SAY 中使用 ITEMBOX 标签嵌入物品框:
<ITEMBOX=0~19,prguse,1241,1,0,0,0,8,11,22,100 LABEL=@ItemBox0 HINT=请放上装备>
参数说明
| 参数位置 | 参数名 | 说明 |
|---|---|---|
| 1 | 序号 | 物品框序号,范围 0~19,最多 20 个 |
| 2 | WIL文件 | 底图素材所在的 wil 文件名,如 prguse |
| 3 | 图片索引 | wil 中的图片索引号 |
| 4 | 图片数 | 动画帧数 |
| 5 | 是否循环 | 动画是否循环播放 |
| 6 | 是否透明 | 是否透明 |
| 7 | 偏移X | 图片偏移 X |
| 8 | 偏移Y | 图片偏移 Y |
| 9 | 绝对X | 物品框绝对 X 坐标(不参与自动换行) |
| 10 | 绝对Y | 物品框绝对 Y 坐标(不参与自动换行) |
| 11 | 帧间隔 | 动画帧间隔,单位毫秒 |
| LABEL | 触发标签 | 放上或取下物品时触发的 [@标签] 字段 |
| HINT | 提示文字 | 鼠标悬停时显示的提示 |
物品框触发 LABEL 仅在鼠标操作时生效。直接关闭 NPC 窗口,物品会自动返回背包,不会触发 LABEL。
物品框变量
| 变量 | 说明 |
|---|---|
<$BoxItemID0~19> | 物品框 0~19 中的物品 ID,无物品时为 0 |
<$BoxItemName0~19> | 物品框 0~19 中的物品名称,无物品时为空 |
<$BoxItemCount0~19> | 物品框 0~19 中的物品数量,无物品时为 0 |
<$STR(S_RemovedBoxItemID0~19)> | 被移除物品框的物品 ID(即时变量,仅 LABEL 触发时有效) |
<$STR(S_RemovedBoxItemName0~19)> | 被移除物品框的物品名称(即时变量,同上) |
<$STR(M_RemovedBoxItemCount0~19)> | 被移除物品框的物品数量(即时变量,同上) |
以上变量可直接使用,无需通过 GetEquipProps。
NPC命令
RetBoxItem — 返回物品框物品
RetBoxItem 0~19
将指定物品框中的物品返回背包。
GetEquipProps / UpgradeItem / UpgradeItemEx 扩展
这些命令支持位置 20000~20019,对应操作物品框 0~19 中的物品。
GetEquipProps 20000 ; 获取物品框0中物品的属性
UpgradeItem 20000 0 10 ... ; 对物品框0中物品执行 UpgradeItem
UpgradeItemEx 20000 0 0 10 ... ; 对物品框0中物品执行 UpgradeItemEx
基础示例
放入/移除检测
#SAY
ITEMBOX:<ITEMBOX=0,prguse,1241,1,0,0,0,8,55,0,100 LABEL=@itembox0 HINT=请放上装备>
ITEMBOX:<ITEMBOX=1,prguse,1241,1,0,0,0,8,111,0,100 LABEL=@itembox1 HINT=请放上回收物品>\
[@itembox0]
#IF
; 是否已取走物品(物品ID为0表示已移除)
CompVal <$BoxItemID0> = 0
#ACT
SendMsg 7 移除的物品ID:<$STR(S_RemovedBoxItemID0)>,物品名:<$STR(S_RemovedBoxItemName0)>,数量:<$STR(M_RemovedBoxItemCount0)>
#ELSEACT
; 物品放入,获取属性
GetEquipProps 20000
[@itembox1]
#IF
CompVal <$BoxItemID1> = 0
#ACT
SendMsg 7 移除的物品ID:<$STR(S_RemovedBoxItemID1)>,物品名:<$STR(S_RemovedBoxItemName1)>,数量:<$STR(M_RemovedBoxItemCount1)>
#ELSEACT
; 取走物品
Take <$BoxItemID1> 1
获取物品框属性回调
[@OnGetEquipProps]
#ACT
Calc "<$PARAM(3)> - 20000" M_物品框序列号
SendMsg 7 【物品框<$STR(M_物品框序列号)>】\
物品ID:<$STR(S_EQUIP[<$PARAM(3)>]_ID)>\
物品名:<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>\
Shape:<$STR(M_EQUIP[<$PARAM(3)>]_SHAPE)>\
StdMode:<$STR(M_EQUIP[<$PARAM(3)>]_STDMODE)>
装备锻造实战示例
以下是一个完整的装备锻造脚本,展示物品框的实际应用:
[@main]
#SAY
<$STR(S11)>
<PIC=ui3,001377,1,1,1,0,0,212,390 LABEL=@锻造装备>
<PIC=prguse,000064,1,1,1,0,0,480,10 LABEL=@EXIT>
<color=$98FB98 锻造装备{AX=228,AY=400}>
<color=$98FB98 <$BOXITEMNAME0>{AX=62,AY=245}>
<color=$98FB98 <$BOXITEMNAME1>{AX=172,AY=245}>
<color=$98FB98 <$BOXITEMNAME2>{AX=278,AY=245}>
<color=$98FB98 <$BOXITEMNAME3>{AX=383,AY=245}>
<color=$98FB98 <$BOXITEMNAME4>{AX=227,AY=335}>
<ITEMBOX=0,ui1,1651,1,1,1,0,12,74,190,100 LABEL=@itembox0 HINT=请放上原质晶石>\
<ITEMBOX=1,ui1,1653,1,1,1,0,12,180,190,100 LABEL=@itembox1 HINT=请放上装备精华>
<ITEMBOX=2,ui1,1653,1,1,1,0,12,285,190,100 LABEL=@itembox2 HINT=请放传承精华>
<ITEMBOX=3,ui1,1651,1,1,1,0,12,395,190,100 LABEL=@itembox3 HINT=请放上绿宝石>
<ITEMBOX=4,ui1,3638,1,0,0,0,12,229,272,100 LABEL=@itembox4 HINT=请放上武器>
#IF
CompVal <$BOXITEMNAME4> = 井中月
#ACT
MOV M_装备碎片 10
MOV M_原质晶石 10
MOV M_装备精华 10
MOV M_绿宝石 10
SetDlgItem 裁决之杖
MOV S_新武器 裁决之杖
Mov S11 <$DLGITEMSHOW>
STRINGREPLACE S11 >< {ax=232,ay=112}><
BREAK
20个OK框批量操作
[@批量取回]
#ACT
RetBoxItem 0
RetBoxItem 1
RetBoxItem 2
; ... 依次到 19
RetBoxItem 19
SendMsg 6 返回了0-19全部物品
注意事项
- 本功能需要配套 AC 游戏网关,防止部分操作被过滤
- 仅 AC 客户端支持完整功能
- 关闭 NPC 窗口时物品自动返回背包,不会触发 LABEL
- 物品框序号范围 0~19,共 20 个框位
S_RemovedBoxItemID等移除变量为即时变量,仅在 LABEL 触发时有效
