当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇声望卷脚本添加失败原因排查与完整操作步骤

热度:
##脚本无效的根本原因分析

你遇到的“吃了声望卷什么都不加”这个问题,绝大多数情况下不是脚本本身写错了,而是脚本和数据库之间的对应关系没对上。传奇引擎加载物品脚本的机制是这样的:当你双击使用一个物品时,引擎会先去物品数据库里查这个物品的触发字段,根据这个字段的值去调用对应的脚本段。如果这个触发字段没设置,或者设置的值和脚本里的标签对不上,双击物品就不会触发任何脚本,物品也消耗不掉,声望自然不加。

从你的描述来看,你应该是已经写了一个类似NPC对话的脚本,但声望卷是物品,不能靠点NPC来使用,必须靠物品自身的双击触发机制。下面按步骤把整个流程拆开讲清楚。

##第一步:确认声望卷在物品数据库里的设置

打开服务端目录下的`D:\mirserver\Mud2\DB\`文件夹,找到`StdItems.DB`文件(也可能是`Items.DB`,取决于引擎版本)。这个文件可以用DBC2000工具打开,或者如果你用的是TXT版本,就直接用记事本打开`StdItems.txt`。

找到你添加的声望卷那一行,重点关注以下几个字段:

|字段名|作用|必须设置的值|
|--------|------|--------------|
|`StdMode`|物品类型|必须设置为**31**(31代表此类物品双击触发脚本)|
|`AniCount`|触发脚本的编号|设置一个数字,比如100,这个数字就是后面要用的触发编号|
|`Shape`|部分引擎的备用触发字段|某些引擎需要和AniCount保持一致|

如果`StdMode`不是31,双击物品不会触发任何脚本,直接进包就不动了。如果`AniCount`是0或者空着,引擎不知道该调用哪个脚本段,也不会有反应。

##第二步:在QFunction-0.txt里编写物品触发脚本

物品双击触发的脚本统一存放在`D:\mirserver\Mir200\Envir\QFunction-0.txt`这个文件里。打开这个文件,在末尾添加如下内容:

```text
[@StdModeFunc100]
#IF
#ACT
CREDITPOINT+5
SENDMSG6你的声望增加了5点,当前声望值:<$CREDITPOINT>
BREAK
```

**关键点说明**:
-`[@StdModeFunc100]`这里的**100**必须和你刚才在物品数据库`AniCount`字段里填的数字完全一致。你填100,这里就是100;你填101,这里就是101。
-如果引擎是GOM或GEE,声望增加命令也可能是`CHANGEEXP`或`CHANGECREDITPOINT`,但最通用的就是`CREDITPOINT`。如果不确定,可以先用`SENDMSG6`测试脚本能不能触发,能触发再改命令。
-`<$CREDITPOINT>`是显示当前声望值的变量,用了这个玩家就能看到实时变化。

##第三步:区分NPC对话脚本和物品触发脚本

你之前“添加了”的脚本,如果是放在NPC文件里的那种,比如这样:

```text
[@main]
你好,可以用声望卷换声望\
<兑换声望/@换声望>

[@换声望]
#IF
checkitem声望卷1
#ACT
take声望卷1
CREDITPOINT+5
```

这种脚本是有效的,但它需要玩家去点NPC才能触发,属于**NPC兑换**,不是**双击物品**。如果你想要的是双击直接加声望,上面QFunction的写法才是对的。如果你想要的是点NPC兑换,那你需要检查NPC脚本本身有没有被正确加载,NPC有没有放在正确的地图坐标,玩家能不能点到。

##第四步:两种方式的完整实现示例

###方式A:双击物品直接加声望(推荐)

**数据库设置**:
-物品名称:声望卷
-StdMode:31
-AniCount:88

**QFunction-0.txt**里添加:
```text
[@StdModeFunc88]
#IF
#ACT
CREDITPOINT+10
SENDMSG6使用声望卷成功,声望增加10点!
BREAK
```

**优点**:不用找NPC,包里双击就行,方便快捷。

###方式B:找NPC兑换声望

**NPC脚本**(放在Market_Def文件夹,比如`声望使者-3.txt`):
```text
[@main]
你可以用声望卷在这里兑换声望\
一张声望卷兑换5点声望\
<兑换声望/@exchange>

[@exchange]
#IF
checkitem声望卷1
#ACT
take声望卷1
CREDITPOINT+5
SENDMSG6兑换成功,当前声望:<$CREDITPOINT>
#ELSESAY
你身上没有声望卷,打怪可以获得\
```

**MerChant.txt**里添加NPC配置:
```
声望使者3330330声望使者0130
```

##第五步:吃了不加点的逐项排查清单

按照这个顺序查,一定能找到问题出在哪:

**检查项1:物品数据库的StdMode是不是31**
如果不是31,改成31,保存,重启M2。

**检查项2:AniCount有没有数字,和QFunction里的是否一致**
假设AniCount填的是88,QFunction里必须是`[@StdModeFunc88]`,不能是`[@StdModeFunc100]`。

**检查项3:QFunction-0.txt文件编码对不对**
这个文件必须保存为**ANSI编码**,不能是UTF-8带BOM。用记事本打开,另存为,编码选ANSI。

**检查项4:引擎是否支持CREDITPOINT命令**
极少数引擎的声望命令是`CREDITPOINT`不带`+`号,或者用`CHANGECREDITPOINT`。可以先用这个命令测试:
```text
[@StdModeFunc88]
#IF
#ACT
SENDMSG6脚本触发成功
```
如果能弹出消息,说明触发没问题,只是加声望的命令不对,换成`CHANGECREDITPOINT+5`再试。

**检查项5:重启M2让配置生效**
修改了DB文件或者QFunction之后,必须重启M2Server,或者在M2上执行“重新加载物品数据库”和“重新加载QFunction”的指令。

**检查项6:用GM号测试时关掉GM模式**
有些引擎在GM模式下双击物品不触发脚本,需要用普通玩家身份测试。

##第六步:常见引擎命令对照表

不同引擎的声望增加命令有细微差别,如果上面的通用写法不行,试试下面这些:

|引擎类型|增加声望命令|
|----------|--------------|
|GOM/GEE|`CHANGECREDITPOINT+5`|
|3K引擎|`CREDITPOINT+5`|
|HERO引擎|`CHANGECREDITPOINT+5`|
|BLUE引擎|`INC<$CREDITPOINT>5`|

如果不确定自己用的什么引擎,看M2启动窗口的标题栏,一般会显示引擎版本。

##第七步:其他注意事项

-**声望卷能不能叠加**:如果物品设置了叠加,双击触发脚本时,引擎只会扣除一个,脚本里不用写`TAKE`命令,QFunction触发时系统会自动扣掉一个。但如果你的脚本里又写了一遍`TAKE`,反而可能出错。

-**想限制每天使用次数**:可以在脚本里加个人变量记录当天使用次数,用`DAYS`或`HOUR`命令检测时间。

-**想给声望卷加使用等级限制**:在`#IF`下面加`CHECKLEVEL>39`之类的条件。

##总结:你现在的操作路径

1.打开DB,确认声望卷的`StdMode=31`,`AniCount=88`(举例)。
2.打开`QFunction-0.txt`,在最后加上`[@StdModeFunc88]`及下面的加声望代码。
3.保存文件(编码ANSI),重启M2。
4.进游戏双击测试。

按这个流程走一遍,99%的情况都能解决。如果还不行,把你用的引擎类型、DB里的字段截图、QFunction里的脚本贴出来,再具体分析。
[顶部]