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 个
2WIL文件底图素材所在的 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全部物品

注意事项

  1. 本功能需要配套 AC 游戏网关,防止部分操作被过滤
  2. 仅 AC 客户端支持完整功能
  3. 关闭 NPC 窗口时物品自动返回背包,不会触发 LABEL
  4. 物品框序号范围 0~19,共 20 个框位
  5. S_RemovedBoxItemID 等移除变量为即时变量,仅在 LABEL 触发时有效

相关阅读