传奇双刀武器脚本完整范例与特效触发配置详解

来源: 作者: 点击:
双刀武器在传奇服务端中的实现依赖三个层面:物品数据库中武器的定义、合成脚本的发放逻辑、以及攻击触发时的特效与属性判定。以下范例基于GOM引擎和Hero引擎的通用语法,覆盖从合成到战斗触发的完整链路。

##双刀武器的数据库定义

双刀武器本质上是两把独立的武器,一把在主手槽位(武器位置1),一把在左手槽位。部分版本通过扩展装备栏实现双武器槽位,部分版本则通过脚本在攻击时同时调用两把武器的属性进行计算。

在StdItems.DB中,双刀武器的记录与普通武器相同,区别在于Shape字段和Anicount字段的配置。Shape值决定武器使用哪组外观素材文件,Anicount值在部分引擎中控制武器的技能绑定。以蝴蝶·霸主剑为例,数据库记录的Stdmode字段设为5或6,分别对应不同类型的武器,Shape值需要在客户端Weapon.wil文件中存在对应的素材编号,否则武器在游戏内不显示外观。

如果需要双刀武器在装备栏中显示特殊图标,还需在客户端stateitem.wil中配置对应的图标素材。服务端不存储外观素材,只记录Shape编号,客户端根据Shape编号去对应的wil文件中查找图片序列。

##双刀武器合成脚本完整范例

以下脚本实现从蝴蝶·霸主剑Ⅰ到独步·血腥剑Ⅳ的四级合成体系,合成材料为金刚石和元宝。脚本放在`Mir200\Envir\Market_Def\`目录下,NPC配置写入`MerChant.txt`:

```plaintext
双刀合成3335330双刀锻造师08000
```

脚本主体如下:

```plaintext
[@main]
<━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━/SCOLOR=250>\
<[深圳双刀哥不要迷恋哥哥永远只是个传说]/SCOLOR=254>\
<━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━/SCOLOR=250>\
<蝴蝶·霸主剑Ⅰ/@蝴蝶·霸主剑>:全属性100-100需要<金刚石/SCOLOR=253>x88颗+<元宝/SCOLOR=70>x55W\
<独孤·玄冰剑Ⅱ/@独孤·玄冰剑>:全属性200-200需要<金刚石/SCOLOR=253>x188颗+<元宝/SCOLOR=70>x95W\
<秒杀·狂战剑Ⅲ/@秒杀·狂战剑>:全属性300-300需要<金刚石/SCOLOR=253>x288颗+<元宝/SCOLOR=70>x145W\
<独步·血腥剑Ⅳ/@独步·血腥剑>:全属性400-400需要<金刚石/SCOLOR=253>x388颗+<元宝/SCOLOR=70>x245W\

[@蝴蝶·霸主剑]
#IF
CHECKGAMEDIAMOND>87
CHECKGAMEGOLD>549999
#ACT
gamegold-550000
GAMEDIAMOND-88
give蝴蝶·霸主剑Ⅰ1
GuildNoticeMsg151249〖牛逼榜〗:[%s]合成双刀武器[蝴蝶·霸主剑Ⅰ]从此在江湖开始弑神般的杀戮
SendCenterMsg151249〖牛逼榜〗:[%s]合成双刀武器[蝴蝶·霸主剑Ⅰ]成功,从此以后江湖不再平静!
break
#ELSEACT
messagebox[错误提示]:金刚石不足,元宝不足
break

[@独孤·玄冰剑]
#IF
CHECKGAMEDIAMOND>187
CHECKGAMEGOLD>949999
#ACT
gamegold-950000
GAMEDIAMOND-188
give独孤·玄冰剑Ⅱ1
GuildNoticeMsg151249〖牛逼榜〗:[%s]合成双刀武器[独孤·玄冰剑Ⅱ]从此在江湖开始弑神般的杀戮
SendCenterMsg151249〖牛逼榜〗:[%s]合成双刀武器[独孤·玄冰剑Ⅱ]成功,从此以后江湖不再平静!
break
#ELSEACT
messagebox[错误提示]:金刚石不足,元宝不足
break

