脚本示例

自定义物品框脚本

9 格自定义物品框(ITEMBOX)的完整脚本:放入物品、单个取回与一键批量取回。

用途

9 格自定义物品框示例:用 ITEMBOX 标签在对话框里画出 9 个物品框,玩家放上装备后可逐个取回,也可以一键批量取回。

参考脚本

[@自定义OK框]
#SAY
自定义OK框 丢入装备回收\ \

<返回装备到背包1/@返回装备到背包1> <返回装备到背包2/@返回装备到背包2> <返回装备到背包3/@返回装备到背包3> <返回装备到背包4/@返回装备到背包4> <返回装备到背包5/@返回装备到背包5>\ \

 <返回装备到背包6/@返回装备到背包6> <返回装备到背包7/@返回装备到背包7> <返回装备到背包8/@返回装备到背包8> <返回装备到背包9/@返回装备到背包9> <批量取回/@批量取回>\ \

<ITEMBOX=0,prguse,1241,1,0,0,0,0,20,100,100 LABEL=@itembox0 HINT=请放上装备> \ \
<ITEMBOX=1,prguse,1241,1,0,0,0,0,70,100,100 LABEL=@itembox1 HINT=请放上回收物品>\ \
<ITEMBOX=2,prguse,700,7,1,1,0,0,120,100,100 LABEL=@itembox2 HINT=请放上装备3>\ \
<ITEMBOX=3,prguse,700,7,1,1,0,0,170,100,100 LABEL=@itembox3 HINT=请放上装备4>\ \
<ITEMBOX=4,prguse,700,7,1,1,0,0,220,100,100 LABEL=@itembox4 HINT=请放上装备5>\ \
<ITEMBOX=5,prguse,700,7,1,1,0,0,20,200,100 LABEL=@itembox5 HINT=请放上装备6>\ \
<ITEMBOX=6,prguse,700,7,1,1,0,0,100,200,100 LABEL=@itembox6 HINT=请放上装备7>\ \
<ITEMBOX=7,prguse,700,7,1,1,0,0,20,300,100 LABEL=@itembox7 HINT=请放上装备8>\ \
<ITEMBOX=8,prguse,700,7,1,1,0,0,100,300,100 LABEL=@itembox8 HINT=请放上装备9>\ \

[@批量取回]
#act
RetBoxItem 0
RetBoxItem 1
RetBoxItem 2
RetBoxItem 3
RetBoxItem 4
RetBoxItem 5
RetBoxItem 6
RetBoxItem 7
RetBoxItem 8
sendmsg 6 返回了1-8

[@返回装备到背包1]
#act
RetBoxItem 0
sendmsg 6 返回了1

[@返回装备到背包2]
#act
RetBoxItem 1
sendmsg 6 返回了2

[@返回装备到背包3]
#act
RetBoxItem 2
sendmsg 6 返回了3
[@返回装备到背包4]
#act
RetBoxItem 3
sendmsg 6 返回了4
[@返回装备到背包5]
#act
RetBoxItem 4
sendmsg 6 返回了5
[@返回装备到背包6]
#act
RetBoxItem 5
sendmsg 6 返回了6
[@返回装备到背包7]
#act
RetBoxItem 6
sendmsg 6 返回了7
[@返回装备到背包8]
#act
RetBoxItem 7
sendmsg 6 返回了8
[@返回装备到背包9]
#act
RetBoxItem 8
sendmsg 6 返回了9

[@itembox2]
    #if
    ; 是否已放上物品
    CompVal <$BOXITEMID2> ! 0
    #act
    GetEquipProps 20002 @111

[@itembox0]
    #if
    ; 是否已放上物品
    CompVal <$BOXITEMID0> ! 0
    #act
    GetEquipProps 20000 @111

[@itembox1]
    #if
    ; 是否已放上物品
    CompVal <$BOXITEMID1> ! 0
    #act
    ; 取走物品
GetEquipProps 20001 @111
    ;Take <$BOXITEMID1> 1

[@OnGetEquipProps]
    #act
    ; $PARAM(3)是位置
    Calc "<$PARAM(3)> - 20000" M_物品框序列号
    sendmsg 7 物品框【<$STR(M_物品框序列号)>】的物品名:【<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>】,物品ID:【<$STR(S_EQUIP[<$PARAM(3)>]_ID)>】

[@111]
#IF
CHECKLEVELEX > 0
#ACT
    Calc "<$PARAM(3)> - 20000" M_物品框序列号
