### Hero引擎架设教程
#### 1. 准备工作
- **服务器**:推荐使用Windows Server 2008及以上版本的系统。若预计同时在线人数为100 - 200人,服务器硬件配置建议为2核CPU、4GB内存、50GB以上硬盘。
- **软件**:下载Hero引擎服务端压缩包、配套登录器生成工具以及数据库管理软件(如Navicat for MySQL)。
- **网络**:保证服务器网络稳定,开放常见端口(7000、7100、8000等)。
#### 2. 服务端安装与配置
- **解压文件**:把下载的Hero引擎服务端压缩包解压到服务器指定目录,如 `D:\MirServer`。
- **数据库配置**:
- 用数据库管理软件创建新数据库。
- 导入服务端自带的数据库文件。
- 修改 `D:\MirServer\DBServer\DBServer.ini` 里的数据库连接信息,确保服务端能正常连接数据库。
- **登录器配置**:利用登录器生成工具,依据服务端配置生成登录器,设置好服务器名称、IP地址、端口号等信息。
#### 3. 启动服务端
按顺序启动以下程序:
- **DBServer**:数据库服务器,负责管理游戏数据。
- **LoginGate**:登录网关,处理玩家登录请求。
- **GameGate**:游戏网关,负责玩家与游戏服务器之间的数据传输。
- **MirServer**:游戏主服务器,处理游戏的核心逻辑。
启动完成后,打开生成的登录器,尝试登录游戏,检查能否正常进入。
### 脚本实例
#### 1. NPC对话脚本(Market_Def目录)
假设创建一个名为 `GuideNPC.txt` 的脚本,用于新手引导NPC。
```plaintext
[@main]
#ACT
SENDMSG 0 "欢迎来到传奇世界,我是新手引导员。"
#MENU
"领取新手装备" @GetNewbieEquip
"了解升级方法" @UpgradeMethod
"离开" @Exit
[@GetNewbieEquip]
#IF
CHECKHAVEITEM 新手装备 = 0
#ACT
GIVEITEM 新手剑 1
GIVEITEM 新手盔甲 1
SENDMSG 0 "已为你发放新手装备。"
#ELSEACT
SENDMSG 0 "你已经领取过新手装备了。"
[@UpgradeMethod]
#ACT
SENDMSG 0 "你可以通过杀怪、完成任务来获得经验升级。"
[@Exit]
#ACT
CLOSEDIALOG
```
**解释**:
- `[@main]` 是主界面,向玩家发送欢迎信息并提供菜单选项。
- `[@GetNewbieEquip]` 先检查玩家是否已有新手装备,若没有则发放,若有则提示已领取。
- `[@UpgradeMethod]` 告知玩家升级方法。
- `[@Exit]` 关闭对话窗口。
#### 2. 地图怪物刷新脚本(MapQuest_Def目录)
创建 `Map001.txt` 脚本,用于特定地图怪物刷新。
```plaintext
[@MapLoad]
#ACT
DELAYEXEC 600 ; 延迟10分钟(600秒)后执行
SPAWNMonster 半兽勇士 10 200 200 ; 在坐标(200, 200)附近刷10只半兽勇士
SPAWNMonster 多角虫 20 300 300 ; 在坐标(300, 300)附近刷20只多角虫
[@Timer1]
#ACT
SPAWNMonster 半兽勇士 5 200 200 ; 每10分钟在坐标(200, 200)附近刷5只半兽勇士
SPAWNMonster 多角虫 10 300 300 ; 每10分钟在坐标(300, 300)附近刷10只多角虫
DELAYEXEC 600 ; 再次延迟10分钟后执行
```
**解释**:
- `[@MapLoad]` 在地图加载时,延迟10分钟后在指定坐标刷新一定数量的怪物。
- `[@Timer1]` 每10分钟在指定坐标刷新怪物,然后再次设置延迟,实现循环刷新。
#### 3. 任务脚本(QuestDiary目录)
创建 `Quest001.txt` 脚本,设计一个简单杀怪任务。
```plaintext
[@AcceptQuest]
#ACT
SENDMSG 0 "你已接受杀10只多角虫的任务。"
[@CheckQuest]
#IF
CHECKKILLCOUNT 多角虫 >= 10
#ACT
SENDMSG 0 "你已完成任务,获得1000金币奖励。"
GIVEGOLD 1000
REMOVEQUEST ; 移除任务
#ELSEACT
SENDMSG 0 "你还需要杀" + (10 - [当前杀多角虫数量]) + "只多角虫才能完成任务。"
[@AbandonQuest]
#ACT
SENDMSG 0 "你已放弃任务。"
REMOVEQUEST
```
**解释**:
- `[@AcceptQuest]` 玩家接受任务时发送提示信息。
- `[@CheckQuest]` 检查玩家杀多角虫的数量,若达到10只则完成任务,给予奖励并移除任务;未达到则提示还需杀的数量。
- `[@AbandonQuest]` 玩家放弃任务时发送提示并移除任务。