[@秒杀·狂战剑]
#IF
CHECKGAMEDIAMOND>287
CHECKGAMEGOLD>1449999
#ACT
gamegold-1450000
GAMEDIAMOND-288
give秒杀·狂战剑Ⅲ1
GuildNoticeMsg151249〖牛逼榜〗:[%s]合成双刀武器[秒杀·狂战剑Ⅲ]从此在江湖开始弑神般的杀戮
SendCenterMsg151249〖牛逼榜〗:[%s]合成双刀武器[秒杀·狂战剑Ⅲ]成功,从此以后江湖不再平静!
break
#ELSEACT
messagebox[错误提示]:金刚石不足,元宝不足
break

[@独步·血腥剑]
#IF
CHECKGAMEDIAMOND>387
CHECKGAMEGOLD>2449999
#ACT
gamegold-2450000
GAMEDIAMOND-388
give独步·血腥剑Ⅳ1
GuildNoticeMsg151249〖牛逼榜〗:[%s]合成双刀武器[独步·血腥剑Ⅳ]从此在江湖开始弑神般的杀戮
SendCenterMsg151249〖牛逼榜〗:[%s]合成双刀武器[独步·血腥剑Ⅳ]成功,从此以后江湖不再平静!
break
#ELSEACT
messagebox[错误提示]:金刚石不足,元宝不足
break
```

脚本中CHECKGAMEDIAMOND检测金刚石数量,CHECKGAMEGOLD检测元宝。两个检测条件并列,全部满足才执行合成。GAMEDIAMOND和GAMEGOLD的扣除命令分别对应扣除金刚石和元宝。GuildNoticeMsg发送行会公告,SendCenterMsg发送居中滚动公告,两个公告配合使用可以让全服玩家都看到合成信息。

检测条件中的数字写87而不是88、549999而不是550000,是为了规避引擎边界值处理的差异。部分引擎中CHECKGAMEDIAMOND>88和>87的效果不同,写小一位更稳妥。合成完成后用break终止后续判断,防止同一轮操作触发多个合成分支。

##左手武器触发脚本

部分版本通过MapQuest系统实现左手武器的自动触发。在MapQuest.txt中添加一行:

```plaintext
F0110*经验勋章Q002
```

这一行的含义是:在地图F011中,当玩家捡起经验勋章时,触发MapQuest_Def文件夹下的Q002脚本。文件格式为地图编号、触发类型、物品名、脚本文件名。触发类型0表示捡起物品触发,*表示不限制物品来源。

在`Mir200\Envir\MapQuest_Def\`目录下创建Q002.TXT文件:

```plaintext
[@main]
#IF
CHECKITEM经验勋章1
#ACT
SET[500]1
SENDMSG6你获得了经验勋章,带上后获得双倍经验,但无法卸下,持久为零自动消失。
```

SET[500]1设置个人变量[500]为1,标记玩家已获得经验勋章。这个变量可以在其他脚本中用于判断玩家是否持有勋章状态。经验勋章的持久度设为有限值,持久归零后物品自动消失,变量也随之失效。这种设计适合做限时双倍经验活动,玩家在活动期间获得勋章,活动结束后勋章自动消失。

##双刀攻击触发与特效脚本

双刀武器的核心特色在于攻击时触发额外效果。以下脚本基于QFunction-0.txt中的攻击触发标签,实现双刀武器的倍攻效果。

在QFunction-0.txt中找到[@PlayAttack]标签,添加以下代码:

```plaintext
[@PlayAttack]
#IF
CheckItemAddValue10>6
CheckItemAddValue13>6
#ACT
POWERRATE120600
SENDMSG6双刀触发!攻击倍率提升至1.2倍,持续6秒。
#ELSEACT
POWERRATE1001
```

CheckItemAddValue命令的参数依次为装备位置、属性编号、比较值。位置1代表武器槽位,属性0代表攻击加成,属性3代表幸运值。检测条件要求武器攻击加成大于6且幸运值大于6,即攻击+7和幸运+7的双7条件同时满足。

POWERRATE命令设置攻击倍率,格式为`POWERRATE倍率持续时间`。120代表120%,即1.2倍攻击,600代表持续600个时间单位。ELSEACT分支中POWERRATE1001将倍率恢复为100%,持续1个单位,确保不满足条件时不产生任何加成。

##双刀武器的发光特效配置

双刀武器的发光效果通过数据库Shine字段或脚本SetItemsLight命令实现。数据库方式最简单,在StdItems.DB中找到双刀武器的记录,将Shine字段设为1到16之间的数字,每个数字对应一组发光效果。1为最低等级发光,16为最高等级发光。

脚本方式适合需要动态改变发光效果的场景:

```plaintext
[@双刀发光]
#IF
CHECKLEVELEX>99
#ACT
SetItemsLight11
SENDMSG6你的双刀武器开始发光。
#ELSEACT
SetItemsLight10
SENDMSG6你的双刀武器发光效果已关闭。
```

SetItemsLight命令的第一个参数为装备位置,1代表武器。第二个参数0表示不发光,1表示发光效果1,2表示发光效果2。部分引擎支持更多的发光效果编号,具体范围看引擎的帮助文档。

如果需要双刀武器在攻击时播放动态特效,在[@PlayAttack]标签中加入特效命令:

```plaintext
SENDEFFECT<$USERID>5000053
```

SENDEFFECT命令的参数依次为玩家ID、特效编号、X坐标偏移、Y坐标偏移、持续时间、范围。特效编号500对应客户端Effect.wil文件中的特效序列起始编号,需要根据客户端素材实际配置填写。

##双刀武器的属性扩展

双刀武器合成后,可以通过扩展GIVE命令在发放时直接附加鉴定属性。将合成脚本中的`give蝴蝶·霸主剑Ⅰ1`替换为:

```plaintext
Give蝴蝶·霸主剑Ⅰ1001=122=103=109=7|6=810=611=512=8|32|0|1
```

命令中的属性段含义:普通鉴定属性设置攻击12、魔法10、道术10、幸运7;神秘鉴定属性设置准确8、诅咒6、攻击速度5、神圣8;特殊属性代码32对应麻痹属性。神技代码0表示不附加神技,最后的1表示鉴定次数为1次。

如果希望双刀武器在攻击时同时触发两把武器的属性,需要在引擎的装备栏配置中启用双武器槽位。部分引擎通过扩展装备位置实现,在M2控制台的装备设置中将左手位置设为武器类型。启用后玩家可以在两个武器槽位分别装备不同的武器,攻击时引擎会同时计算两把武器的攻击力和附加属性。

##常见问题排查

双刀武器合成后背包中没有出现武器,检查GIVE命令后面的物品名称与StdItems.DB中的Name字段是否完全一致。名称中的空格、括号、标点符号必须完全匹配。合成脚本中的物品名带装饰符号时,数据库中的名称也要包含相同的符号。

双刀武器外观不显示,检查Shape字段的值是否与客户端Weapon.wil文件中的素材编号对应。在M2控制台的物品数据库中确认Shape值的设置,然后用WIL编辑器打开客户端的Weapon.wil文件,确认该编号的图片序列存在。如果素材编号超出文件范围,武器在游戏内不可见。

双刀攻击触发不生效,首先确认QFunction-0.txt中是否已启用攻击触发功能。部分引擎需要在M2控制台的功能设置中手动开启攻击触发支持。其次确认CheckItemAddValue的位置参数是否正确,武器位置固定为1,写其他数字检测的是其他装备槽位。

发光效果与武器外观冲突,部分版本的发光特效会覆盖武器的原始外观显示。在Shine字段中设置发光效果后,武器的基础外观仍然显示,发光效果叠加在外观之上。如果希望发光效果完全替代外观,需要在客户端配置中将发光特效的层级调高,具体参数在客户端Effect配置文件中设置。

POWERRATE命令执行后攻击力没有变化,检查引擎版本是否支持POWERRATE命令。部分旧版引擎使用SetAttackPowerRate命令代替,参数格式为`SetAttackPowerRate1200`,1200代表1200%即12倍。命令名称和参数格式因引擎而异,使用前在M2的帮助文档中确认当前引擎支持的倍攻命令。
[顶部]