传奇装备鉴定属性什么好及装备鉴定随机属性脚本完整实现写法指南

来源: 作者: 点击:
一、鉴定系统到底动了装备的哪一块

传奇里的鉴定不是一个内置功能,它靠两样东西拼出来:装备身上预留的属性槽,以及脚本往槽里填值的那些命令。把这层想通,后面所有写法都不再是照抄。

引擎存装备数据分三层。第一层是基础攻防,写在物品数据库里,鉴定一般不动它。第二层是元素属性,暴击、增伤、减伤这一类,用一排固定编号的槽位存放,脚本就是往这些槽里随机填数。第三层是自定义文字,也就是装备下方那行“装备鉴定:极品”的描述,可以单独改内容,也可以单独改颜色。

开工之前先做一件事。打开 M2 主程序,进选项,找到物品装备,里面有个新增属性开关,把它勾上。不勾这个,脚本写得再对,玩家客户端上也不会显示任何元素属性,你会一直以为自己的命令写错了。这一步每年都有人漏。

二、鉴定能出哪些属性,哪些算好

脚本能写入的元素属性一共十一项,按内部编号从 0 到 10 排下来是:暴击几率增加、增加攻击伤害、物理伤害减少、魔法伤害减少、忽视目标防御、所有伤害反弹、增加目标暴率、人物体力增加、人物魔力增加、怒气恢复增加、合击攻击增加。

这十一项就是绝大多数端鉴定脚本能动的全部范围。哪一项算好,得分开看职业,也分开看打宝还是打架。

战士看输出,暴击几率、增加攻击伤害、忽视目标防御这三项是核心,尤其忽视防御在高防目标身上收益明显,堆到一定数值后打人不再刮痧。生存向优先物理伤害减少,堆高了近身硬拼能多扛几刀。所有伤害反弹在混战里有一定作用,体力增加是保底的。打宝流可以偏向增加目标暴率,配合挂机效率更高。

法师的魔法伤害减少优先级最高,脆皮职业活着才有输出;人物魔力增加直接拉高续航和技能释放上限;暴击和增加攻击伤害对法术同样生效;忽视目标防御在打高魔御的怪和玩家时价值大。所有伤害反弹对法师意义不大,因为法师多半不会贴脸挨打。

道士的体力增加和魔法师的法力增加看起来不起眼,但道士本身血厚蓝多,配合治愈和召唤,耐久度提升后单刷续航差别很大。增加目标暴率适合长时间挂机打宝;合击攻击增加在带合击的版本里对团战有用;所有伤害反弹和伤害减免可以让道士更难被打死。纯辅助道士不要把点全压在攻击项上,生存和召唤物相关的收益更稳。

打宝和 PK 的取向不一样。打宝看的是清怪速度和爆率,暴击、目标暴率、攻击伤害优先;PK 看的是能不能站住,减伤、体力、反弹这类防守项价值上升。一件装备鉴定出满攻击但脆得像纸,进团战就是送。

有些版本走的是元素体系,装备会带攻击元素、强元素、弱元素三类词条。这类体系里最先要处理掉的是致命的弱元素,带着高弱抗去打对应属性的怪,伤害会被放大,反而更容易暴毙。攻击元素则按怪物弱点切换,没有一个万能解。

三、用 OK 框做人工鉴定脚本

最常见的一种鉴定,是把装备放进一个框里,点按钮,脚本读框里的装备、判断类型、随机属性、写回去。GOM 这一系的写法如下。

先开界面,框体用 ITEMBOX 声明,玩家把装备拖进去:

text
[@main]
#ACT
OPENMERCHANTBIGDLG 2 17 0 0 1 1 1 398 3
#SAY
\<装备重铸/SCOLOR=154>\
\
\<说明:/SCOLOR=249><装备鉴定[重铸],可以重铸出你喜欢的属性!/SCOLOR=145>\
\
<ITEMBOX:1:20:60:60:10:76:76:*:254#请放入需要鉴定的装备>\
\
\<开始鉴定/@鉴定>\
\<每重铸一次需要:3个鉴定石/SCOLOR=154>\


ITEMBOX 那一串参数里,第一个 1 是这个框的编号,后面几个是框的坐标和大小,末尾 254 是框的图标,最后那行文字是框里的提示语。框的编号决定了后面所有命令里用哪个数字去指代它。

点鉴定之后,先查材料,再判断框里是什么装备。装备类型靠 STDMODE 判断,武器是 5,男衣 10、女衣 11,项链 19,戒指手镯那一类落在 22、23、24、26、62、64、15 上:

text
[@鉴定]
#IF
checkItem 鉴定石 3
#ACT
GOTO @准备鉴定
#ELSEACT
MESSAGEBOX 错误提示:请检查背包里[鉴定石]是否足够!
break

[@准备鉴定]
#IF
Equal <$BOXITEM[1].STDMODE> 5
#ACT
SetUpgradeItem 1
take 鉴定石 3
GOTO @武器鉴定
break
#OR
Equal <$BOXITEM[1].STDMODE> 10
Equal <$BOXITEM[1].STDMODE> 11
#ACT
SetUpgradeItem 1
take 鉴定石 3
GOTO @衣服鉴定
break
#ELSEACT
ReturnBoxItem 1
MESSAGEBOX 错误提示:当前物品不能鉴定!
break


SetUpgradeItem 1 这句话是关键,它把框里的物品指定成后面要操作的升级目标,写完之后再调属性命令,位置参数就可以直接填 -1,表示“就是刚才指定的这件”。不写这句,属性会加到别的地方去。

四、按品质随机分级怎么写

真正让鉴定有随机感的,是品质分级。做法是先随机一个数字,再用大小判断把它归到某一档,每一档写不同的属性值。

text
[@首饰鉴定]
#ACT
movr D1 1 15
#IF
small D1 6
#ACT
CHANGECUSTOMITEMTEXTCOLOR -1 255
CHANGECUSTOMITEMTEXT -1 装备鉴定:凡品
SetNewItemValue -1 1 = 1
SetNewItemValue -1 4 = 1
UpDateBoxItem 1
ReturnBoxItem 1
break
#IF
large D1 5
small D1 11
#ACT
CHANGECUSTOMITEMTEXTCOLOR -1 218
CHANGECUSTOMITEMTEXT -1 装备鉴定:上品
SetNewItemValue -1 1 = 3
SetNewItemValue -1 4 = 3
UpDateBoxItem 1
ReturnBoxItem 1
break


movr D1 1 15 的含义是在 1 到 15 之间随机取一个整数,存进 D1。small D1 6 判断 D1 小于 6,large D1 5 判断 D1 大于 5,两者叠起来就圈出了 6 到 10 这一段,以此类推把 1 到 15 切成四档,对应凡品、上品、极品、玩美。档位越高,属性值填得越大,描述文字的颜色编号也不一样。

这里的几个操作要注意顺序。先改文字颜色,再改文字内容,然后写属性值,最后刷新框体显示,再把物品退还给玩家。UpDateBoxItem 1 是刷新,不写这一句玩家看到的还是鉴定前的样子;ReturnBoxItem 1 是把装备送回背包,不写装备会一直留在框里。

属性命令的完整格式是:位置 属性编号 操作符 数值。位置填 -1 表示操作刚才 SetUpgradeItem 指定的那件,0 到 16 表示操作玩家身上某格已装备的物品。属性编号就是第二节那十一项,0 到 10。操作符可以写加、减、等号,写等号是直接赋值,写加号是在原有基础上叠加。数值范围是 1 到 100。

想检测一件装备已经有了多少属性,用 CHECKNEWITEMVALUE:

text
#IF
CHECKNEWITEMVALUE -1 1 > 4
#SAY
这件装备的攻击伤害已经超过4点了。


位置、属性编号、检测符、数值,四段和写入命令对应。

五、拾取自动鉴定的写法

人工鉴定要点按钮,拾取鉴定是装备一进背包就自动带上属性,省去操作。这种脚本一般挂在捡取触发或者物品使用触发上,玩家捡到装备的那一刻执行。

思路是:判断捡到的是不是需要鉴定的装备,是的话随机属性写进去,不是就放行。属性池用变量加随机来实现,比如先在几个属性编号里随机挑一个:

text
[@PickUpItem]
#IF
CheckItem 未鉴定装备 1
#ACT
movr D1 0 10
movr D2 1 20
CHANGECUSTOMITEMTEXT -1 装备鉴定:随机
SetNewItemValue -1 <$STR(D1)> = <$STR(D2)>


D1 随机决定挑哪个属性编号,D2 随机决定属性值,两个变量套进命令里,属性种类和数值就都随机了。属性编号是 0 到 10 共十一项,所以 D1 随机范围写 0 到 10。

这里有一个被反复问到的坑:装备丢到地上再捡起来,会再触发一次鉴定,等于无限刷属性。解决办法是在鉴定前给装备打个标记,或者检测它身上是否已经带有鉴定文字,已经有就直接跳过。判断文字是否为空,或者用一个逻辑变量记下已经鉴定过,都能挡住重复触发。

另一种做法是把鉴定做在物品本身的使用触发里,装备上带一个鉴定道具的功能号,玩家双击鉴定符再去读框里的装备。这种更接近上一节的写法,区别只在入口是道具还是捡取。

六、随机属性池和权重怎么控制

只用一个随机数挑属性,容易出现人人满暴击的结果,想让高级属性难出,就要加权重。

最简单的权重做法是把随机范围拉长,再按区间分配。比如 1 到 100 里,1 到 40 落暴击,41 到 70 落攻击伤害,71 到 90 落减伤,91 到 100 才落忽视防御。数值高低也分两段随机,先随机属性种类,再在对应的数值区间里随机,两段叠起来,稀有属性自然就少。

想做得更细,可以把属性名字写进一个文本文件,用读取文本随机行的命令把某一行的字符串取到变量里,再把变量填进描述文字。这样属性表不用改脚本,改一行文本就能调整,维护起来省事。

权重定完还要定上限。同一件装备所有属性加起来不能超过多少点,或者单项不能超过多少点,这两个上限在写入前都要用 CHECKNEWITEMVALUE 查一遍,超了就跳过或者改填别的属性。不设上限,脚本跑久了一定会出离谱数值。

七、鉴定上限、洗练和重鉴

鉴定完不是就结束了,多数版本还配一个洗练功能,玩家对鉴定出的属性不满意,可以花钱重新随机一次。

洗练的实质是把原来写进去的属性清掉再重写。清除的办法有两种:一种是把每个属性编号都用等号赋值成 0,逐个清空;另一种是用重置命令把框里物品的属性归零。清洗干净之后再走一遍上面的随机分级流程,就等于重新鉴定了一次。

洗练要收费,一般扣元宝。写的时候把检测元宝放在最前面,扣费放在属性写入之前,中途出错别把玩家的钱扣了属性却没给。这类次序问题在测试阶段不容易发现,上线之后容易变成纠纷。

还要处理属性覆盖。如果装备已经鉴定过,再次鉴定应当先清旧值再写新值,只写不清会出现新旧属性叠加,数值越洗越高。把清洗动作固定成流程第一步,就能避免。

八、装备位置编号与类型对照

脚本里出现最多的两个数字,一个是属性编号,一个是装备位置编号。属性编号见第二节,位置编号按下面的表来认。

武器是 1,衣服是 0,头盔、项链、手镯、戒指、腰带、鞋子各自有固定编号,插槽编号和人物面板上的装备栏一一对应。写命令时位置填 -1 表示 OK 框里的物品,填 0 到 16 表示身上已穿着的某一格。填错位置的后果是属性加到别的装备上,或者加到空气上,脚本不报错,游戏里也看不出异常,只能靠玩家反馈才发现。

判断装备能不能鉴定,靠 STDMODE。上面那组数字是常见端的值,不同引擎和不同版本会有出入。拿到新端别直接套,先去物品数据库里翻一眼,把武器、衣服、项链、首饰各自的 STDMODE 抄下来再写判断。

检测已穿戴装备的属性总和,可以用 CheckItemAddValueEx,它在检测附加属性、元素属性总和之外,还能判断一件装备是不是地面发绿光的极品。参数依次是装备位置、比较符、附加值、属性类型、返回变量,属性类型填 0 是附加属性,填 1 是元素属性,填 2 是判断是否为绿光极品。做鉴定前置检测时,这个命令比逐个查属性编号省事。

九、脚本写完不生效,按这个顺序查

第一,M2 里那个启用新增属性的开关勾了没有。没勾,一切免谈。

第二,脚本改完重载了没有。NPC 脚本用重载,物品数据库相关的改动要重新加载,最稳的办法是重启服务端。改而不载,等于没改。

第三,框有没有生效。ITEMBOX 写了但没在界面里显示,多半是 OPENMERCHANTBIGDLG 的参数不对,或者框的坐标超出了对话框范围。

第四,SetUpgradeItem 写了没有。漏掉这句,后面所有位置填 -1 的命令都落空,属性写不进去。

第五,属性编号有没有超出范围。十一项是 0 到 10,写成 11 或更大,命令不生效也不报错。

第六,检测条件把路堵死了。CHECKNEWITEMVALUE 的上限值写小了,属性早就到顶,脚本每次都判定超限直接跳过,看起来就是没反应。

第七,文字改了但颜色没改,或者反过来。检查命令里那两个参数的位置有没有写颠倒。

第八,取材数量检测和扣料用了不同的物品名。检测的是鉴定石,扣的是鉴定符,物品对不上,流程走一半断掉。

第九,拾取鉴定在丢地重捡时重复触发。按第五节的标记法处理。

第十,测试时用的是已经穿在身上的装备。位置填 -1 只认框里的物品,拿身上的装备测,永远写不进去。用一件没穿的装备放进框里测,能直接排除这一类问题。

鉴定脚本本身不复杂,难的是把随机范围、属性上限、位置编号、清洗次序这几件事都对齐。把这几个数字表抄准,把重载和刷新两步补上,多数问题当场就没了。