在传奇 M2Server 中,常见的脚本错误类型主要分为语法错误、逻辑错误、数据交互错误和引用错误,以下为你展开介绍:
### 语法错误
- **拼写错误**
- 脚本编写时,指令、变量或函数名拼写错误会导致服务器无法识别。比如将 “@Main” 写成 “@Mian”,服务器在解析脚本时就找不到正确的主函数入口,从而抛出错误。
- **标点符号错误**
- 标点符号使用不当会破坏脚本的语法结构。例如,在条件语句中,少了一个括号,像 “if (Level > 10 {” 就不符合语法规则,服务器会提示语法错误。
- **指令格式错误**
- 每种指令都有特定的格式,不按格式使用会出错。如 “MAPMOVE” 指令用于地图移动,正确格式是 “MAPMOVE 地图名 X坐标 Y坐标”,若写成 “MAPMOVE 地图名”,缺少坐标信息,就会引发错误。
### 逻辑错误
- **条件判断错误**
- 条件判断语句逻辑有误,会使脚本执行不符合预期。比如 “if (Level > 10 && Level < 5)”,这个条件永远不可能成立,会导致相关脚本代码无法正常触发。
- **循环逻辑错误**
- 循环语句的起始、终止条件或步长设置不当,会造成死循环或循环次数错误。例如 “for (i = 0; i < 10; i--)”,由于步长为负数,i 永远不会小于 10,会导致死循环,消耗服务器资源。
- **流程控制错误**
- 脚本的执行流程控制混乱,会使脚本无法按正常顺序执行。比如在任务脚本中,任务完成条件判断后没有正确跳转至奖励发放环节,而是回到了任务开始处,导致任务无法正常结束。
### 数据交互错误
- **数据库连接错误**
- 脚本与数据库连接时,配置信息错误会导致连接失败。如数据库用户名、密码、IP 地址或端口号设置错误,脚本无法与数据库建立连接,就无法进行数据的读写操作。
- **数据读写错误**
- 读写数据库时,表名、字段名错误或 SQL 语句编写错误,会导致数据读写失败。例如 “SELECT * FROM wrong_table_name”,由于表名错误,无法从数据库中获取数据。
- **数据类型不匹配**
- 脚本中变量的数据类型与数据库字段的数据类型不一致,会引发错误。比如数据库中某字段为整数类型,而脚本中传入了字符串类型的值,就会导致数据插入或更新失败。
### 引用错误
- **文件引用错误**
- 脚本中引用其他文件时,文件路径或文件名错误,会使服务器找不到相应文件。例如 “#INCLUDE other_script.txt”,若 “other_script.txt” 文件不存在或路径错误,就会出现引用错误。
- **函数或标签引用错误**
- 调用函数或跳转到标签时,函数名或标签名错误,会导致无法正确执行相应代码。比如 “GOTO @WrongLabel”,由于标签名错误,无法跳转到指定位置。
### 语法错误
- **拼写错误**
- 脚本编写时,指令、变量或函数名拼写错误会导致服务器无法识别。比如将 “@Main” 写成 “@Mian”,服务器在解析脚本时就找不到正确的主函数入口,从而抛出错误。
- **标点符号错误**
- 标点符号使用不当会破坏脚本的语法结构。例如,在条件语句中,少了一个括号,像 “if (Level > 10 {” 就不符合语法规则,服务器会提示语法错误。
- **指令格式错误**
- 每种指令都有特定的格式,不按格式使用会出错。如 “MAPMOVE” 指令用于地图移动,正确格式是 “MAPMOVE 地图名 X坐标 Y坐标”,若写成 “MAPMOVE 地图名”,缺少坐标信息,就会引发错误。
### 逻辑错误
- **条件判断错误**
- 条件判断语句逻辑有误,会使脚本执行不符合预期。比如 “if (Level > 10 && Level < 5)”,这个条件永远不可能成立,会导致相关脚本代码无法正常触发。
- **循环逻辑错误**
- 循环语句的起始、终止条件或步长设置不当,会造成死循环或循环次数错误。例如 “for (i = 0; i < 10; i--)”,由于步长为负数,i 永远不会小于 10,会导致死循环,消耗服务器资源。
- **流程控制错误**
- 脚本的执行流程控制混乱,会使脚本无法按正常顺序执行。比如在任务脚本中,任务完成条件判断后没有正确跳转至奖励发放环节,而是回到了任务开始处,导致任务无法正常结束。
### 数据交互错误
- **数据库连接错误**
- 脚本与数据库连接时,配置信息错误会导致连接失败。如数据库用户名、密码、IP 地址或端口号设置错误,脚本无法与数据库建立连接,就无法进行数据的读写操作。
- **数据读写错误**
- 读写数据库时,表名、字段名错误或 SQL 语句编写错误,会导致数据读写失败。例如 “SELECT * FROM wrong_table_name”,由于表名错误,无法从数据库中获取数据。
- **数据类型不匹配**
- 脚本中变量的数据类型与数据库字段的数据类型不一致,会引发错误。比如数据库中某字段为整数类型,而脚本中传入了字符串类型的值,就会导致数据插入或更新失败。
### 引用错误
- **文件引用错误**
- 脚本中引用其他文件时,文件路径或文件名错误,会使服务器找不到相应文件。例如 “#INCLUDE other_script.txt”,若 “other_script.txt” 文件不存在或路径错误,就会出现引用错误。
- **函数或标签引用错误**
- 调用函数或跳转到标签时,函数名或标签名错误,会导致无法正确执行相应代码。比如 “GOTO @WrongLabel”,由于标签名错误,无法跳转到指定位置。

