在传奇私人服务器中,矿物(如黑铁矿、铜矿等)是装备强化、武器升级的关键材料,其纯度直接影响成功率与属性加成。然而,NPC脚本中关于矿物纯度的检测与操作常因参数逻辑不清晰、循环检测机制复杂等问题困扰开发者。本文将从多矿检测脚本编写、`checkduraeva`参数规则解析、矿物纯度生成原理三方面,深度剖析传奇私人服务器矿物系统的技术实现。
---
### 一、多矿物纯度检测与扣除脚本实现
#### 1. **需求场景分析**
需实现:检测玩家背包中存在**至少3块纯度≥15的铜矿**,并一次性扣除这些矿石。
#### 2. **脚本逻辑设计**
- **循环检测思路**:传奇脚本不支持传统编程中的`FOR`循环,需通过**变量计数**与**条件跳转**模拟循环逻辑。
- **关键命令**:
- `CHECKBAGITEMS`(检测背包物品列表)
- `checkduraeva`(检测指定矿物纯度)
- `TAKE`(扣除物品)
#### 3. **完整脚本示例**
```lua
[@main]
需要3块纯度≥15的铜矿进行熔炼。\
<开始检测/@check_ore>\
<离开/@exit>
[@check_ore]
#IF
CHECKBAGITEMS 铜矿.txt 0 S1 // 检测背包是否存在铜矿.txt列表中的矿(此处列表仅含“铜矿”)
#ACT
MOV D1 0 // 初始化计数器
GOTO @check_purity_loop
[@check_purity_loop]
#IF
CHECKITEM 铜矿 1 // 检测是否存在1块铜矿
checkduraeva 铜矿 >= 15 // 检测纯度≥15
#ACT
TAKE 铜矿 1 // 扣除1块
INC D1 1 // 计数器+1
#IF
EQUAL D1 3 // 是否已扣满3块
#ACT
SAY 成功扣除3块高纯度铜矿!
BREAK
#ELSEACT
GOTO @check_purity_loop // 继续循环检测
#ELSESAY
背包中高纯度铜矿不足3块!
```
#### 4. **脚本解析**
- **循环机制**:通过`GOTO`跳转实现循环检测,`D1`变量记录已扣除数量,达到3块时终止。
- **纯度检测精度**:`checkduraeva`命令的`>=`操作符确保纯度达标。
- **列表文件调用**:`铜矿.txt`需在`QuestDiary`目录下,内容为单行`铜矿`,用于批量检测同名矿物。
---
### 二、`checkduraeva`参数逻辑深度解析
#### 1. **参数异常现象**
用户反馈:`checkduraeva 铜矿 12`实际检测纯度≥15,`checkduraeva 铜矿 8`检测纯度≥9。
#### 2. **底层规则揭秘**
- **纯度单位换算**:
传奇引擎中,**1点纯度参数对应实际纯度5%**。例如:
- `checkduraeva 铜矿 12` → 检测纯度≥12×1.25=15%(引擎可能存在1.25倍系数)
- `checkduraeva 铜矿 8` → 检测纯度≥8×1.125=9%(部分引擎版本采用此换算)
- **引擎差异**:不同M2版本可能采用不同换算规则(如1:1或1:1.25),需通过实测校准。
#### 3. **校准建议**
- **测试脚本**:
```lua
[@test]
#ACT
give 铜矿 1 // 给予1块已知纯度的测试矿(如纯度15)
checkduraeva 铜矿 12
#SAY
{检测通过/@pass} {失败/@fail}
[@pass]
#SAY
当前引擎参数规则:12→15(系数1.25)
[@fail]
#SAY
需调整参数值或检查M2版本
```
- **版本适配**:若使用1.25倍引擎,建议参数值=目标纯度÷1.25。
---
### 三、矿物纯度生成机制与制作方法
#### 1. **矿物生成原理**
- **默认行为**:`@make 铜矿`生成的矿物纯度由**M2引擎的挖矿配置**决定,通常为固定值或随机范围。
- **配置文件路径**:
- `Mir200\Envir\OreSetting.txt`:定义矿物名称、爆率、纯度范围。
- **示例配置**:
```
铜矿 50 1-20 // 爆率50%,纯度随机1-20
```
#### 2. **定制高纯度矿物方法**
- **方案1:修改OreSetting.txt**
调整纯度范围字段(如`1-20`改为`15-20`),重启M2生效。
- **方案2:脚本强制指定纯度**
使用`give`命令时附加纯度参数(部分引擎支持):
```lua
#ACT
give 铜矿 1 15 // 给予1块纯度15的铜矿
```
- **方案3:合成系统**
通过NPC脚本将低纯度矿熔炼为高纯度:
```lua
[@melt]
#IF
CHECKITEM 铜矿 5 // 需要5块任意纯度铜矿
#ACT
TAKE 铜矿 5
GIVE 铜矿 1 15 // 产出1块纯度15的铜矿
SAY 熔炼成功!
```
#### 3. **M2设置与脚本联动的注意事项**
- **优先级**:脚本中`give`命令的纯度参数会覆盖`OreSetting.txt`的随机范围。
- **版本兼容性**:部分老版本引擎不支持纯度参数附加,需通过`OreSetting.txt`全局控制。
---
### 四、常见问题与进阶技巧
#### 1. **多矿物混合检测**
若需同时检测铜矿与铁矿,可扩展`CHECKBAGITEMS`列表文件:
- **列表文件**:`矿.txt`(内容:铜矿、铁矿)
- **脚本修改**:
```lua
CHECKBAGITEMS 矿.txt 0 S1
```
#### 2. **纯度范围检测**
实现“纯度10-20”的区间检测:
```lua
#IF
checkduraeva 铜矿 >= 10
checkduraeva 铜矿 <= 20
```
#### 3. **矿物持久度与纯度关系**
- **持久损耗**:纯度越高,武器升级时持久损耗越低(需在`OreSetting.txt`配置衰减公式)。
- **脚本引用**:通过`CHECKDURAEVA`检测纯度后,可联动`TAKEDURAEVA`扣除指定耐久。
传奇矿物纯度脚本全攻略:多矿检测、参数逻辑与纯度生成机制
来源:
作者:
点击:

