所有分类
  • 所有分类
  • 脚 本
  • 版 本
  • 素 材
  • 工 具

Blue鉴定获取命令案列脚本

 增加NPC命令:StrCap S1 S2 ( )                // 捕获字符串S1中“()”内的内容到S2,S1返回剩余部分
扩展NPC命令:UpgradeItem                        // 第5参数设置为99时,忽略普通属性的升级,只升级神秘属性;第4参数为鉴定属性,格式:普通鉴定属性|神秘鉴定属性|特殊属性|神技|几鉴,类似Give命令的格式,留空则不起作用
扩展NPC命令:UpgradeItemEx                // 第5参数设置为99时,忽略普通属性的升级,只升级神秘属性;第8参数为鉴定属性,同UpgradeItem的第4参数

扩展NPC命令:UpgradeItemEx                // 第4参数如果是1=5,3=5,28=7,28=8这样的“位置=数值”批量格式,则直接按第4参数修改装备普通属性,不会失败
扩展NPC命令:UpgradeDlgItem                // 第4参数设置为99时,忽略普通属性的升级,只升级神秘属性;第6参数为鉴定属性,同上
增加NPC命令:GetEquipProps                 // 身上装备位置(0~16或10000),装备位置为10000时,获取的是自定装备框的装备属性,即DlgItem

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作用:获取装备属性值到一组变量中,n=身上装备位置0~16或10000,p=普通属性0~30,i=鉴定属性1~30,注意下面的n、p、i都是变量
普通属性:M_EQUIP[n]_NORM_PROPS{p}
有效的普通属性总字符串:S_EQUIP[n]_NORM_PROPS                                // 数值格式:1=5,3=5,28=7,28=8,等于号左边是属性位置0~30,右边是数值
一组鉴定基础属性:S_EQUIP[n]_EVAL_BASE_PROPS                                // 数值格式:1=5,3=5,28=7,28=8,等于号左边是鉴定属性1~30,右边是数值,结合StrTok命令使用,鉴定属性1~30可参考以前的更新说明
一组鉴定神秘属性:S_EQUIP[n]_EVAL_MYST_PROPS                                // 数值格式:1=5,3=5,28=7,28=8,等于号左边是鉴定属性1~30,右边是数值
单条鉴定基础属性:S_EQUIP[n]_EVAL_BASE_PROP_SLOT{1~4}                // 数值格式:1=5,SLOT范围1~4,表示第几条属性,属性值非0才有效
单条鉴定神秘属性:S_EQUIP[n]_EVAL_MYST_PROP_SLOT{1~4}                // 数值格式:1=5,SLOT范围1~4,表示第几条属性,属性值非0才有效
单条鉴定基础属性:M_EQUIP[n]_EVAL_BASE_PROPS{i}                                // 按鉴定属性1~30得到基础属性数值,如果有重复的属性,不能使用此变量
单条鉴定神秘属性:M_EQUIP[n]_EVAL_MYST_PROPS{i}                                // 按鉴定属性1~30得到神秘属性数值,如果有重复的属性,不能使用此变量
鉴定特殊属性:M_EQUIP[n]_EVAL_SPEC_PROPS                                        // 可以使用IsBitSet,SetBit,UnsetBit命令比较计算
鉴定神技:M_EQUIP[n]_EVAL_SKILL_PROPS                                                // 可以使用IsBitSet,SetBit,UnsetBit命令比较计算
鉴定次数:M_EQUIP[n]_EVAL_TIMES_PROPS

是否有鉴定基础属性:M_EQUIP[n]_HAS_EVAL_BASE_PROPS                        // =0没有,>0有
是否有鉴定神秘属性:M_EQUIP[n]_HAS_EVAL_MYST_PROPS                        // =0没有,>0有

获取到属性会触发本NPC的[@OnGetEquipProps]字段,附带返回变量如下,其他请查看附带示例:GetEquipProps.txt
$PARAM(0)        // 物品ID
$PARAM(1)        // stdmode
$PARAM(2)        // looks
$PARAM(3)        // 装备位置
$PARAM(4)        // 鉴定基础属性有效条数
$PARAM(5)        // 鉴定神秘属性有效条数

[@main]
<获取并修改武器属性示例/@GetEquipProps> \ \
<关闭/@exit>

[@GetEquipProps]
; 检测并修改武器的属性
#if
CheckUseItem 1
#act
Mov S_Eval_Base_Prop “”
Mov S_Eval_Myst_Prop “”
Mov M_Eval_Spec_Prop 0
Mov M_Eval_Skill_Prop 0
Mov M_Eval_Times_Prop 0
GetEquipProps 1

[@OnGetEquipProps]
; ——————————————————————
; StrTok 可以分解这样的字符:
#act
SendMsg 5 分解字符串例子…
Mov S_Eval_Props 1=11,2=12,3=13,9=15|6=11,10=12,11=13,12=15|67|127|2
StrTok S_Eval_Props S_LeftStr1 |
StrTok S_Eval_Props S_LeftStr2 |
StrTok S_Eval_Props S_LeftStr3 |
StrTok S_Eval_Props S_LeftStr4 |
StrTok S_Eval_Props S_LeftStr5 |
SendMsg 5 “先按“|”分解出:<$STR(S_LeftStr1)>,  <$STR(S_LeftStr2)>,  <$STR(S_LeftStr3)>,  <$STR(S_LeftStr4)>,  <$STR(S_LeftStr5)>”

