传奇3脚本修改操作与核心命令详解

来源: 作者: 点击:
改传奇3的脚本,核心是改服务端里那几个文件夹里的文本文件。不用什么特别的工具,电脑自带的记事本就行,但推荐用Notepad++,因为它是纯文本编辑器,不会往文件里塞格式,而且能高亮显示脚本段,改起来省事不少。

**第一步:找到要改的文件在哪**

传奇3的所有NPC脚本都放在`\Mud3\Envir\Market_Def`这个目录下。比如看见一个叫`01Meet_Bichon1-0.txt`的文件,`01Meet_Bichon1`是NPC的识别码,后面的`-0`代表这个NPC出现在地图代码为0的地图(就是比奇)。每个NPC具体刷在地图的哪个坐标、长什么样,这些信息在`\Mud3\Envir\merchant.txt`里配置着。想改哪个NPC的对话或功能,就去`Market_Def`里打开对应的文本。

**第二步:看懂脚本的基本结构**

任何一个脚本文件,打开后核心结构就是一个个带`[@段名]`的代码块。每个块里用`#IF`、`#ACT`、`#SAY`这些关键词来控制流程。

* `#IF`:条件判断。后面跟检测命令,比如检测等级够不够、包里有没有某样东西。
* `#ACT`:执行动作。条件成立(`#IF`通过)就执行这里的命令,比如给物品、传送到某地图。
* `#SAY`:显示文本。条件成立时,NPC对话框里显示的内容。
* `#ELSESAY` / `#ELSEACT`:条件不成立时的分支,作用和上面反过来。

**第三步:常用修改命令和变量**

脚本里最常用的就三类命令:条件检测、执行动作、数值操作。

**条件检测(放在#IF下面)**
* `checklevel 数值`:检测等级是否达到数值。
* `checkitem 物品名 数量`:检测包里有没有指定物品及数量。
* `checkgold 数量`:检测金币够不够。
* `checkjob Warr`:检测职业,Warr是战士,Wizard是法师,Taos是道士。
* `checkhum 地图名 数值`:检测某个地图里的人数。

**执行动作(放在#ACT下面)**
* `give 物品名 数量`:给物品。
* `take 物品名 数量`:回收物品。
* `mapmove 地图名 坐标X 坐标Y`:把人物移动到指定地图的精确坐标。
* `map 地图名`:传送到地图随机坐标。
* `close`:关闭对话框。
* `MonGen 怪物名 数量 时间`:在指定位置刷怪物。

**数值操作(变量赋值)**
* `mov 变量 数值`:给变量赋一个固定值。
* `inc 变量 数值`:让变量增加指定的数值。
* `movr 变量 数值`:给变量赋一个从0到指定数值之间的随机数。
* `<$STR(变量)>`:在对话框里显示变量的值,写在`#SAY`后面。

**第四步:举个实际修改的例子**

假设要把比奇城某个NPC的对话改一下,顺便把给的金币从100改成5000。

1. 在`Market_Def`里找到对应的文本文件打开。
2. 找到`[@main]`这个入口段,看它下面写了什么。
3. 原脚本可能是这样的:
```
[@main]
#IF
#SAY
欢迎来到比奇城。\\
<领取新手福利/@领福利>\\
<关闭/@EXIT>

[@领福利]
#IF
checklevel 1
#ACT
give 金币 100
#SAY
这是给你的100金币,好好利用。\\
<关闭/@EXIT>
```
4. 把`[@领福利]`段里的`give 金币 100`改成`give 金币 5000`,保存文件。
5. 在M2引擎的控制台里重新加载NPC脚本,再进游戏点这个NPC,领到的就是5000金币了。

**第五步:几个注意点**

修改的时候有几个格式细节很容易踩坑:每行命令写完要换行,符号比如`@`、`\`、`/`必须是英文半角状态下的;`#IF`、`#ACT`这些关键词前面不能有空格,必须顶格写;每个`[@段名]`和`<文字/@段名>`里的段名要完全一致,错一个字或者大小写不一样都会导致点按钮没反应。