sendmsg 7 物品框【<$STR(M_物品框序列号)>】
sendMsg 7 <$STR(S_EQUIP[<$PARAM(3)>]_ID)>//获取物品ID,当物品无效时变量为0★<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>//获取物品名称,当物品无效时变量是空字符串★<$STR(M_EQUIP[<$PARAM(3)>]_SHAPE)>//获取物品Shape★<$STR(M_EQUIP[<$PARAM(3)>]_STDMODE)>//获取物品StdMode★<$STR(M_EQUIP[<$PARAM(3)>]_ANICOUNT)>//获取物品AniCount★

#if(1)
    CompVal <$STR(M_EQUIP[<$PARAM(3)>]_STDMODE)> = 6
    CompVal <$STR(M_EQUIP[<$PARAM(3)>]_STDMODE)> = 7
    #act
    sendmsg 7 测试通过当前物品框【<$STR(M_物品框序列号)>】STDMODE值为:<$STR(M_EQUIP[<$PARAM(3)>]_STDMODE)>
    #elseact
    sendmsg 7 测试未通过前物品框【<$STR(M_物品框序列号)>】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
    #if
    CompVal <$BOXITEMNAME4> = 裁决之杖
    #act
    MOV M_装备碎片 20
    MOV M_原质晶石 20
    MOV M_装备精华 20
    MOV M_绿宝石 20
    SetDlgItem 屠龙
    MOV S_新武器 屠龙
    Mov S11 <$DLGITEMSHOW>
    STRINGREPLACE S11 >< {ax=232,ay=112}><
    BREAK
    #if
    CompVal <$BOXITEMNAME4> = 屠龙
    #act
    MOV M_装备碎片 40
    MOV M_原质晶石 40
    MOV M_装备精华 40
    MOV M_绿宝石 40
    SetDlgItem 天之屠龙
    MOV S_新武器 天之屠龙
    Mov S11 <$DLGITEMSHOW>
    STRINGREPLACE S11 >< {ax=232,ay=112}><
    BREAK

#ELSEACT
    mov S11

[@itembox0]
    #if
    ; 是否已放上物品
    ;CompVal <$BOXITEMID0> ! 0
    #act
    GetEquipProps 20000 @材料0
    GOTO @main

[@itembox1]
    #if
    ; 是否已放上物品
    ;CompVal <$BOXITEMID1> ! 0
    #act
    GetEquipProps 20001 @材料1
    GOTO @main

[@材料0]
    #if
    !CompVal <$STR(S_EQUIP[<$PARAM(3)>]_NAME)> = 原质晶石
    #act
    RetBoxItem 0
    MESSAGEBOX 你放入的【<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>】无法进行锻造!缺少需要副材料【原质晶石】\
    GOTO @main
    BREAK

[@材料1]
    #if
    !CompVal <$STR(S_EQUIP[<$PARAM(3)>]_NAME)> = 装备精华
    #act
    RetBoxItem 1
    MESSAGEBOX 你放入的【<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>】无法进行锻造!缺少需要主材料【装备精华】\
    GOTO @main
    BREAK

[@材料2]
    #if
    !CompVal <$STR(S_EQUIP[<$PARAM(3)>]_NAME)> = 装备碎片
    #act
    RetBoxItem 2
    MESSAGEBOX 你放入的【<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>】无法进行锻造!缺少需要主材料【装备碎片】\
    GOTO @main
    BREAK

[@材料3]
    #if
    !CompVal <$STR(S_EQUIP[<$PARAM(3)>]_NAME)> = 绿宝石
    #act
    RetBoxItem 3
    MESSAGEBOX 你放入的【<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>】无法进行锻造!缺少需要主材料【绿宝石】\
    GOTO @main
    BREAK

[@材料4]
    #if(1)
    CompVal <$STR(S_EQUIP[<$PARAM(3)>]_STDMODE)> = 5
    CompVal <$STR(S_EQUIP[<$PARAM(3)>]_STDMODE)> = 6

#ACT
    MOV s11
    GetEquipProps 20004  @OnGetEquipProps

#ELSEACT
    RetBoxItem 4
    MESSAGEBOX 你放入的【<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>】无法进行锻造!只能放入【武器】:<$STR(S_EQUIP[<$PARAM(3)>]_STDMODE)>\
    GOTO @main
    BREAK

[@itembox2]
    #if
    ; 是否已放上物品
    ;CompVal <$BOXITEMID2> ! 0
    #act
    GetEquipProps 20002 @材料2
    GOTO @main

[@itembox3]
    #if
    ; 是否已放上物品
    ;CompVal <$BOXITEMID3> ! 0
    #act
    GetEquipProps 20003 @材料3
    GOTO @main

[@itembox5]
    #if
    ; 是否已放上物品
    ;CompVal <$BOXITEMID5> ! 0
    #act
    GetEquipProps 20005
    GOTO @main

[@itembox6]
    #if
    ; 是否已放上物品
    #act
    GetEquipProps 20006
    sendmsg 7 GetEquipProps6:<$BOXITEMID6>、<$PARAM(1)>
    GOTO @main

[@itembox7]
    #if
    ; 是否已放上物品
    #act
    GetEquipProps 20007
    sendmsg 7 GetEquipProps7:<$BOXITEMID7>、<$PARAM(1)>
    GOTO @main

[@itembox8]
    #if
    ; 是否已放上物品
    #act
    GetEquipProps 20008
    sendmsg 7 GetEquipProps8:<$BOXITEMID8>、<$PARAM(1)>
    GOTO @main

[@itembox4]
    #if
    ; 是否已放上物品
    ;CompVal <$BOXITEMID4> ! 0
    #act
    GetEquipProps 20004
    GOTO @main

[@OnGetEquipProps]
#IF
CHECKLEVELEX > 0
#ACT
    Calc "<$PARAM(3)> - 20000" M_物品框序列号

#if(1)
CompVal <$STR(M_EQUIP[<$PARAM(3)>]_STDMODE)> = 5
CompVal <$STR(M_EQUIP[<$PARAM(3)>]_STDMODE)> = 6
#act
sendmsg 7 你放入的【<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>】可以点击【锻造按钮】,进行升级武器!
#elseact
RetBoxItem 4
MESSAGEBOX 你放入的【<$STR(S_EQUIP[<$PARAM(3)>]_NAME)>】无法进行锻造!只能放入【武器】

[@锻造装备]
#if
CompVal <$BOXITEMID0> ! 0
#elseact
MESSAGEBOX 您缺少材料【原质晶石】无法进行锻造!
BREAK

#if
CompVal <$BOXITEMID1> ! 0
#elseact
MESSAGEBOX 您缺少材料【装备精华】无法进行锻造!
BREAK

#if
CompVal <$BOXITEMID2> ! 0
#elseact
MESSAGEBOX 您缺少材料【装备碎片】无法进行锻造!
BREAK

#if
CompVal <$BOXITEMID3> ! 0
#elseact
MESSAGEBOX 您缺少材料【绿宝石】无法进行锻造!
BREAK

#if
CompVal <$BOXITEMID4> ! 0
#elseact
MESSAGEBOX 您都没有放入需要锻造的【武器】无法进行锻造!
BREAK

#IF
Compval <$ITEMCOUNT(装备碎片)> ? <$STR(M_装备碎片)>
#ELSEACT
MESSAGEBOX 您的身上没有足够的【装备碎片x<$STR(M_装备碎片)>】!\您的包袱里【装备碎片】剩余:<$ITEMCOUNT(装备碎片)>
BREAK

#IF
Compval <$ITEMCOUNT(原质晶石)> ? <$STR(M_原质晶石)>
#ELSEACT
MESSAGEBOX 您的身上没有足够的【原质晶石x<$STR(M_原质晶石)>】!\\您的包袱里【原质晶石】剩余:<$ITEMCOUNT(原质晶石)>
BREAK

#IF
Compval <$ITEMCOUNT(装备碎片)> ? <$STR(M_装备碎片)>
Compval <$ITEMCOUNT(原质晶石)> ? <$STR(M_原质晶石)>
Compval <$ITEMCOUNT(装备精华)> ? <$STR(M_装备精华)>
Compval <$ITEMCOUNT(绿宝石)> ? <$STR(M_绿宝石)>
#ACT
TAKE <$BOXITEMID0> <$STR(M_装备碎片)>
TAKE <$BOXITEMID1> <$STR(M_原质晶石)>
TAKE <$BOXITEMID2> <$STR(M_装备精华)>
TAKE <$BOXITEMID3> <$STR(M_绿宝石)>
TAKE <$BOXITEMID4> 1
GIVE <$STR(S_新武器)> 1
GOTO @main
#ELSEACT
GOTO @main

关键点

  • 每个框由一行 ITEMBOX=序号,库名,起始图,帧数,...,X,Y,宽,高 LABEL=@itemboxN HINT=提示 定义,脚本给出 9 个框的完整参数(其中 1 号用 prguse,1241,其余用 prguse,700)。
  • 取回用 RetBoxItem <框序号>;[@批量取回] 连续调用 RetBoxItem 0~RetBoxItem 8 并 sendmsg 6 提示,9 个单独的 [@返回装备到背包N] 分支各自只取回对应格子。
  • [@itembox0]~[@itembox8] 是放入物品后的回调段,用 CHECKDLGITEM/TAKEDLGITEM 一类判断与取件逻辑(含“是否已放上物品”“取走物品”等注释)。

相关阅读