## 一、Gom引擎架设基础准备
### (一)环境要求
- **操作系统**:建议使用 Windows Server 2008 及以上版本,保证系统的稳定性和兼容性。
- **数据库**:采用 MySQL 数据库,版本 5.7 及以上为宜。安装完成后,创建一个新的数据库,例如命名为 `gom_game_db`,同时记录好数据库的用户名、密码和端口(默认 3306)。
- **依赖组件**:安装 Visual C++ 运行库,根据系统位数选择合适的版本。
### (二)引擎下载与解压
从可靠渠道获取 Gom 引擎压缩包,解压到指定目录,如 `D:\GomServer`。
### (三)数据库配置
找到引擎目录下 `DBServer` 文件夹中的 `DBSrv.ini` 文件,用文本编辑器打开并修改数据库连接信息:
```plaintext
[Database]
DBType=MYSQL
DBIP=127.0.0.1
DBUser=root
DBPassword=yourpassword
DBName=gom_game_db
```
### (四)启动服务
依次启动 `DBServer`、`LoginServer` 和 `GameServer`,留意各服务窗口输出,若有错误提示,按提示排查解决。
## 二、脚本实战
### (一)NPC 脚本编写
#### 1. 基本 NPC 交互脚本
实现一个简单的 NPC 与玩家交互,提供传送和物品买卖功能。
```plaintext
[@Main]
#ACT
Msg "欢迎光临,我能为你提供传送和物品买卖服务。"
Menu "传送至安全区|购买药水"
[@传送至安全区]
#IF
#ACT
MapMove 1001 320 320 ; 传送至地图 ID 1001 的 320,320 坐标处
Msg "你已传送至安全区。"
[@购买药水]
#IF
CheckMoney 100 ; 检查玩家是否有 100 金币
#ACT
TakeMoney 100 ; 扣除 100 金币
GiveItem 1001 ; 给予玩家 ID 为 1001 的药水
Msg "购买成功!"
#ELSE
Msg "你的金币不足,无法购买。"
#ENDIF
```
#### 2. 任务 NPC 脚本
设计一个任务 NPC,发布击杀怪物任务并给予奖励。
```plaintext
[@Main]
#IF
CheckQuest 新手任务 0 ; 检查新手任务是否未接取
#ACT
Msg "你好,我这里有个新手任务,去杀死 10 只野猪,完成后有丰厚奖励,是否接取?"
Menu "接取任务|放弃"
#ELSEIF
CheckQuest 新手任务 1 ; 检查新手任务是否已接取
#ACT
Msg "你已经接取了新手任务,请尽快杀死 10 只野猪。"
CheckMonsterKilled 野猪 10 ; 检查是否杀死 10 只野猪
#IF
#ACT
SetQuest 新手任务 2 ; 设置任务为已完成阶段
GiveItem 2001 ; 给予任务奖励物品
GiveMoney 500 ; 给予任务奖励金币
Msg "你已完成新手任务,获得丰厚奖励!"
#ELSE
#ACT
Msg "你还需要杀死 %d 只野猪才能完成任务。" 10 - GetMonsterKilledCount(野猪)
#ENDIF
[@接取任务]
#IF
#ACT
SetQuest 新手任务 1 ; 设置任务为已接取阶段
Msg "你已成功接取新手任务。"
[@放弃]
#IF
#ACT
DelQuest 新手任务 ; 删除任务
Msg "你已放弃新手任务。"
```
### (二)怪物脚本编写
#### 1. 怪物刷新脚本
设置怪物在特定地图和坐标刷新,控制刷新时间和数量。
```plaintext
[MonGen]
; 地图 ID 1002,坐标 200,200 处,每隔 600 秒刷新 5 只野猪
MapID=1002
X=200
Y=200
MonName=野猪
GenType=1
GenTime=600
GenCount=5
```
#### 2. 怪物攻击与技能脚本
为怪物添加攻击和技能逻辑,增强战斗趣味性。
```plaintext
[怪物名称]
; 普通攻击
AttackSpeed=1500 ; 攻击间隔 1500 毫秒
AttackType=1 ; 攻击类型 1(普通近战攻击)
; 技能释放
SkillID=1 ; 技能 ID
SkillLevel=1 ; 技能等级
SkillRate=20 ; 技能释放概率 20%
```
## 三、常见问题及解决办法
### (一)服务启动问题
#### 1. 数据库连接失败
- **问题表现**:`DBServer` 启动时提示数据库连接错误。
- **解决办法**:检查 `DBSrv.ini` 文件中的数据库配置信息,确保 `DBIP`、`DBUser`、`DBPassword` 和 `DBName` 正确;检查 MySQL 服务是否正常运行,端口是否开放。
#### 2. 服务无法启动
- **问题表现**:`LoginServer` 或 `GameServer` 无法启动,窗口闪退。
- **解决办法**:查看服务目录下的日志文件,根据日志中的错误信息进行排查。可能是配置文件错误、依赖组件缺失或端口被占用等原因。
### (二)脚本问题
#### 1. 脚本语法错误
- **问题表现**:NPC 或怪物脚本无法正常执行,提示语法错误。
- **解决办法**:仔细检查脚本中的关键字拼写、符号使用和语句格式,确保符合 Gom 引擎脚本语法规则。可以参考引擎文档中的语法说明进行修正。
#### 2. 脚本逻辑错误
- **问题表现**:任务系统无法正常完成任务判断,物品买卖功能异常等。
- **解决办法**:梳理脚本逻辑,添加调试信息(如 `Msg` 语句)输出中间结果,检查条件判断和动作执行是否符合预期,根据实际情况调整脚本逻辑。
### (三)兼容性问题
#### 1. 与操作系统不兼容
- **问题表现**:引擎在某些操作系统上运行不稳定,出现卡顿、崩溃等问题。
- **解决办法**:确保使用推荐的操作系统版本,更新系统补丁和驱动程序,以提高兼容性。
#### 2. 与数据库版本不兼容
- **问题表现**:数据库操作失败,提示 SQL 语句错误或数据读取异常。
- **解决办法**:检查数据库版本是否符合要求,尝试升级或降级数据库版本,同时调整脚本中的 SQL 语句以适应数据库版本。