; 分解S_LeftStr1,其他S_LeftStrXX方法一致
StrTok S_LeftStr1 S_PropVal1 ,
StrTok S_LeftStr1 S_PropVal2 ,
StrTok S_LeftStr1 S_PropVal3 ,
StrTok S_LeftStr1 S_PropVal4 ,
SendMsg 5 “再按“,”分解出:<$STR(S_PropVal1)>,  <$STR(S_PropVal2)>,  <$STR(S_PropVal3)>,  <$STR(S_PropVal4)>”

StrTok S_PropVal1 S_Prop1 =
StrTok S_PropVal2 S_Prop2 =
StrTok S_PropVal3 S_Prop3 =
StrTok S_PropVal4 S_Prop4 =
SendMsg 5 “得到属性<$STR(S_Prop1)>=<$STR(S_PropVal1)>,<$STR(S_Prop2)>=<$STR(S_PropVal2)>,<$STR(S_Prop3)>=<$STR(S_PropVal3)>,<$STR(S_Prop4)>=<$STR(S_PropVal4)>”

; ——————————————————————
#if
true
#act
; 获取鉴定特殊属性到M_Eval_Spec_Prop
FormatStr <$STR(M_EQUIP[%s]_EVAL_SPEC_PROPS{0})%s <$PARAM(3)> >
Mov M_Eval_Spec_Prop <$CALCRESULT>

; 更改鉴定特殊属性,可以使用#Call简化脚本
#if
IsBitSet M_Eval_Spec_Prop 0
#act
SendMsg 5 “拥有特殊属性:八卦护身神技”
; 删除掉该技能
UnSetBit M_Eval_Spec_Prop 0

#if
IsBitSet M_Eval_Spec_Prop 1
#act
SendMsg 5 “拥有特殊属性:战意麻痹神技”
; 删除掉该技能
UnSetBit M_Eval_Spec_Prop 1

#if
IsBitSet M_Eval_Spec_Prop 2
#act
SendMsg 5 “拥有特殊属性:重生神技”
; 删除掉该技能
UnSetBit M_Eval_Spec_Prop 2

#if
IsBitSet M_Eval_Spec_Prop 3
#act
SendMsg 5 “拥有特殊属性:探测神技”
; 删除掉该技能
UnSetBit M_Eval_Spec_Prop 3

#if
IsBitSet M_Eval_Spec_Prop 4
#act
SendMsg 5 “拥有特殊属性:传送神技”
; 删除掉该技能
UnSetBit M_Eval_Spec_Prop 4

#if
IsBitSet M_Eval_Spec_Prop 5
#act
SendMsg 5 “拥有特殊属性:麻痹神技”
#elseact
; 没有“麻痹神技”?那就设置一个“麻痹神技”,然后可以将M_Eval_Spec_Prop的值回设给装备,即拥有“麻痹神技”
SetBit M_Eval_Spec_Prop 5

#if
!IsBitSet M_Eval_Spec_Prop 6
#act
SendMsg 5 “赋予特殊属性:魔道麻痹神技”
SetBit M_Eval_Spec_Prop 6

; ——————————————————————
; 获取鉴定神技属性到M_Eval_Skill_Prop
FormatStr <$STR(M_EQUIP[%s]_EVAL_SKILL_PROPS)%s <$PARAM(3)> >
Mov M_Eval_Skill_Prop <$CALCRESULT>

; 如果是武器,是拥有技能,其他非武器类装备是技能等级+1
#if
IsBitSet M_Eval_Skill_Prop 0
#act
SendMsg 5 “拥有神技:五岳独尊特技”
; 删除掉该技能
UnSetBit M_Eval_Skill_Prop 0

#if
IsBitSet M_Eval_Skill_Prop 1
#act
SendMsg 5 “拥有神技:召唤巨魔特技”
; 删除掉该技能
UnSetBit M_Eval_Skill_Prop 1

#if
IsBitSet M_Eval_Skill_Prop 2
#act
SendMsg 5 “拥有神技:神龙附体特技”
; 删除掉该技能
UnSetBit M_Eval_Skill_Prop 2

#if
IsBitSet M_Eval_Skill_Prop 3
#act
SendMsg 5 “拥有神技:倚天劈地特技”

; ——————————————————————
FormatStr <$STR(M_EQUIP[%s]_EVAL_TIMES_PROPS)%s <$PARAM(3)> >
Mov M_Eval_Times_Prop <$CALCRESULT>

; ——————————————————————
#if
; 升级身上装备,只是特殊技能
!CompVal <$PARAM(3)> = 10000
#act
; 故意留了空格,防止分解字符串是出现问题
FormatStr “%s |%s |%s |%s | %s” $STR(S_Eval_Base_Prop) $STR(S_Eval_Myst_Prop) $STR(M_Eval_Spec_Prop) $STR(M_Eval_Skill_Prop) $STR(M_Eval_Times_Prop)
SendMsg 5 “即将设置的鉴定属性:<$CALCRESULT>”
; 第5参数本来处理失败的结果,现在扩展为可以设置99,即忽略普通属性的升级,这里只升级神秘属性
UpgradeItemEx <$PARAM(3)> 11 1 1 99 “” 1 <$CALCRESULT>
; 升级自定义装备框的装备,略…
;#elseact
;UpgradeDlgItem

0

评论0

请先

欢迎加入QQ交流群:758636092
显示验证码
没有账号? 注册  忘记密码?

社交账号快速登录